使用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弹性布局内容对齐(justify-content)属性使用详解
Jul 31 HTML / CSS
使用css3和jquery实现可伸缩搜索框
Feb 12 HTML / CSS
通过CSS3的object-fit来调整图片适配尺寸的技巧简介
Feb 27 HTML / CSS
CSS3中设置3D变形的transform-style属性详解
May 23 HTML / CSS
利用css3画个同心圆示例代码
Jul 03 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
Jan 31 HTML / CSS
详解HTML5中ol标签的用法
Sep 08 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
Jun 01 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
Jan 07 HTML / CSS
H5 video poster属性设置视频封面的方法
May 25 HTML / CSS
css3 选择器
May 11 HTML / CSS
css样式important规则的正确使用方式
Jun 10 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传输数据的代码
2007/11/13 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
javascript中的隐式调用
2018/02/10 Javascript
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
vue input输入框关键字筛选检索列表数据展示
2020/10/26 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
python发送邮件实例分享
2017/07/28 Python
python数据结构之链表详解
2017/09/12 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
python字符串查找函数的用法详解
2019/07/08 Python
python之生产者消费者模型实现详解
2019/07/27 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
linux面试题参考答案(10)
2013/11/04 面试题
英语感谢信范文
2015/01/20 职场文书
创业计划书之干洗店
2019/09/10 职场文书
python 下载文件的几种方式分享
2021/04/07 Python