`
wang371134086
  • 浏览: 128440 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

textarea自适应高度

阅读更多

 

<!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();
 
};
 
 
分享到:
评论

相关推荐

    JS控制TextArea自适应高度,适用于IE、Chrome、Safari等浏览器

    这种主要在手机端应用较为广泛,当前PC也是可以用的了。 使用简单,也可以通过JS触发事件调整大小

    textarea自适应高度标签,去除难看的滚动条

    对于`textarea`的高度自适应,我们可以监听用户的输入事件,当用户输入内容导致`textarea`溢出时,动态调整其高度以适应内容。以下是一个简单的实现方法: ```javascript $(document).ready(function() { $('...

    textarea 输入框自适应高度

    压缩包文件“phoetry-textareaAutoHeight-20d2639”可能是这个功能的一个实现示例,它可能包含了实现textarea自适应高度的源代码。文件名中的"20d2639"可能是一个版本号或者Git提交ID,表示这是一个特定的代码版本。...

    Vue下textarea文本框根据内容自适应改变高度

    总的来说,创建Vue自定义组件`AutoHeightTextarea`可以方便地实现textarea根据内容自适应高度的效果,同时通过针对性的兼容性处理,可以确保在各种浏览器环境中都有良好的表现。在实际项目中,这样的组件可以大大...

    定宽的textarea根据内容自动调整高度

    在压缩包中的`定宽textarea自适应高度.html`文件,很可能是包含了一个演示这个功能的网页。打开这个文件,你可以看到一个实际运行的例子,其中可能包含了上述的JavaScript代码和相关CSS样式,以实现定宽`textarea`...

    jquery实现文本框textarea自适应高度

    在本文中,我们将深入探讨如何使用jQuery来实现textarea自适应高度的功能。 首先,我们需要理解默认情况下,HTML中的textarea元素有一个固定的大小,当内容超出这个大小时,会出现滚动条。为了改善这种情况,我们...

    微信小程序 内容自适应textarea表单组件(autoheight_textarea)

    textarea根据内容自适应高度 组件 注意:要监听input事件改变value值 使用: &lt;autoheight_textarea value="{{value}}" placeholder="写个评论" bindinput="listenerinput"&gt;&lt;/autoheight_textarea&gt;

    textarea自适应高度插件textareaAutoHeight.zip

    使用以下接口调用插件:$('textarea').tah({ moreSpace:15, //输入框底部预留的空白, 默认15, 单位像素 maxHeight:600, //指定Textarea的最大高度, 默认600, 单位像素 animateDur:200 //调整高度时的动画过渡...

    jquery----TextArea高度自适应

    在探讨“jQuery——TextArea高度自适应”的主题时,我们深入解析了如何利用jQuery库实现文本区域(TextArea)的高度自动调整,以确保其高度能够根据输入的文本量动态变化,从而提供更好的用户体验。以下是对该主题的...

    基于jquery的让textarea自适应高度的插件

    这就是"基于jQuery的让textarea自适应高度的插件"所解决的问题。 这个插件的核心功能在于,当用户在textarea中输入文字时,插件会实时监测textarea的高度,并自动调整以适应内容的长度。这样,textarea的高度将始终...

    Textarea根据内容自适应高度

    这个功能可以通过JavaScript来实现,正如标题“Textarea根据内容自适应高度”所描述的那样。本文将详细介绍如何使用JavaScript来控制`Textarea`的内容自适应高度,并提供相关代码示例。 首先,我们来看一下提供的...

    jQuery.autoTextarea文本框自适应输入高度代码.rar

    《jQuery.autoTextarea文本框自适应输入高度代码详解》 在网页设计中,用户交互体验是至关重要的一个环节,其中文本输入框的优化是提升用户体验的关键因素之一。`jQuery.autoTextarea`是一个优秀的JavaScript插件,...

    固定textarea文本域尺寸

    应用了这段CSS后,textarea元素将无法通过拖动边角来改变尺寸,其大小将固定为原始定义的宽度和高度。不过,这并不意味着你不能动态地改变 `textarea` 的尺寸。在JavaScript或者CSS响应式设计中,你仍然可以根据需要...

    flex3 textArea 高度自适应

    当用户输入的内容增多时,为了提供良好的用户体验,我们通常希望`TextArea`的高度能够自适应地扩展,以显示所有内容,而无需滚动条或者内容被裁剪。在标题“flex3 textArea 高度自适应”中提到的问题,就是如何实现...

    解决Layui 表格自适应高度的问题

    默认情况下,Layui表格的行高是固定的,这可能导致在内容过多时表格无法自适应高度。 为了解决表格自适应高度的问题,我们可以采用以下方法: 1. **修改CSS样式**:在CSS文件或页面的部分添加自定义样式。这里的...

    jquery实现textarea 高度自适应

    之前给大家分享过用Javascript控制文本框textarea高度随内容自适应增长收缩,今天花了点时间换了种实现方法,总结一下 代码如下: jQuery.fn.extend({  autoHeight: function(){  return this.each(function(){  ...

    textarea高度自适应js代码

    为了解决这个问题,我们可以使用JavaScript或者jQuery来实现textarea的高度自适应功能,即根据textarea内的内容动态调整其高度,确保内容始终可见。 `textareaAutoHeight.jquery.js` 是一个基于jQuery的插件,它的...

    div实现自适应高度的textarea实现angular双向绑定

    本文将探讨如何用`div`实现自适应高度的textarea,并在Angular中实现双向数据绑定。 首先,为什么不用传统的`&lt;textarea&gt;`?虽然`&lt;textarea&gt;`可以设置固定行数并允许用户输入多行文本,但是它并不方便实现动态高度...

    css textarea 高度自适应,无滚动条

    用css控制textarea文本域的高度随内容的变化而变化,不出现滚动条....首先,原则上实现textarea自适应必须适用css,不能直接适用“width=100%”这样的写法,具体示例: 复制代码代码如下: &lt;style&gt; textarea {

Global site tag (gtag.js) - Google Analytics