使用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基础(RGBa、text-shadow、box-shadow、border-radius)
Nov 13 HTML / CSS
css3 按钮样式简单可扩展创建
Mar 18 HTML / CSS
使用css3制作登录表单的步骤
Apr 07 HTML / CSS
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
Jul 21 HTML / CSS
CSS3中Transition动画属性用法详解
Jul 04 HTML / CSS
css3边框_动力节点Java学院整理
Jul 11 HTML / CSS
使用纯 CSS 创作一个脉动 loader效果的源码
Sep 28 HTML / CSS
HTML5学习笔记之History API
Feb 26 HTML / CSS
HTML5 表单验证失败的提示语问题
Jul 13 HTML / CSS
手机端用rem+scss做适配的详解
Nov 15 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
Sep 09 HTML / CSS
Html5基于canvas实现电子签名并生成PDF文档
Dec 07 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
第一个无线电台是由谁发明的
2021/03/01 无线电
通过对php一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP学习之整理字符串
2011/04/17 PHP
php array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
PHP查询快递信息的方法
2015/03/07 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
DOM精简教程
2006/10/03 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
当jquery ajax遇上401请求的解决方法
2016/05/19 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
Vue组件为什么data必须是一个函数
2020/06/11 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
用Python编写web API的教程
2015/04/30 Python
解决Python一行输出不显示的问题
2018/12/03 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
常见的软件开发流程有哪些
2015/11/14 面试题
关于学习的演讲稿
2014/05/10 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
2016年十一促销广告语
2016/01/28 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android