Moh*_*eri 146 html javascript css
我想让textarea的高度等于其中文本的高度(并删除滚动条)
HTML
<textarea id="note">SOME TEXT</textarea>
Run Code Online (Sandbox Code Playgroud)
CSS
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);
}
Run Code Online (Sandbox Code Playgroud)
JsFiddle:http://jsfiddle.net/Tw9Rj/
Mou*_*wi7 300
这使用纯JavaScript代码.
function auto_grow(element) {
element.style.height = "5px";
element.style.height = (element.scrollHeight)+"px";
}Run Code Online (Sandbox Code Playgroud)
textarea {
resize: none;
overflow: hidden;
min-height: 50px;
max-height: 100px;
}Run Code Online (Sandbox Code Playgroud)
<textarea oninput="auto_grow(this)"></textarea>Run Code Online (Sandbox Code Playgroud)
blo*_*oop 114
对于我们这些使用Angular完成此操作的人,我使用了一个指令
HTML:
<textarea elastic ng-model="someProperty"></textarea>
Run Code Online (Sandbox Code Playgroud)
JS:
.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);
}
};
}
]);
Run Code Online (Sandbox Code Playgroud)
$timeout队列一个在DOM加载后将触发的事件,这是获得正确的scrollHeight所必需的(否则你会得到undefined)
Mik*_*ike 43
它可以使用JS实现.这是使用elastic.js的"单行" 解决方案:
$('#note').elastic();
Run Code Online (Sandbox Code Playgroud)
更新:似乎不再有elastic.js,但如果您正在寻找外部库,我可以推荐Jack Moore的 autosize.js .这是工作示例:
autosize(document.getElementById("note"));Run Code Online (Sandbox Code Playgroud)
textarea#note {
width:100%;
box-sizing:border-box;
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);
}Run Code Online (Sandbox Code Playgroud)
<script src="https://rawgit.com/jackmoore/autosize/master/dist/autosize.min.js"></script>
<textarea id="note">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.</textarea>Run Code Online (Sandbox Code Playgroud)
也检查这个类似的主题:
Pet*_*ter 14
我使用了jQuery AutoSize.当我尝试使用Elastic时,它经常给我伪造的高度(非常高的textarea's).jQuery AutoSize运行良好,并没有遇到这个问题.
Dou*_*sar 10
我看到这已经得到了解答,但我相信我有一个简单的jQuery解决方案(jQuery甚至不需要;我只是喜欢使用它):
我建议计算textarea文本中的换行符并相应地设置rows属性textarea.
var text = jQuery('#your_textarea').val(),
// look for any "\n" occurences
matches = text.match(/\n/g),
breaks = matches ? matches.length : 2;
jQuery('#your_textarea').attr('rows',breaks + 2);
Run Code Online (Sandbox Code Playgroud)
小智 5
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:-o-linear-gradient(#F9EFAF, #F7E98D);
background:-ms-linear-gradient(#F9EFAF, #F7E98D);
background:-moz-linear-gradient(#F9EFAF, #F7E98D);
background:-webkit-linear-gradient(#F9EFAF, #F7E98D);
background:linear-gradient(#F9EFAF, #F7E98D);
height:100%;
}
html{
height:100%;
}
body{
height:100%;
}
Run Code Online (Sandbox Code Playgroud)
要么 javascript
var s_height = document.getElementById('note').scrollHeight;
document.getElementById('note').setAttribute('style','height:'+s_height+'px');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
346884 次 |
| 最近记录: |