textarea 自动撑开高度
</>复制代码
var textAreaArr = document.querySelectorAll(".textarea");
for (var i = 0; i < textAreaArr.length; i++) {
autoTextarea(textAreaArr[i]);
}
function autoTextarea(elem, extra, maxHeight) {
extra = extra || 0;
var isFirefox = !!document.getBoxObjectFor || "mozInnerScreenX" in window,
isOpera = !!window.opera && !!window.opera.toString().indexOf("Opera"),
addEvent = function (type, callback) {
elem.addEventListener ?
elem.addEventListener(type, callback, false) :
elem.attachEvent("on" + type, callback);
},
getStyle = elem.currentStyle ? function (name) {
var val = elem.currentStyle[name];
if (name === "height" && val.search(/px/i) !== 1) {
var rect = elem.getBoundingClientRect();
return rect.bottom - rect.top -
parseFloat(getStyle("paddingTop")) -
parseFloat(getStyle("paddingBottom")) + "px";
}
return val;
} : function (name) {
return getComputedStyle(elem, null)[name];
},
minHeight = parseFloat(getStyle("height"));
elem.style.resize = "none";
var change = function () {
var scrollTop, height,
padding = 0,
style = elem.style;
if (elem._length === elem.value.length) return;
elem._length = elem.value.length;
if (!isFirefox && !isOpera) {
padding = parseInt(getStyle("paddingTop")) + parseInt(getStyle("paddingBottom"));
}
scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
elem.style.height = minHeight + "px";
if (elem.scrollHeight > minHeight) {
if (maxHeight && elem.scrollHeight > maxHeight) {
height = maxHeight - padding;
style.overflowY = "auto";
} else {
height = elem.scrollHeight - padding;
style.overflowY = "hidden";
}
style.height = height + extra + "px";
scrollTop += parseInt(style.height) - elem.currHeight;
document.body.scrollTop = scrollTop;
document.documentElement.scrollTop = scrollTop;
elem.currHeight = parseInt(style.height);
}
};
addEvent("propertychange", change);
addEvent("input", change);
addEvent("focus", change);
change();
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/51860.html
摘要:将的高度和设置为仅能输入一行,这么做是为了用元素的表示其内容的高度。在模块内新建一个组件。输出属性将会在用户输入的数据变化时发出数据。让的高度始终等于的这里是直接操作,建议最好使用进行的修改。 showImg(https://segmentfault.com/img/bVbjsjA?w=223&h=233); >> 前往stackblitz编辑代码 核心思路 showImg(https...
textarea 自动撑开高度 var textAreaArr = document.querySelectorAll(.textarea); for (var i = 0; i < textAreaArr.length; i++) { autoTextarea(textAreaArr[i]); } function autoTextarea(elem, extra, maxHei...
摘要:高度自适应文本域高度随内容自动变化,不会出现滚动条,可以有多种方法,除了用动态设置它的高度值以外还有其它更简单的方法。还有一种方法,利用兄弟节点撑开父级高度,设置高度为即可。 textarea高度自适应 文本域高度随内容自动变化,不会出现滚动条,可以有多种方法,除了用js动态设置它的高度值以外还有其它更简单的方法。 可以用div标签模拟textarea,将div的contentedit...
摘要:第八集从零开始实现输入框组件本集定位组件是交互的一大利器他与用户的交流最为密切所以奠定了他在组件界的重要地位也算是一种如果可以的话本集也会一起说完毕竟是一个类型的一起学完收获会很大古人云组件不封输入框,一到面试就发慌一简介大家如果对这个 第八集: 从零开始实现(输入框input,textarea组件) 本集定位: input组件是交互的一大利器, 他与用户的交流最为密切, 所以奠...
阅读 2661·2021-09-27 13:36
阅读 2281·2019-08-29 18:47
阅读 2266·2019-08-29 15:21
阅读 1547·2019-08-29 11:14
阅读 2105·2019-08-28 18:29
阅读 1753·2019-08-28 18:04
阅读 688·2019-08-26 13:58
阅读 3343·2019-08-26 12:12