首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Textarea自动高度

Textarea自动高度
EN

Stack Overflow用户
提问于 2013-07-21 12:19:16
回答 7查看 535.3K关注 0票数 225

我希望使文本区域的高度与其内文本的高度相等(并删除滚动条)。

HTML

代码语言:javascript
复制
<textarea id="note">SOME TEXT</textarea>

CSS

代码语言:javascript
复制
textarea#note {
    width:100%;
    direction:rtl;
    display:block;
    max-width:100%;
    line-height:1.5;
    padding:15px 15px 30px;
    border-radius:3px;
    border:1px solid #F7E98D;
    font:13px Tahoma, cursive;
    transition:box-shadow 0.5s ease;
    box-shadow:0 4px 6px rgba(0,0,0,0.1);
    font-smoothing:subpixel-antialiased;
    background:linear-gradient(#F9EFAF, #F7E98D);
    background:-o-linear-gradient(#F9EFAF, #F7E98D);
    background:-ms-linear-gradient(#F9EFAF, #F7E98D);
    background:-moz-linear-gradient(#F9EFAF, #F7E98D);
    background:-webkit-linear-gradient(#F9EFAF, #F7E98D);
}

JsFiddle:http://jsfiddle.net/Tw9Rj/

EN

回答 7

Stack Overflow用户

发布于 2014-07-10 12:23:52

这使用纯JavaScript代码。

代码语言:javascript
复制
function auto_grow(element) {
    element.style.height = "5px";
    element.style.height = (element.scrollHeight)+"px";
}
代码语言:javascript
复制
textarea {
    resize: none;
    overflow: hidden;
    min-height: 50px;
    max-height: 100px;
}
代码语言:javascript
复制
<textarea oninput="auto_grow(this)"></textarea>

票数 514
EN

Stack Overflow用户

发布于 2014-06-06 21:16:06

对于那些用角JS来完成这个任务的人,我使用了一个指令

HTML:

代码语言:javascript
复制
<textarea elastic ng-model="someProperty"></textarea>

JS:

代码语言:javascript
复制
.directive('elastic', [
    '$timeout',
    function($timeout) {
        return {
            restrict: 'A',
            link: function($scope, element) {
                $scope.initialHeight = $scope.initialHeight || element[0].style.height;
                var resize = function() {
                    element[0].style.height = $scope.initialHeight;
                    element[0].style.height = "" + element[0].scrollHeight + "px";
                };
                element.on("input change", resize);
                $timeout(resize, 0);
            }
        };
    }
]);

$timeout将在DOM加载后触发的事件排队,这是获得正确scrollHeight所必需的(否则将得到undefined)

票数 119
EN

Stack Overflow用户

发布于 2014-04-09 21:06:06

我用的是jQuery AutoSize。当我尝试使用弹性,它经常给我虚假的高度(非常高的文本区)。jQuery AutoSize工作得很好,没有遇到过这个问题。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17772260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档