做一个能自适应高度的textarea的示例代码


Posted in HTML / CSS onSeptember 06, 2019

方法

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的高度。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
HTML5 CSS3给网站设计带来出色效果
Jul 16 HTML / CSS
浅谈css3中的前缀
Jul 20 HTML / CSS
html5/css3响应式页面开发总结
Oct 16 HTML / CSS
HTML5 新事件 小结
Jul 16 HTML / CSS
使用CSS实现弹性视频html5案例实践
Dec 26 HTML / CSS
HTML5 video 事件应用示例
Sep 11 HTML / CSS
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
Jul 24 HTML / CSS
HTML5中的拖放实现详解
Aug 23 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
Aug 24 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
Jun 03 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
Nov 22 HTML / CSS
使用HTML5加载音频和视频的实现代码
Nov 30 HTML / CSS
3种方式实现瀑布流布局小结
Sep 05 #HTML / CSS
Html5 页面适配iPhoneX(就是那么简单)
Sep 05 #HTML / CSS
html5 外链式实现加减乘除的代码
Sep 04 #HTML / CSS
three.js模拟实现太阳系行星体系功能
Sep 03 #HTML / CSS
HTML5 3D书本翻页动画的实现示例
Aug 28 #HTML / CSS
详解canvas绘制网络字体几种方法
Aug 27 #HTML / CSS
前端实现打印图像功能
Aug 27 #HTML / CSS
You might like
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
PHP实现AES256加密算法实例
2014/09/22 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
javascript 对象的定义方法
2007/01/10 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
2014/11/17 Javascript
微信小程序 前端源码逻辑和工作流详解
2016/10/08 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
基于Python代码编辑器的选用(详解)
2017/09/13 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Django REST framework视图的用法
2019/01/16 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
Python while循环使用else语句代码实例
2020/02/07 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
python实现超级马里奥
2020/03/18 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
英国买鞋网站:Charles Clinkard
2019/11/14 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
应届生自我鉴定
2013/12/11 职场文书
优秀语文教师事迹
2014/05/18 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
MySQL去除密码登录告警的方法
2022/04/20 MySQL