使用CSS / jQuery的自适应字体大小

dev*_*ev9 0 html javascript css jquery responsive-design

我想在div中创建一个响应文本。

我尝试了jquery-textfillFlowType,但是它们根本对我不起作用。

FlowType不会使用所有可用空间,仅会使用其中的一部分(demo),而textfill不考虑高度(demo)。

我是不正确地使用它们还是我想要的东西很难实现?

我的HTML:

<body>
    <div class="external">
        <div class="internal">Example</div>
    </div>    
</body>
Run Code Online (Sandbox Code Playgroud)

我的CSS:

.internal{width:100%;height:100%}
.external{width:400px;height:50px;}
Run Code Online (Sandbox Code Playgroud)

PS。目前尚不足够支持视口。

flo*_*ght 5

编辑:更新了resize事件侦听器。更新小提琴

据我了解,您希望文本尽可能大,同时仍适合包含在其中<div>,对吗?我的解决方案是<span>在文本周围放置一个与文本的正常大小一致的文本。然后计算容器尺寸和尺寸之间的比率<span>。以较小的比例(宽度或高度)中的较大者为准,使用该比例放大文本。

HTML:

<div class="container">
    <span class="text-fitter">
        text here
    </span>
</div>
Run Code Online (Sandbox Code Playgroud)

JS(jQuery):

textfit();
$(window).on('resize', textfit);

function textfit() {
    $('.text-fitter').css('font-size', 'medium');
    var w1 = $('.container').width()-10;
    var w2 = $('.text-fitter').width();
    var wRatio = Math.round(w1 / w2 * 10) / 10;

    var h1 = $('.container').height()-10;
    var h2 = $('.text-fitter').height();
    var hRatio = Math.round(h1 / h2 * 10) / 10;

    var constraint = Math.min(wRatio, hRatio);

    $('.text-fitter').css('font-size', constraint + 'em');
}
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴。调整.containerCSS中的尺寸以查看实际效果。