element性能优化之实时计算textarea高度
el-input
中有个属性autosize
加上后,textarea
的高度会随着内容高度被撑开,而不是默认的那样会出现滚动条:
<el-input
type="textarea"
autosize
placeholder="请输入内容"
v-model="textarea">
</el-input>
- 不加 autosize时,内容撑了会出现滚动条
- 加了 autosize时,高度会随着内容撑开
原理
监听了 textarea的val的变化,通过实时创建一个内容跟原来textarea一样,但是隐藏的textarea元素,计算出该隐藏的textarea的高度,然后赋值给真正的textarea,这样就做了性能优化,减少了页面的重绘
核心代码如下:我加了一些自己的注解
export default function calcTextareaHeight(
targetElement,
minRows = 1,
maxRows = null
) {
debugger
if (!hiddenTextarea) {
hiddenTextarea = document.createElement('textarea'); // 创建一个隐藏的textarea元素
document.body.appendChild(hiddenTextarea)