gpt4 book ai didi

javascript - 在 Javascript 中测量字符串宽度

转载 作者:行者123 更新时间:2023-11-30 06:44:03 24 4
gpt4 key购买 nike

我正在尝试使字符串精确地适合特定宽度。这意味着字体大小会根据字符串而变化。我现在使用以下函数,使用 jQuery:

function fontResize ( )
{
for (var i = $("#date").css("font-size").slice(0, -2); $("#date").width() < $("#clock").width(); i++)
$("#date").css("font-size", i.toString() + "px");
}

我的想法是将 CSS 中的字体大小设置为尽可能低的值。我用这个值初始化循环,并用 1 递增字体大小,直到字符串比包含元素的宽度宽。本例中的字符串是“date”,包含的元素是“clock”。

虽然这可行,但我认为主要缺点是必须先绘制字符串才能确定宽度。这意味着我无法在加载正文之前调用此函数。

如果有人知道更好的方法,请告诉我!谢谢。

最佳答案

为了确保您获得所有样式以及在页面完全呈现时应用的所有样式,是的,您确实希望将元素放入 DOM 中(并放置在 DOM 中的正确位置) 在你做你的测量之前。但是您不必等到所有else 都准备就绪(除非您认为它会影响您正在测量的字符串的样式)。您可以将代码放在 script block 中,立即在相关元素之后 — 无需等待 ready。根据 Google's Closure library engineersdate 元素将在那里并可访问.例如,如果 date 是一个 span:

<body>
...
<span id="date">December 13th</span>
<script>fontResize();</script>
...
...
</body>

像这样混合代码和标记是很不幸的(特别是如果您有不同的团队来执行标记和代码),但是如果您的要求是尽快调整文本的大小,那就是这样。

以上还假设您的 fontResize 函数已经加载(例如,在页面上方的 script block 中)。这是不幸混合标记和代码这样的另一个原因,因为通常当然你想把你的脚本 at the bottom ,就在关闭 body 标签之前。

但是:可能值得尝试一下,看看您是否可以在放在结束 body 标记之前的脚本中调整大小。页面看起来不正确的机会很小,但很小,当然页面在加载时往往看起来有点滑稽。这样您就不会遇到混合问题,也不必提前加载脚本。您可能会发现 just-before-the-closing-body 标签很快就够了。

关于javascript - 在 Javascript 中测量字符串宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8490195/

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