做一个能自适应高度的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中border-radius属性设定圆角的使用技巧
May 10 HTML / CSS
纯CSS绘制漂亮的圆形图案效果
May 07 HTML / CSS
利用CSS3把图片变成灰色模式的实例代码
Sep 06 HTML / CSS
css3新单位vw、vh的使用教程
Mar 23 HTML / CSS
CSS3实现渐变背景兼容问题
May 06 HTML / CSS
canvas学习笔记之2d画布基础的实现
Feb 21 HTML / CSS
HTML5的结构和语义(2):结构
Oct 17 HTML / CSS
HTML5 语音搜索只需一句代码
Jan 03 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
Jan 30 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
Mar 01 HTML / CSS
html5 video全屏播放/自动播放的实现示例
Aug 06 HTML / CSS
浅析HTML5页面元素及属性
Jan 20 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
2015/04/07 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
AngularJS中的表单简单入门
2016/07/28 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
2018/03/12 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
使用jQuery实现购物车
2020/10/29 jQuery
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Django配置文件代码说明
2019/12/04 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
python实现粒子群算法
2020/10/15 Python
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
2015年幼师工作总结
2015/04/28 职场文书
MySQL基础(二)
2021/04/05 MySQL
详解Python生成器和基于生成器的协程
2021/06/03 Python