使用HTML5中的contentEditable来将多行文本自动增高


Posted in HTML / CSS onMarch 01, 2016

contentEditable是由微软开发、被其他浏览器反编译并投入应用的一个全局属性。该属性的主要功能是允许用户编辑元素中的内容,所以该元素必须是可以获得鼠标焦点的元素,而且在点击鼠标后要向用户提供一个插入符号,提示用户该元素中的内容允许编辑。contentEditable属性是一个布尔值属性,可以被指定为true或false。

除此之外,该属性还有个隐藏的inherit(继承)状态,属性为true时,元素被指定为允许编辑;属性为false时,元素被指定为不允许编辑;未指定true或false时,则由inherit状态来决定,如果元素的父元素是可编辑的,则该元素就是可编辑的。

另外,除了contentEditable属性外,元素还具有一个isContentEditable属性,当元素可编辑时,该属性为true;当元素不可编辑时,该属性为false。
下面给出了一个使用contentEditable属性的示例,当列表元素被加上contentEditable属性后,该元素就变成可编辑的了,读者可自行在浏览器中对该示例进行试验。

XML/HTML Code复制内容到剪贴板
  1. <!DOCTYPE html>    
  2. <head>    
  3. <meta charset="UTF-8">    
  4. <title>conentEditalbe属性示例</title>    
  5. </head>    
  6. <h2>可编辑列表</h2>    
  7. <ul contentEditable="true">    
  8. <li>列表元素1</li>    
  9. <li>列表元素2</li>    
  10. <li>列表元素3</li>    
  11. </ul>   

这段代码运行后的结果如图:
使用HTML5中的contentEditable来将多行文本自动增高

行文本自动增高

谈到多行文本框,大家立刻就会想到使用textarea,使用textarea着实方便,但就是有一点不太好,不能自动增高,只能指定相应的列和行的字数或者直接css给高宽。

自动增高在某些时候还是需要的,比如类似发微博的输入框,它就是一个典型,需要这样的需求:文本框有个默认高度,输入文字超出这个高度后会自动增高,还要有一个最高的限度,超过这个限度以后就会出现垂直滚动条。

如果使用textarea来完成这个需求,还需要配合js来监听文本高度的变化来动态改变文本框的高度,这样就很不方便了,尤其是在移动端的时候就不科学了,这个时候就可以用上属性contenteditable了。

如:

XML/HTML Code复制内容到剪贴板
  1. <div contenteditable="true" class="box" id="box" >  
  2.                
  3. </div>  
  4. <style>  
  5. .box{width:200px;max-height:100px;border:1px solid #ccc;overflow-y:auto;overflow-x:hidden;}   
  6. </style>  

只要指定contenteditable属性值为true,div就变成可以编辑的了,并且会随着内容增加自动增高,然后我们给div一个最大高度,就可以实现上面所说的需求。

HTML / CSS 相关文章推荐
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
Aug 08 HTML / CSS
CSS3中线性颜色渐变的一些实现方法
Jul 14 HTML / CSS
CSS3中的opacity属性使用教程
Aug 19 HTML / CSS
css3新单位vw、vh的使用教程
Mar 23 HTML / CSS
你可能不熟练的十个前端HTML5经典面试题
Jul 03 HTML / CSS
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
May 28 HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
Jan 09 HTML / CSS
HTML5地理定位实例
Oct 15 HTML / CSS
实例讲解使用SVG制作loading加载动画的方法
Apr 05 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
Mar 19 HTML / CSS
H5最强接口之canvas实现动态图形功能
May 31 HTML / CSS
html如何对span设置宽度
Oct 30 HTML / CSS
解析HTML5中的新功能本地存储localStorage
Mar 01 #HTML / CSS
基于HTML5的齿轮动画特效
Feb 29 #HTML / CSS
HTML5中meta属性的使用方法
Feb 29 #HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
Feb 29 #HTML / CSS
HTML5实现动画效果的方式汇总
Feb 29 #HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
Feb 28 #HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
Feb 28 #HTML / CSS
You might like
AM/FM收音机的安装与调试
2021/03/02 无线电
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
thinkPHP框架通过Redis实现增删改查操作的方法详解
2019/05/13 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
js 数值转换为3位逗号分隔的示例代码
2014/02/19 Javascript
C++中的string类的用法小结
2015/08/07 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
2020/11/09 jQuery
javascript实现点击产生随机图形
2021/01/25 Javascript
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
python3 配置logging日志类的操作
2020/04/08 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
python性能测试工具locust的使用
2020/12/28 Python
地理教师岗位职责
2014/03/16 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
毕业论文致谢范文
2015/05/14 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
在 Python 中利用 Pool 进行多线程
2022/04/24 Python