gpt4 book ai didi

html5 或 css 'smart text flow' 将句子或段落均匀分布在同样宽的行上?

转载 作者:行者123 更新时间:2023-12-03 15:54:42 26 4
gpt4 key购买 nike

假设我有一个动态 HTML 元素(spandiv 或其他),其中包含一个句子或一段文本,如下所示:

two lines

现在,如果我让句子稍微长一点,它可能需要额外的一行,如下所示:

three lines wrong

请注意最后一个单词如何在单独的一行中。所以前两行都被占满了。从某种意义上说,它们占据了该元素中的全部可用元素。而第三行只包含一个词,大部分都是空的。

我觉得这相当令人不安,我想知道是否有一种技巧可以在所有行之间更均匀地分配可用空间。我的意思是这样的:(请注意,这是完全相同的句子)

three lines right

它应该根据字体和浏览器 View 大小以及元素的宽度自动重新流动,这可能取决于屏幕分辨率。

是否有一些巧妙的 HTML5 或 CSS3 方法来实现这一点?

在搜索和查找与此问题类似的主题时,我确实找到了 text-align: justify我熟悉但并不是我真正要寻找的属性(property)。text-align: justify倾向于通过增加单词之间的空白来将所有行扩展到包含元素的完整内容。

相反,我真正要寻找的是重新分配单词的东西,以便所有行都更窄,即不占用所有水平元素空间。以某种方式导致所有线的宽度相等(或尽可能接近)。

所以我的意思不是这样:(这就是 text-align:justify 所做的)

text-align justify

将此与前面的示例进行比较。

最佳答案

我知道您要求提供 CSS 解决方案,但我认为目前还没有。下面是我的 JS 解决方案。

        function createBetterLineBreaks(el) {
var originalWidth = el.offsetWidth;
var originalHeight = el.offsetHeight;
for (let i = originalWidth - 1; i >= 0; i--) {
el.style.width = `${i}px`;
if (el.offsetHeight > originalHeight) {
el.style.width = `${i + 1}px`;
break;
}
}
}
// hover effects
document.querySelector('.box').addEventListener('mouseenter', function () {
createBetterLineBreaks(document.querySelector('.box .text'));
});
document.querySelector('.box').addEventListener('mouseleave', function () {
document.querySelector('.box .text').style.width = 'unset';
});
        .box {
width: 300px;
font-size: 30px;
border: 1px solid black;
border-radius: 5px;
padding: 20px;
display: flex;
align-items: center;
justify-content: center;
}
    <div class="box"><span class="text">hover this box to distribute the text more evenly</span></div>

关于html5 或 css 'smart text flow' 将句子或段落均匀分布在同样宽的行上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61923996/

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