휠을 재발 명하려면 바퀴를 사용하는 도로를 만들어야합니다. 이 경우 태그에서 언급 한 것처럼 텍스트 영역에서 작업 할 수 없습니다. 대신 편집기의 렌더링은 모두 사용자의 것입니다. 접근 방식의
하나는 다음과 같습니다
- 텍스트를 입력 할 영역에 대한
<div>
컨테이너를 만듭니다.
- 또 다른
<div>
을 첫 번째 내부에 생성하십시오. 이것은 우리 오버레이가 될 것입니다. 낮은 z-index
인지 확인하십시오. z-index: 1
이라고 가정 해 보겠습니다.
- 첫 번째 컨테이너 아래에 세 번째
<div>
컨테이너를 만듭니다. 이것은 실제 텍스트 편집기입니다. 투명도가 background
이고 그 이상이 z-index
이어야합니다.
<div>
을 용기 # 2 안에 넣으십시오. 그것은 우리의 행 형광펜이 될 것입니다.
편집기의 모든 행에 대해 문자로 <span>
으로 자체 <div>
을 렌더링해야합니다.네, 커스텀 코드가 많습니다 : 사용자가 Enter 키를 눌러 새 라인을 시작하는 등의 새로운 기능을 새로 작성해야합니다. <div>
.
또한 이러한 row-div의 높이가 특정 값 (예 : )으로 고정되어 있는지 확인해야합니다. 값 및 계산식 뒤에 계산식을 지정할 수 있습니다. 높이, 어쩌면 사용자 선호도 또는 글꼴 크기). 예를 들어 사용자가 단어 줄 바꿈을 사용할 수 있도록 설정 한 경우와 같이 자랄 수 있습니다.
모든 작업이 완료되면 진짜 마법이 시작될 수 있습니다. 세 줄짜리 문서가로드되었다고 가정 해 봅시다. 그것은 다음과 같이 표시됩니다
<div id="textContainer">
<div id="overlay" style="z-index: 1">
<div id="highlighter" style="background: yellow; display: block;">
</div>
</div>
<div id="textEditor" style="background: transparent; z-index: 100;">
<div>
<span>Line 1</span>
</div>
<div>
<span>Line 2</span>
</div>
<div>
<span>Line 2</span>
</div>
</div>
</div>
이제 화면에
textContainer
의 정확한 위치와 폭을 결정할 수 있습니다 : 쉽게 (그리고 약간의 성능 오버 헤드) 다른 화면/창 크기를 처리하는 데 필요한입니다.
사용자가 특정 행에 초점을 맞추고 때 행 (<div>
)에 초점을 맞춘 사용자의 현재 top
및 height
값을 잡고 같도록 <div id="highlighter">
위치와 높이를 설정하는 몇 가지 자바 스크립트를 실행해야합니다.
어떻게 당신은'input' 또는'textarea'없이 사용자로부터 입력을 할 계획입니까? –