如何为一行文本创建动态的字母间距,使其从容器宽度的100%开始,并随着屏幕尺寸的减小而减小?我希望根据容器的宽度调整字母间距,并且在调整窗口大小时应重新计算文本的宽度。
我得到的是字母间距,而不是容器的宽度。
$(document).ready(function () {
function adjustLetterSpacing() {
var containerWidth = $(".container").width();
var textElement = $(".dynamic-text");
var maxWidth = containerWidth - 50;
var textWidth = textElement.width();
var letterSpacingValue = 0;
if (maxWidth > textWidth) {
var textLength = textElement.text().length;
letterSpacingValue = (maxWidth - textWidth) / (textLength - 1);
}
$(".dynamic-text").css("letter-spacing", Math.max(0, letterSpacingValue) + "px");
}
// Initial adjustment on page load
adjustLetterSpacing();
$(window).on("resize", adjustLetterSpacing);
});
.container {
width: 1200px;
}
.dynamic-text {
white-space: nowrap;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div class="container">
<p>
<span class="dynamic-text">
Lorem ipsum dolor sit amet
</span>
</p>
</div>
如能就如何实现这一效果提供任何指导,将不胜感激。
3条答案
按热度按时间pkmbmrz71#
使用Flexbox的强大功能。你所需要做的就是把每个字符 Package 在一个
<span>
中。ddhy6vgd2#
我们可以让跨度和div一样宽。并将字母间距指定为width/totalLetters。
但首先我们也要存储字母的实际宽度,因为有些单词也有空格。
字符串
c7rzv4ha3#
你可以用Vanilla JS做这样的事情。
我们在文档中添加一个“hidden/interim”元素,获取它的宽度。
字符串
我们可以在第一时间获取并缓存它,如果我们愿意的话。
然后我们只需根据总宽度减去文本原始宽度来计算字母间距。
型
的字符串