使用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旋转——彩色扇子兼容firefox浏览器
Jun 04 HTML / CSS
html5 canvas绘制放射性渐变色效果
Jan 04 HTML / CSS
HTML5安全介绍之内容安全策略(CSP)简介
Jul 10 HTML / CSS
使用canvas绘制贝塞尔曲线
Dec 17 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
Feb 19 HTML / CSS
通过HTML5 Canvas API绘制弧线和圆形的教程
Mar 14 HTML / CSS
HTML5轻松实现全屏视频背景的示例
Apr 23 HTML / CSS
如何通过 CSS 写出火焰效果
Mar 24 HTML / CSS
html实现弹窗的实例
Jun 09 HTML / CSS
css中有哪些方式可以隐藏页面元素及区别
Jun 16 HTML / CSS
css让页脚保持在底部位置的四种方案
Jul 23 HTML / CSS
css之clearfix的用法深入理解(必看篇)
May 21 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中的unset究竟会不会释放内存
2013/07/18 PHP
php抽象类用法实例分析
2015/07/07 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
node.js中的fs.renameSync方法使用说明
2014/12/16 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
Move.js入门
2017/02/08 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
VUE重点问题总结
2018/03/19 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
启动Atom并运行python文件的步骤
2018/11/09 Python
详解Python3中ceil()函数用法
2019/02/19 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
主题班会演讲稿
2014/05/22 职场文书
党的生日活动方案
2014/08/15 职场文书
共青团员自我评价范文
2014/09/14 职场文书
学生打架检讨书
2014/10/20 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
PYTHON使用Matplotlib去实现各种条形图的绘制
2022/03/22 Python
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫