gpt4 book ai didi

javascript - 如何自动调整内容字体大小以适应其跨度

转载 作者:行者123 更新时间:2023-11-28 08:35:35 30 4
gpt4 key购买 nike

编辑:好吧,所以我以错误的方式解决了这个问题:为了做我想做的事情,我只需要检查是否存在溢出。

这是代码(如果它可以帮助任何人):

<script type="text/javascript">
function textfit(){
var spans = document.body.getElementsByTagName("span");

for(var i = 0, l = spans.length; i < l; i++){
var span = spans[i];
var font = window.getComputedStyle(span, null).getPropertyValue('font-size');
var fontSize = parseInt(font);

do {
span.style.fontSize = (fontSize --) + "px";
} while (span.scrollHeight > span.clientHeight || span.scrollWidth > span.clientWidth);

}
}

$(document).ready(function() {
textfit();
});

</script>

旧帖子:

我的问题很简单:我有一个 HTML 页面,跨度很大,但并非所有页面都具有相同的内容。关于这一点,我想调整每个内容的字体大小以完美地适应其跨度;请注意,我不想剪切文本内容,也不想在太长的情况下添加点,我只想修改字体大小。

JS:

function = textfit(){
var spans = document.body.getElementsByTagName("span");

for(var i = 0, l = spans.length; i < l; i++){
var maxHeight = spans[i].offsetHeight;
var maxWidth = spans[i].offsetWidth;
var textHeight = $(spans[i].textContent).height();
var textWidth = $(spans[i].textContent).width();
var fontSize = spans[i].style.fontSize;

do {
fontSize = fontSize - 1;
} while (textHeight > maxHeight || textWidth > maxWidth);

}
}

$(document).ready(function() {
textfit();
});

HTML/CSS:

<style>
span{
display: inline-block;
width: 100px;
height: 100px;
font-size: 20pt;
}
</style>
......
<body>
<div>
<span>SMALL</span>
<span>MEEEEEEEEEEEEEDIUM</span>
<span>HUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGE</span>
</div>
</body>

正如您所见,我使用“for”来遍历每个跨度,并使用“do...while”来调整每个跨度的字体大小。

我的问题:

  • 看起来我无法获取文本内容大小(而是获取“null”)
  • 与字体大小相同(我得到一个空字符串)

或者也许我处理问题的方式是错误的,我需要采取不同的做法......

注意:JS 对我来说有点"new",如果我犯了新手错误,很抱歉

最佳答案

您正在通过 fontSize = fontSize - 1; 重置局部变量,在相关说明中,textHeighttextWidth 将不会更新通过改变字体大小自动改变,它们是局部变量。

另一方面,您需要将文本包装在附加元素中才能测量其尺寸。

<style>
.wrapper{
display: inline-block;
width: 100px;
height: 100px;
font-size: 20pt;
}
</style>
......
<body>
<div>
<span class='wrapper'><span>SMALL</span></span>
<span class='wrapper'><span>MEEEEEEEEEEEEEDIUM</span></span>
<span class='wrapper'><span>HUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUGE</span></span>
</div>
</body>

JS:

function = textfit(){
var spans = document.body.getElementsByClassName("wrapper");

for(var i = 0, l = spans.length; i < l; i++){
var span = spans[i];
var maxHeight = span.offsetHeight;
var maxWidth = span.offsetWidth;
var fontSize = parseInt(span.style.fontSize);

do {
var textHeight = span.firstChild.offsetHeight();
var textWidth = span.firstChild.offsetWidth();
span.style.fontSize = (fontSize --)+"pt";
} while (textHeight > maxHeight || textWidth > maxWidth);
//PS I suggest a binary-search-like algorithm to save time

}
}

$(document).ready(function() {
textfit();
});

关于javascript - 如何自动调整内容字体大小以适应其跨度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258722/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com