CSS: Set font to a size so the text would occupy whole container [duplicate]

回眸只為那壹抹淺笑 提交于 2019-12-04 05:02:01

it's not brute force ;)

HTML:

<span id="txt">Lorem</span>
<div id="card"></div>

CSS:

#card { 
    width: 150px; 
    height: 50px;
    border: 1px solid black 
}

#txt {
    display: none
}

JS (using JQuery):

var size_w = (150/$('#txt').width() - 0.05);
var size_h = (50/$('#txt').height() - 0.05);
var size = size_w>size_h?size_h:size_w;
$('#card').css('font-size',  size + 'em');
$('#card').text($('#txt').text());

fiddle here: http://jsfiddle.net/cwfDr/

All right, now it covers both height and width. ;)

I wrote this tiny, tiny plugin to do it to fit the browser window.

            (function($){
                $.fn.extend({ 
                    sizeFont: function() {
                        return this.each(function() {
                            $obj = $(this);
                            $obj.css({fontSize:($(window).width()/$obj.width())+'em'});
                        });
                    }
                });
            })(jQuery);

I'm sure you can modify this to fit your needs by switching $(window) to whatever you want. Here is it live:

http://cullywright.com/

I had looked into this years ago, and we decided the only logical way of doing it that didn't induce insanity was using images instead of text for the numbers, and then calculating the size of the images needed based on the width of the container (we also had text). Also, we used a fixed width font selected for the numbers/text.

Another alternative is flash text replacement, which gives you more control: http://www.mikeindustries.com/blog/archive/2004/08/sifr

There may be other techniques that have developed over the last few years, and maybe CSS3 could help (although it may not be broadly supported if it does), but the image technique gave us the best bang for the buck.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!