目标是让一个可调整大小的容器内部有一些文本,可以垂直或水平地占用尽可能多的空间而不包裹到下一行。
在谷歌搜索后,我对找到的解决方案并不满意所以我创建了自己的解决方案,我想知道是否有人可以提出任何改进建议。
测量文本容器的宽度(w)高度(h)并除以font-size(f):
将主容器宽度(W)除以iw和主容器高度(H)除以ih:
在kw和kh之间选择最低:这是想要的FontSize。
这是一个小伙伴:https://jsfiddle.net/pinkynrg/44ua56dv/
function maximizeFontSize($target) {
var testingFont = 1000;
$target.find(".text-wrapper").css("font-size", testingFont+"px");
var textWidth = $(".text-wrapper").width()/1000;
var textHeight = $(".text-wrapper").height()/1000;
var width = $(".container").width();
var height = $(".container").height();
var kWidth = width/textWidth;
var kHeight = height/textHeight;
var fontSize = kWidth < kHeight ? kWidth : kHeight;
// finally
$(".text-wrapper")
.css("font-size", fontSize+"px")
.css("line-height", height+"px");
}
我正在寻找的解决方案必须:
答案 0 :(得分:0)
如果文字是静态的,我们可以找到一种方法让这项工作在很大程度上依赖于您使用的font-style
和父/身体font-size
(因为我们将会使用ems
为文本。)
虽然确实可以计算出不同字体所需的相应宽度,但我不会在此处显示它以保持实用。
让我们说我们的标记看起来像这样:
<div class="container">
<p class="text">Some text</p>
</div>
我们的体型是:
body {
font-size: 18px;
}
对于该文字大小,我们需要计算我们可以用于文本的最大ems
,在这种情况下我保持简单,就像18px
我只需要1em
:
.text {
font-size: 1em;
}
然后在JS中,我们将使用百分比滥用容器的font-size
属性并执行:
const container = document.querySelector('.container')
container.style.fontSize = container.offsetWidth + '%'
然后我们的文本将占据与容器大致相同的宽度。 它可以更加动态地完成,但这取决于所需的解决方案。