js实现textarea自适应高度
html结构:
<div class="container" id="container">
<div class="text-wrapper">
<pre></pre>
<textarea placeholder="请输入内容"></textarea>
</div>
</div>
原理:使用 pre(可以保留空格和换行)元素保存 textarea 的内容,使得父元素 div 的高度撑高,再设置 textarea 的高度为 100%即可
css样式:
*,
*:before,
*:after {
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
} body {
font-size: 14px;
font-family: '微软雅黑',"Helvetica Neue", Helvetica, Arial, sans-serif;
color: #333;
background-color: #fff;
line-height: 1.6;
} body, div, pre, textarea {
margin:;
padding:;
} .container {
width: 800px;
margin: 20px auto;
} .text-wrapper {
position: relative;
margin-bottom: 20px;
} .text-wrapper pre {
display: block;
visibility: hidden;
width: 100%;
min-height: 40px;
padding: 8px 10px;
font-size: 14px;
line-height: 1.6;
border: 1px solid #aed0ea;
white-space: pre-wrap;
word-break: break-all;
word-wrap: break-word;
} .text-wrapper textarea {
position: absolute;
top:;
left:;
display: inline-block;
width: 100%;
height: 100%;
box-sizing: border-box;
padding: 8px 10px;
font-size: 14px;
line-height: 1.6;
vertical-align: middle;
background-color: #fff;
border: 1px solid #aed0ea;
border-radius: 4px;
overflow: hidden;
white-space: pre-wrap;
word-break: break-all;
word-wrap: break-word;
resize: none;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-moz-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
} .text-wrapper textarea:focus {
border-color: #66afe9;
outline:;
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
js代码:
var laoq = (function(){
var addHandler = function(ele,type,fn){
if(ele.addEventListener){
ele.addEventListener(type,fn,false);
}else if(ele.attachEvent){
ele.attachEvent('on' + type,fn);
}else{
ele['on' + type] = fn;
}
};
var setTextareaAutoHeight = function(){
addHandler(document.getElementById('container'),'input',function(){
var event = event || window.event,
target = event.target || event.srcElement;
if(target.type.toLowerCase() !== 'textarea') return;
var preele = target.previousElementSibling;
preele && preele.tagName.toLowerCase() === 'pre' && target.parentElement.classList.contains('text-wrapper') && (preele.innerText = target.value);
});
};
return{
setTextareaAutoHeight:setTextareaAutoHeight
};
})();
调用方式:
window.onload = function(){
laoq.setTextareaAutoHeight();
};
js实现textarea自适应高度的更多相关文章
- textarea自适应高度,div模仿textarea可编辑实现自适应高度,placeholder使用图标
1.textarea自适应高度,placeholder使用图标 自适应高度,有很多种办法: 1)jq: $("textarea").on("input",fun ...
- div模拟textarea自适应高度
之前在公司做项目的时候,有这么一个需求,要我写一个评论框,可以随着评论的行数增加而自动扩大,最开始我想用textarea实现,但是后来尝试后发现textarea并不适合,textarea的高度不会随着 ...
- textarea自适应高度
最近做项目遇见了这个自适应高度的问题,也在网上找了些资料,大多选择用DIV模拟textarea,但是这样就有安全性的问题,因为你是可以直接将HTML代码输入进去的. 接下来介绍的这种办法是采用两个te ...
- js实现iframe自适应高度
转自:http://www.jb51.net/article/15780.htm 对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的! 不带边框的iframe因为能 ...
- 简单实现一个textarea自适应高度
textarea自适应的实现方法很多,原理其实比较简单:监听textarea的input或者键盘事件,获取元素的scrollHeight,重置textarea元素的高度. 预览地址:textarea ...
- Textarea自适应高度 JS实现,兼容IE6\7\8\9\10\11
<!DOCTYPE html> <html> <head> <title>autoresizing textarea</title> < ...
- jquery文本框textarea自适应高度
浏览器中默认的文本框是不能根据内容的增多变高,只能固定高度有滚动条,体验不是很好,找了很多方法兼容都不行,总算找到个兼容良好的方法: <body> <textarea id=&quo ...
- textarea 自适应高度
试了好多方法,包括百度了好多.一旦接口获取的内容,就不好用了.有时候就是脑袋转不过来,想了好久的方法居然那么简单,然后,脑洞大开,忽然想到还可以这样弄, 很简单,两句话 var textareaHei ...
- 使用div模拟textarea,实现文本输入框高度自适应(附:js控制textarea实现文本输入框高度自适应)
一.使用textarea标签进行多行文本的输入有很多限制,比如不能实现高度自适应,会出现难看的滚动条等问题. HTML5中添加了一个新属性contenteditable,该属性可以让input,tex ...
随机推荐
- iOS swift 带有attributeString的多行文本label
class AttributeStringGenerator { var attributeString: NSMutableAttributedString! var lineSpacing: CG ...
- Java中的“scanf()、cin()、input()"
最近在写一个Java程序时遇到一个问题,就是如何在Java里面输入数值,又叫做获取键盘输入值. 因为c语言里面有scanf(),C++里面有cin(),python里面有input().Java里面有 ...
- SQL Server查询数据库表字段类型
select b.name,a.name,c.name,a.xprec,a.xscalefrom syscolumns aleft outer join sysobjects b ON a.id=b ...
- Python语法速查: 2. 列表、元组、字典、集合操作
返回目录 (1)通用序列操作 “序列”表示索引为非负整数的有序对象集合,列表.元组.字符串都属于序列.区别在于:列表是可变的,而元组和字符串是不可变的.序列的通用操作他们都可以用. 操作或方法 简述 ...
- CK:User mode Bus Error(用户空间操作内核地址导致的异常)
关键词:VEC_ACCESS.coredump.LR.PC等. CK中存在一种VEC_ACCESS异常,可能原因是用户空间访问了内核空间,还有一种是内核访问不存在的总线地址. 下面简单构造VEC_AC ...
- 2-2 远程管理命令-网卡和IP地址的概念
02.查看或配置网卡信息 序号 命令 对应英文 作用 01 ifconfig configure a network interface 查看/配置计算机当前的网卡配置信息 02 ping ip地址 ...
- Ubuntu笔记本安装高级电源管理工具TLP
Ubuntu系统下的笔记本电脑电量总是下降的很快,尽管目前系统对电源管理的优化已经进步了不少,但还是需要一些工具来辅助. TLP是一款Linux下的高级电源管理工具,相信很多Linux用户会用到它. ...
- element-ui 中dialog居中
.el-dialog{ display: flex; flex-direction: column; margin:0 !important; ...
- vue中is的使用
:is作用 1.动态切换不同组件 <div id="app"> <button @click="changeComponent('component1' ...
- Linux下修改Mysql密码的三种方式
前言 有时我们会忘记Mysql的密码,或者想改一个密码,以下将对这两种情况修改密码的三种解决方法做个总结 本文都以用户为 root 为例 一.拥有原来的myql的root的密码 方法一: 在mysql ...