使用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使用多列制作瀑布流
May 10 HTML / CSS
让IE6、IE7、IE8支持CSS3的脚本
Jul 20 HTML / CSS
一款利用css3的鼠标经过动画显示详情特效的实例教程
Dec 29 HTML / CSS
CSS3的常见transformation图形变化用法小结
May 13 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
Nov 01 HTML / CSS
CSS3实现红包抖动效果
Dec 23 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
Mar 21 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
Dec 14 HTML / CSS
HTML5实现桌面通知 提示功能
Oct 11 HTML / CSS
html5利用canvas实现颜色容差抠图功能
Dec 23 HTML / CSS
amazeui时间组件的实现示例
Aug 18 HTML / CSS
CSS3 制作精美的定价表
Apr 06 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
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
javascript 贪吃蛇实现代码
2008/11/22 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
解决Vue 项目打包后favicon无法正常显示的问题
2018/09/01 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
2020/05/09 Javascript
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
老海军美国官网:Old Navy
2016/09/05 全球购物
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
保护黄河倡议书
2014/05/16 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
民主生活会汇报材料
2014/12/15 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书
行政处罚告知书
2015/07/01 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书