直接先上代碼css
<div>
<pre></pre>
<textarea name="" id="" cols="30" rows="10"></textarea>
</div>
複製代碼
div{
position: relative;
width: 30%;
min-height: 100px;
padding-top: 15px; /*防止抖動*/
box-sizing: border-box;
}
textarea{
position: absolute;
width: 100%;
height: 100%;
resize: none;
left: 0;
top: 0;
overflow: hidden;
}
pre{
display: block;
visibility: hidden;
}
複製代碼
let text = document.querySelector('textarea')
let pre = document.querySelector('pre')
text.onkeyup = function(){
let value = this.value
pre.innerText = value
}
複製代碼
使用子絕父相讓textarea
相對於父元素div
定位,用戶輸入的內容,利用keyup事件,同步到pre
中,讓pre
的內容高度把div
撐開,使其自適應高度。html
pre標籤設置visibility: hidden;
,不可見,但繼續佔有位置。給div設置padding-top: 15px;box-sizing: border-box;
,目的是把pre標籤頂開距離,由於輸入同步到pre時,會改變其高度,會有抖動現象。前端