做一个能自适应高度的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实现字体颜色渐变的实现
Mar 09 HTML / CSS
支持IE8的纯css3开发的响应式设计动画菜单教程
Nov 05 HTML / CSS
CSS中的字体大小设置属性总结
May 24 HTML / CSS
使用CSS3来代替JS实现交互
Aug 10 HTML / CSS
css3实现动画的三种方式
Aug 24 HTML / CSS
HTML5 MiranaVideo播放器 (代码开源)
Jun 11 HTML / CSS
HTML5 中新的全局属性(整理)
Jul 31 HTML / CSS
简单介绍HTML5中的文件导入
May 08 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
Dec 07 HTML / CSS
css3中transform属性实现的4种功能
Aug 07 HTML / CSS
CSS布局之浮动(float)和定位(position)属性的区别
Sep 25 HTML / CSS
使用CSS实现小三角边框原理解析
Nov 07 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安全配置详细说明
2011/09/26 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
JQuery 实现的页面滚动时浮动窗口控件
2009/07/10 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
2013/08/05 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
js实现3D旋转相册
2020/08/02 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
学习python的几条建议分享
2013/02/10 Python
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
国际花店:Pickup Flowers
2020/04/10 全球购物
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
C#面试常见问题
2013/02/25 面试题
高中自我评价分享
2013/12/05 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
怎样写离婚协议书
2015/01/26 职场文书
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
python超详细实现完整学生成绩管理系统
2022/03/17 Python
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js