酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
酷站

html5

旗下栏目: html css xml html5 DW bootstrap Frontpage教程

自适应高度的textarea的方法

来源:互联网搜集 作者:秩名 人气: 发布时间:2019-09-09
本篇文章主要介绍了自适应高度的textarea的方法,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

方法

1. HTML结构:

 

<div id="container">
    <textarea rows="1"></textarea>
</div>
 

2. CSS代码:
 
 
* {
    padding: 0;
    margin: 0;
}

#container {
    width: 300px;
    padding: 10px;
    border: 1px solid #eee;
    box-sizing: border-box;
}

textarea {
    display: block;
    width: 100%;
    font-size: 20px;
    color: #000;
    line-height: 24px;
    outline: none;
    border: none;
    resize: none;
}
 

3. JS代码:
 
var textarea = document.querySelector('textarea')
       var inpnt = (function () {
           var baseHeight = null

           return function () {
               !baseHeight && (baseHeight = this.scrollHeight)
               this.rows = 1
               var rows = Math.ceil(this.scrollHeight / baseHeight) >= 3 ? 3 : Math.ceil(this
                   .scrollHeight / baseHeight)

               this.rows = rows
           }
       })()

       textarea.oninput = debounce(inpnt, 100)

       function debounce(func, delay) {
           var timer = null

           return function () {
               var _this = this
               var args = arguments

               timer && clearTimeout(timer)
               timer = setTimeout(function () {
                   func.apply(_this, args)
               }, delay)
           }
       }
 

原理
 
 
!baseHeight && (baseHeight = this.scrollHeight)
this.rows = 1
var rows = Math.ceil(this.scrollHeight / baseHeight) >= 3 ? 3 : Math.ceil(this
    .scrollHeight / baseHeight)


this.rows = rows
 

第一行 获取基准高度 缓存起

第二行 重点 将textarea的rows设置成1 这样就能得到当前textarea的scrollHeight

第三行 拿到了当前textarea的scrollHeight 就可以算出rows

第四行 设置textarea的rows

通过设置textarea的rows属性来改变textarea的高度。

原文链接:https://www.jb51.net/html5/692103.html

最新更新