直接先上代码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时,会改变其高度,会有抖动现象。前端