웹 브라우저에서도 세로 쓰기의 아름다운 일본어 입력을.
세 줄 요약
contenteditable
및 writing-mode
에서 구현 구현 방법
contenteditable
contenteditable
는, 페이지 이용자에게 DOM의 편집을 허가할 수 있는 속성입니다. 기본 상태는 false
를 사용합니다. 또, 미지정의 경우는 부모 요소의 값을 상속하므로, 부모 요소로 contenteditable를 유효하게 했을 경우는 자식 요소의 편집도 아울러 가능하게 됩니다.html
<div contenteditable="true">
<p>編集が可能な要素</p>
<p contenteditable="false">編集が不可能な要素</p>
</div>
이 설명만으로 스타일을 유지한 채로 텍스트의 편집이 가능하게 됩니다.
writing-mode
css
writing-mode
는 텍스트 행(수직 또는 평행)과 텍스트의 흐름 방향(왼쪽 방향 또는 오른쪽 방향)을 선택할 때 사용하는 속성입니다. 디폴트 상태에서는 horizontal-tb
(텍스트행은 왼쪽에서 오른쪽 방향의 수평, 플로우 방향은 위로부터 아래)를 취합니다. 이번에는 오른쪽 위에서 왼쪽 아래로 나아가도록 하고 싶었기 때문에 vertical-rl
를 지정했습니다.css
.vertical-text {
writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
-ms-writing-mode: vertical-rl;}
이러한
contenteditable
와 writing-mode
를 지정해, 최소한의 스타일을 정의하는 것만으로도, 이렇게 세로 기입 입력을 실현할 수가 있습니다. 매우 간단합니다.See the Pen Vertical Editor_alpha by oreo ( @oreo )
on CodePen .
구현(기타)
- 텍스트 스타일
- 다음과 같이 지정했습니다.
.vertical-text {
-webkit-writing-mode: vertical-rl;
-ms-writing-mode: tb-rl;
writing-mode: vertical-rl;
font-size: 20px;
font-family: "Noto Serif JP", serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-font-feature-settings: "palt";
font-feature-settings: "palt";
color: #2c3e50;
line-height: 2em;
text-indent: 1em;
}
- 폰트
- 이번에는 Google Fonts의 Noto Serif KR에 신세를 졌습니다.
- 입력 형식
- 모처럼
contenteditable
를 이용해 구현했다는 배경도 있어, 표제나 리스트도 출력하기 위해, Markdown에의 대응을 실시했습니다. - 이번은 리치 텍스트 라이브러리 「 ProseMirror 」의 Vue.js용 래퍼 「 tiptap 」에 신세를 졌습니다.
- 모처럼
이 단계를 거쳐 이번 세로 쓰기 편집기의 프로토 타입이 완성되었습니다.
아티팩트
htps : // 0. 기주 b. 이오 ※Chrome 추천입니다.
결론
"세로 쓰기"및 "일본어"및 "Web"의 입력 방식은 매우 틈새이지만 따라서 선행 사례가 매우 적습니다만, 구현해 보면 몇 줄 정도의 기술로 간단하게 실현 할 수 있어요. 한편으로 커서 키로의 조작이 곤란한 일이나, 브라우저에서는 세세한 문자조 대응이 어려운 것이 과제로서 들 수 있습니다. 앞으로도 계속 조사나 개량을 진행하면서, 세로 쓰기 입력을 일상적으로 사용할 수 있도록 활용 방법이나 보다 좋은 실장 패턴을 찾아내면 좋겠습니다.
참고 링크
Reference
이 문제에 관하여(웹 브라우저에서도 세로 쓰기의 아름다운 일본어 입력을.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/oreo/items/da1c0f4ac946c48a8f49텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)