做一个能自适应高度的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 相关文章推荐
通过css3动画和opacity透明度实现呼吸灯效果
Aug 09 HTML / CSS
css3.0 图形构成实例练习二
Mar 19 HTML / CSS
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
Mar 31 HTML / CSS
详解CSS3的图层阴影和文字阴影效果使用
Jun 09 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
Mar 25 HTML / CSS
HTML5的语法变化介绍
Aug 13 HTML / CSS
极简的HTML5模版
Jul 09 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
Mar 25 HTML / CSS
html5 div布局与table布局详解
Nov 16 HTML / CSS
HTML5视频播放插件 video.js介绍
Sep 29 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 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
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
2006/11/18 PHP
PHP多线程编程之管道通信实例分析
2015/03/07 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
使用jquery局部刷新(jquery.load)从数据库取出数据
2014/01/22 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
2014/09/01 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
简单的三步vuex入门
2018/05/20 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
深入理解Python 代码优化详解
2014/10/27 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
python中异常捕获方法详解
2017/03/03 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
英国工具中心:UK Tool Centre
2017/07/10 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
应届大学生求职的自我评价
2013/11/17 职场文书
《问银河》教学反思
2014/02/19 职场文书
班级年度安全计划书
2014/05/01 职场文书
学雷锋感言
2015/08/03 职场文书
学校教师培训工作总结
2015/10/14 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
python 实现的截屏工具
2021/05/08 Python
python 网络编程要点总结
2021/06/18 Python
python blinker 信号库
2022/05/04 Python