使用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 background-clip,background-origin和border-image教程
Jan 27 HTML / CSS
CSS3实现多重边框的方法总结
May 31 HTML / CSS
css3实现元素环绕中心点布局的方法示例
Jan 15 HTML / CSS
html5+css3之制作header实例与更新
Dec 21 HTML / CSS
详解使用HTML5的classList属性操作CSS类
Oct 13 HTML / CSS
HTML5 File API改善网页上传功能
Aug 19 HTML / CSS
HTML5 canvas画图并保存成图片的jcanvas插件
Jan 17 HTML / CSS
深入浅析HTML5中的SVG
Nov 27 HTML / CSS
H5 canvas实现贪吃蛇小游戏
Jul 28 HTML / CSS
html5 figure和figcaption的使用方法
Sep 10 HTML / CSS
html5使用window.postMessage进行跨域实现数据交互的一次实战
Feb 24 HTML / CSS
CSS作用域(样式分割)的使用汇总
Nov 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
PHP中cookies使用指南
2007/03/16 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
PHP实现仿Google分页效果的分页函数
2015/07/29 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
5个最佳的Javascript日期处理类库分享
2012/04/15 Javascript
浅谈页面装载js及性能分析方法
2014/12/09 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
nodejs对项目下所有空文件夹创建gitkeep的方法
2019/08/02 NodeJs
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
python映射列表实例分析
2015/01/26 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python线程池如何使用
2020/05/28 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
python Selenium 库的使用技巧
2020/10/16 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
优秀班主任申报材料
2014/12/16 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
学校推普周活动总结
2015/05/07 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
会计主管竞聘书
2015/09/15 职场文书
安全责任协议书范本
2016/03/23 职场文书
pytorch显存一直变大的解决方案
2021/04/08 Python