【发布时间】:2014-10-01 23:31:01
【问题描述】:
我正在尝试实现类似this one 的行为,这是一个具有动态字体大小的可拖动可调整大小的文本区域。我不得不承认我对网络开发很陌生,所以如果我会写一些愚蠢的东西,请原谅我。
当我尝试调整文本区域中的字体大小时,我遇到了以下问题,下面是我用来根据文本区域高度调整字体大小的代码
// Called on keyup
that._adaptFontSize = function(){
var i = 1;
while ( $textArea[0].scrollHeight <= $textArea.height() ){
console.log('Iteration : '+(i++));
$textArea.css('font-size', '+=1');
}
};
我的想法是根据文本区域的高度最大化字体大小(也许我也应该考虑宽度。
我的问题是上面的代码会根据浏览器产生不同的结果,在 Chrome 和 Safari 中循环结束时的字体大小是相同的,在 Firefox 上是双倍的,我不太明白发生了什么。 . 这个基本的fiddle 显示了问题
更新 1
我发现计算错误大小的问题来自占位符的存在。
所以基本上在 Chrome / Safari 上,如果没有占位符,迭代结束时的字体大小等于我在 Firefox 上得到的大小。所以依靠占位符来计算最大尺寸是有问题的。
更新 2
以下fiddle 或多或少做了我想要实现的,真正的问题是它在 IE 10 上根本不起作用,原因是 IE10 上的 scrollHeight更改字体大小时不会更改。
更新 3
显然,当增加循环内的字体大小时,IE10 上的 scrollHeight 不会得到更新。这基本上是用于将字体适合文本区域内的天真的方法。
我想知道是否存在替代 scrollHeight 来解决此问题,但到目前为止我没有找到任何可行的解决方案
【问题讨论】:
-
我没有看到这个问题。它在 Chrome 和 Firefox 上的工作方式(至少增长)几乎相同。 Ubuntu。
-
我在 Mac 上,结果是:Chrome font-size 86px ,Firefox 256px 和循环结束。
-
我在 IE 10 上的更新 2 中测试了你的小提琴,它工作得很好。它甚至可以在 IE 9 上运行。
标签: javascript jquery internet-explorer firefox textarea