做一个能自适应高度的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 中实现炫酷的loading效果
Apr 26 HTML / CSS
css3选择器基本介绍
Dec 15 HTML / CSS
基于HTML5 Canvas 实现弹出框效果
Jun 05 HTML / CSS
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
Jun 03 HTML / CSS
HTML5 微格式和相关的属性名称
Feb 10 HTML / CSS
HTML5使用drawImage()方法绘制图像
Jun 23 HTML / CSS
HTML5的新特性(1)
Mar 03 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
localStorage、sessionStorage使用总结
Nov 17 HTML / CSS
Html5导航栏吸顶方案原理与对比实现
Jun 10 HTML / CSS
CSS中float高度塌陷问题的四种解决方案
Apr 18 HTML / CSS
纯CSS打字动画的实现示例
Aug 05 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
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
node跨域请求方法小结
2017/08/25 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python温度转换实例分析
2018/01/17 Python
python图书管理系统
2020/04/05 Python
Python实现查找最小的k个数示例【两种解法】
2019/01/08 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
Python生成器generator原理及用法解析
2020/07/20 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
2020/09/21 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
回门宴父母答谢词
2014/01/26 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
三项教育活动实施方案
2014/03/30 职场文书
经济担保书范文
2014/04/02 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
小学英语课后反思
2014/04/26 职场文书
少先队活动总结
2014/08/29 职场文书
建筑工地文明标语
2014/10/09 职场文书
百年校庆感言
2015/08/01 职场文书
课程设计感想范文
2015/08/11 职场文书