做一个能自适应高度的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 相关文章推荐
CSS伪类与CSS伪元素的区别及由来具体说明
Dec 07 HTML / CSS
css3简单练习实现遨游浏览器logo的绘制
Jan 30 HTML / CSS
HTML中fieldset标签概述及使用方法
Feb 01 HTML / CSS
使用html5 canvas创建太空游戏的示例
May 08 HTML / CSS
HTML5在canvas中绘制复杂形状附效果截图
Jun 23 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 HTML / CSS
HTML5 Canvas基本线条绘制的实例教程
Mar 17 HTML / CSS
Canvas实现保存图片到本地的示例代码
Jun 28 HTML / CSS
5分钟实现Canvas鼠标跟随动画背景
Nov 18 HTML / CSS
Html5之webcoekt播放JPEG图片流
Sep 22 HTML / CSS
详解CSS故障艺术
May 25 HTML / CSS
CSS 左边固定宽右边自适应的6种方法
May 15 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php 无极分类(递归)实现代码
2010/01/05 PHP
php echo()和print()、require()和include()函数区别说明
2010/03/27 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP echo()函数讲解
2019/02/15 PHP
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
2010/03/15 Javascript
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery插件jFade实现鼠标经过的图片高亮其它变暗
2015/03/14 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
在Vue中使用antv的示例代码
2020/06/29 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python单线程实现多个定时器示例
2014/03/30 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python opencv对图像进行旋转且不裁剪图片的实现方法
2019/07/09 Python
利用python实现AR教程
2019/11/20 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
CSS3属性background-size使用指南
2014/12/09 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
H5混合开发app如何升级的方法
2018/01/10 HTML / CSS
小学模范班主任事迹材料
2014/05/13 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
Fluentd搭建日志收集服务
2022/09/23 Servers