내용 길이에 따라 크기를 조정할 텍스트 영역
상자에 텍스트를 입력하는 텍스트 영역이 필요합니다. 스크롤 바를 처리할 필요가 없도록 필요에 따라 길이가 늘어나고 텍스트를 삭제한 후 축소해야 합니다!저는 가벼운 폼을 가지고 있기 때문에 무툴즈나 jquery 루트를 가기 싫었습니다.
다음으로 설정하여 내용 높이를 확인할 수 있습니다.1px
그 다음에 그 책을 읽습니다.scrollHeight
속성:
function textAreaAdjust(element) {
element.style.height = "1px";
element.style.height = (25+element.scrollHeight)+"px";
}
<textarea onkeyup="textAreaAdjust(this)" style="overflow:hidden"></textarea>
파이어폭스 3, IE 7, 사파리, 오페라, 크롬에서 작동합니다.
시도해 볼 수도.contenteditable
정상으로 돌리다p
아니면div
. 그렇지 않습니다.textarea
스크립트 없이 자동으로 resize됩니다.
.divtext {
border: ridge 2px;
padding: 5px;
width: 20em;
min-height: 5em;
overflow: auto;
}
<div class="divtext" contentEditable>Hello World</div>
다음 기능을 사용합니다.
function adjustHeight(el){
el.style.height = (el.scrollHeight > el.clientHeight) ? (el.scrollHeight)+"px" : "60px";
}
다음 html 사용:
<textarea onkeyup="adjustHeight(this)"></textarea>
그리고 마지막으로 이 CSS를 사용합니다.
textarea {
min-height: 60px;
overflow-y: auto;
word-wrap:break-word
}
이 방법은 스크롤 바를 표시하여 높이를 조정할 필요가 있음을 감지하고, 스크롤 바가 텍스트 영역에 나타날 때마다 스크롤 바를 다시 숨기는 것과 마찬가지로 높이를 조정하는 것입니다.
jquery 솔루션이 구현되었으며 소스 코드는 github(https://github.com/jackmoore/autosize )에서 사용할 수 있습니다.
Alciende의 대답은 방금 사파리에서 어떤 이유로든 제게 적합하지는 않았지만, 약간의 수정을 거친 후에 그렇게 되었습니다.
function textAreaAdjust(o) {
o.style.height = "1px";
setTimeout(function() {
o.style.height = (o.scrollHeight)+"px";
}, 1);
}
이것이 누군가에게 도움이 되길 바랍니다.
너비를 결정하고 한 줄에 몇 자를 넣을 수 있는지 확인한 다음 키를 누를 때마다 다음과 같은 모양의 함수를 호출합니다.
function changeHeight()
{
var chars_per_row = 100;
var pixles_per_row = 16;
this.style.height = Math.round((this.value.length / chars_per_row) * pixles_per_row) + 'px';
}
코드를 테스트하지 않았습니다.
특히 자바스크립트에서는 텍스트의 너비를 가변적인 글꼴로 얻을 수 있는 방법이 없다고 생각합니다.
내가 생각할 수 있는 유일한 방법은 css에 의해 폭이 가변적으로 설정된 숨겨진 요소를 만들고 그 안에 텍스트를 넣는 것입니다.HTML, 해당 요소의 너비를 가져옵니다.따라서 텍스트 영역 자동 크기 조정 문제에 이 방법을 적용할 수 있습니다.
스판과 텍스트 영역을 사용하여 이를 달성할 수 있습니다.
텍스트가 변경될 때마다 텍스트 영역의 텍스트로 스팬을 업데이트해야 합니다.그런 다음 텍스트 영역의 CSS 너비와 높이를 span의 clientWidth와 client로 설정합니다.높이 속성.
예:
.textArea {
border: #a9a9a9 1px solid;
overflow: hidden;
width: expression( document.getElementById("spnHidden").clientWidth );
height: expression( document.getElementById("spnHidden").clientHeight );
}
언급URL : https://stackoverflow.com/questions/995168/textarea-to-resize-based-on-content-length
'programing' 카테고리의 다른 글
jQuery-UI의 자동 완성이 잘 표시되지 않음, z-index 문제 (0) | 2023.10.10 |
---|---|
mysql 레코드 생성 타임스탬프 자동 저장 (0) | 2023.10.10 |
HTMLCollection, NodeLists, 객체 배열 간의 차이 (0) | 2023.10.05 |
Jquery 배경색 변경 (0) | 2023.10.05 |
GraphQL ID를 고객의 문자열로 처리해야 합니까? (0) | 2023.10.05 |