textarea 자동 성장
인터넷에서 많은 해결 방안을 보았다. 예를 들어 동적으로 숨겨진div를 만들고 사용자가 입력할 때textarea의 내용을div에 연결하면div의 높이가 자동으로 벌어지기 때문에div의 높이를 동적으로 감지한 다음div의 높이를textarea에 복제할 수 있다.이 방법은 호환성이 비교적 좋고 비교적 온건한 방법이어야 하는데, 정말 너무 번거롭다
또 하나의 해결 방법은 텍스타리아의 scroll Height를 높이로 동적으로 복제하는 것이다.내가 채택한 것은 후자이다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var textarea = document.getElementById( 'textarea');textarea.style.overflow = 'hidden';var height = parseInt( window.getComputedStyle(textarea).height);var width = parseInt( window.getComputedStyle(textarea).width);
var autoHeight = function() {if( this.scrollHeight <= height || this.value == '') {this.style.height=height + ' textarea ;px';return;}this.style.height = this.scrollHeight + 'px';}textarea.oninput = autoHeight;
这个方法就是通过监听textarea的oninput 来实现,也可以监听keyup,keydown;但是如果使用keyup或者keydown来监听的话会存在一个问题,那就是如果textarea有复制或者剪切操作,keyup,keydown不会立即响应内容的变化,并且也不能响应鼠标右键粘贴。
最后再象征性地增加兼容
그러나 슬픈 것은 이런 방식은 이동단에 적용되지 않고 이동단의 모든 브라우저는 테스트가 무효이다 또 다른 해결 방법은textarea를 사용하지 않고 일반적인div로textarea를 시뮬레이션하는 것이다. 왜냐하면div 자체의 높이가 자동으로 증가하기 때문에 모든 것은 다른 문제를 걱정할 필요가 없다.실현 방식은div에 속성 contentEditable=true 을 설정하는 것이다. 이렇게 하면div는 편집 가능한 것으로 변한다.그러나 이런 방식은 일부 Firefox 위에서div 외층에 빈 테두리가 생겨서div의 본질이 의심할 여지없이 드러난다.해결 방법은 css 설정outline:0 none |
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.