使用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背景下的@font face规则
May 04 HTML / CSS
CSS3简单实现照片墙
Dec 12 HTML / CSS
CSS3的RGBA中关于整数和百分比值的转换
Aug 04 HTML / CSS
Css3圆角边框制作代码
Nov 18 HTML / CSS
6种非常炫酷的CSS3按钮边框动画特效
Mar 16 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
CSS3之2D与3D变换的实现方法
Jan 28 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 HTML / CSS
html5实现微信打飞机游戏
Mar 27 HTML / CSS
浅析移动设备HTML5页面布局
Dec 01 HTML / CSS
详解HTML5常用的语义化标签
Sep 27 HTML / CSS
CSS文本阴影 text-shadow 悬停效果详解
May 25 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
php intval的测试代码发现问题
2008/07/27 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
javascript function调用时的参数检测常用办法
2010/02/26 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
IE中图片的onload事件无效问题和解决方法
2014/06/06 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
原生js实现模拟滚动条
2015/06/15 Javascript
javascript控制台详解
2015/06/25 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
2015/08/03 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
2016/03/31 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
Python 动态变量名定义与调用方法
2020/02/09 Python
在pycharm中实现删除bookmark
2020/02/14 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
2014年卫生工作总结
2014/11/27 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL