做一个能自适应高度的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中transform变换模型的渲染
May 27 HTML / CSS
深入浅析css3 中display box使用方法
Nov 25 HTML / CSS
css3 pointer-events 介绍详解
Sep 18 HTML / CSS
HTML5中使用postMessage实现Ajax跨域请求的方法
Apr 19 HTML / CSS
HTML5 script元素async、defer异步加载使用介绍
Aug 23 HTML / CSS
阻止移动设备(手机、pad)浏览器双击放大网页的方法
Jun 03 HTML / CSS
html5使用canvas绘制太阳系效果
Dec 15 HTML / CSS
HTML5学习笔记之html5与传统html区别
Jan 06 HTML / CSS
html5超简单的localStorage实现记住密码的功能实现
Sep 07 HTML / CSS
HTML5 通过Vedio标签实现视频循环播放的示例代码
Aug 05 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
Aug 20 HTML / CSS
CSS实现fullpage.js全屏滚动效果的示例代码
Mar 24 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新手上路(十一)
2006/10/09 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
php使用Swoole实现毫秒级定时任务的方法
2020/09/04 PHP
Javascript 继承机制实例
2009/08/12 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
2017/08/04 jQuery
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
Python如何将函数值赋给变量
2020/04/28 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
旅游管理专业生自荐信范文
2014/01/02 职场文书
有创意的广告词
2014/03/18 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
个人工作能力自我评价
2015/03/05 职场文书
教师求职自荐信
2015/03/26 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
python删除csv文件的行列
2021/04/06 Python
Golang解析JSON对象
2022/04/30 Golang