放大/缩小文本以使用jquery动态填充div?

时间:2012-06-27 05:11:25

标签: jquery css font-size autoresize

我已经看过一些类似的帖子,并尝试了给出的答案,但我似乎无法让这个工作(无论如何)。

基本上我正在寻找能够自动调整(放大或缩小)文本以适应多行设置宽度div的内容。其中第1行是最大的,第2行是较小的第3行和第3行最小的文本大小,并且(希望)证明文本的合理性。如果这有任何意义吗?

任何帮助将不胜感激! :)

编辑:我忘了提到它最多只能运行2-3行,设置div宽度为286px。

我尝试过以下代码:

;(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(e){
  $('.testimonial').textfill({ maxFontPixels: 36 });
});

Auto-size dynamic text to fill fixed size container

$( '.testimonial' ).each(function ( i, box ) {
    var width = $( box ).width(),
        html = '<span style="white-space:nowrap"></span>',
        line = $( box ).wrapInner( html ).children()[ 0 ],
        n = 100;
    $( box ).css( 'font-size', n );
    while ( $( line ).width() > width ) {
        $( box ).css( 'font-size', --n );
    }
    $( box ).text( $( line ).text() );
  });

JavaScript Scale Text to Fit in Fixed Div

1 个答案:

答案 0 :(得分:2)

你需要根据你的描述自己编写代码,这样的事情应该有效:

  1. 使用div.innerWidth()
  2. 获取.innerHeight()的尺寸
  3. 根据您自己的数学公式,您可以根据包装div的大小设置您希望字体大小的容差。使用$.css('font-size','12px');等切换字体大小
  4. 所以你会这样做:

     // get the size of the div
     var w = $('div').innerWidth();
     var h = $('div').innerHeight();
    
     // your own formula to your liking
     if (w >= 100) { fontsize = 11 }
     elseif (w >= 200) { fontsize = 12 }
     else { fontsize = 10 }
    
     //text to resize
     $('div span').css('font-size', fontsize + 'px');
    

    或者也许有一个插件,试试谷歌。