我有一个页面,其中有许多以网格布局的 div。每个 div 中都有文本。我希望文本足够大以填充 div。我通过增加文本大小来做到这一点,直到我检测到 div 已经滚动,然后按照这个答案返回:
这在大多数浏览器上都非常有效,包括移动浏览器,但在 IE10 上却很慢。您实际上可以观看它使文本变小。我猜它每次字体大小改变时都会做某种窗口范围的布局操作。
知道如何在所有 div 完成或以其他方式提高性能之前暂停重绘吗?
这是一个显示该技术的简单小提琴。想象一下,页面上有大约 50 个 div。在 Chrome 中即时,在 IE10 中需要几秒钟:
(function($) {
$.fn.textfill = function(options) {
var fontSize = options.maxFontPixels;
var ourText = $('span:visible:first', this);
var maxHeight = $(this).height();
var maxWidth = $(this).width();
var textHeight;
var textWidth;
do {
ourText.css('font-size', fontSize);
textHeight = ourText.height();
textWidth = ourText.width();
fontSize = fontSize - 1;
} while ((textHeight > maxHeight || textWidth > maxWidth) && fontSize > 3);
return this;
}
})(jQuery);
$(document).ready(function() {
$('.jtextfill').textfill({ maxFontPixels: 200 });
});
jsfiddle:http: //jsfiddle.net/pRJdY/