<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文本框根据输入内容自适应高度</title>
<style type="text/css">
#textarea { font: 1.4em/1.8em Arial; overflow: hidden; width: 550px; height: 6em; padding:10px; }
</style>
<script src="autoTextarea.js"></script>
</head>
<body style="background:#FBFCFD url(http://goo.gl/kLsZX);">
<textarea id="textarea"></textarea>
<script>
var text = document.getElementById("textarea"),
tip = '想写点什么..';
autoTextarea(text);// 调用
text.value = tip;
text.onfocus = function () {
if (text.value === tip) text.value = '';
};
text.onblur = function () {
if (text.value === '') text.value = tip;
};
</script>
</body>
</html>
var autoTextarea = function (elem, extra, maxHeight) {
extra = extra || 20;
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.maxHeight = 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();
};
分享到:
相关推荐
这种主要在手机端应用较为广泛,当前PC也是可以用的了。 使用简单,也可以通过JS触发事件调整大小
对于`textarea`的高度自适应,我们可以监听用户的输入事件,当用户输入内容导致`textarea`溢出时,动态调整其高度以适应内容。以下是一个简单的实现方法: ```javascript $(document).ready(function() { $('...
压缩包文件“phoetry-textareaAutoHeight-20d2639”可能是这个功能的一个实现示例,它可能包含了实现textarea自适应高度的源代码。文件名中的"20d2639"可能是一个版本号或者Git提交ID,表示这是一个特定的代码版本。...
总的来说,创建Vue自定义组件`AutoHeightTextarea`可以方便地实现textarea根据内容自适应高度的效果,同时通过针对性的兼容性处理,可以确保在各种浏览器环境中都有良好的表现。在实际项目中,这样的组件可以大大...
在压缩包中的`定宽textarea自适应高度.html`文件,很可能是包含了一个演示这个功能的网页。打开这个文件,你可以看到一个实际运行的例子,其中可能包含了上述的JavaScript代码和相关CSS样式,以实现定宽`textarea`...
在本文中,我们将深入探讨如何使用jQuery来实现textarea自适应高度的功能。 首先,我们需要理解默认情况下,HTML中的textarea元素有一个固定的大小,当内容超出这个大小时,会出现滚动条。为了改善这种情况,我们...
textarea根据内容自适应高度 组件 注意:要监听input事件改变value值 使用: <autoheight_textarea value="{{value}}" placeholder="写个评论" bindinput="listenerinput"></autoheight_textarea>
使用以下接口调用插件:$('textarea').tah({ moreSpace:15, //输入框底部预留的空白, 默认15, 单位像素 maxHeight:600, //指定Textarea的最大高度, 默认600, 单位像素 animateDur:200 //调整高度时的动画过渡...
在探讨“jQuery——TextArea高度自适应”的主题时,我们深入解析了如何利用jQuery库实现文本区域(TextArea)的高度自动调整,以确保其高度能够根据输入的文本量动态变化,从而提供更好的用户体验。以下是对该主题的...
这就是"基于jQuery的让textarea自适应高度的插件"所解决的问题。 这个插件的核心功能在于,当用户在textarea中输入文字时,插件会实时监测textarea的高度,并自动调整以适应内容的长度。这样,textarea的高度将始终...
这个功能可以通过JavaScript来实现,正如标题“Textarea根据内容自适应高度”所描述的那样。本文将详细介绍如何使用JavaScript来控制`Textarea`的内容自适应高度,并提供相关代码示例。 首先,我们来看一下提供的...
《jQuery.autoTextarea文本框自适应输入高度代码详解》 在网页设计中,用户交互体验是至关重要的一个环节,其中文本输入框的优化是提升用户体验的关键因素之一。`jQuery.autoTextarea`是一个优秀的JavaScript插件,...
应用了这段CSS后,textarea元素将无法通过拖动边角来改变尺寸,其大小将固定为原始定义的宽度和高度。不过,这并不意味着你不能动态地改变 `textarea` 的尺寸。在JavaScript或者CSS响应式设计中,你仍然可以根据需要...
当用户输入的内容增多时,为了提供良好的用户体验,我们通常希望`TextArea`的高度能够自适应地扩展,以显示所有内容,而无需滚动条或者内容被裁剪。在标题“flex3 textArea 高度自适应”中提到的问题,就是如何实现...
之前给大家分享过用Javascript控制文本框textarea高度随内容自适应增长收缩,今天花了点时间换了种实现方法,总结一下 代码如下: jQuery.fn.extend({ autoHeight: function(){ return this.each(function(){ ...
为了解决这个问题,我们可以使用JavaScript或者jQuery来实现textarea的高度自适应功能,即根据textarea内的内容动态调整其高度,确保内容始终可见。 `textareaAutoHeight.jquery.js` 是一个基于jQuery的插件,它的...
默认情况下,Layui表格的行高是固定的,这可能导致在内容过多时表格无法自适应高度。 为了解决表格自适应高度的问题,我们可以采用以下方法: 1. **修改CSS样式**:在CSS文件或页面的部分添加自定义样式。这里的...
本文将探讨如何用`div`实现自适应高度的textarea,并在Angular中实现双向数据绑定。 首先,为什么不用传统的`<textarea>`?虽然`<textarea>`可以设置固定行数并允许用户输入多行文本,但是它并不方便实现动态高度...
用css控制textarea文本域的高度随内容的变化而变化,不出现滚动条....首先,原则上实现textarea自适应必须适用css,不能直接适用“width=100%”这样的写法,具体示例: 复制代码代码如下: <style> textarea {