html - 将字体图标附加到文本字符串中的最后一个单词并防止换行

标签 html css word-wrap pseudo-element font-awesome

我想在文本字符串的最后一个单词上附加一个 Font Awesome 图标:

foo bar●

但是如果需要换行,我希望图标附加到最后一个单词并将它们包装在一起:
foo
bar●

我的问题非常类似于:
Prevent :after element from wrapping to next line

但是,该解决方案假定我可以访问最后一个词。就我而言,文本将动态生成。是否有一种 css/html-only 方法来确保图标用最后一个字换行?

这是一个 jsfiddle .

最佳答案

我只是想指出为什么@Unmocked 提供的更改实际上有效,它与 difference between display: inline and display: inline-block 有关。 .

为了解释一下,这里有一些关于 block 之间差异的背景知识。显示和 inline展示。

块显示
block元素通常是导致布局的元素。它们接收自己的边界框,并能够在一定程度上插入其他元素,以适应浏览器渲染区域内的可用空间。 block 的示例元素包括:h1 , p , ul , 和 table .请注意,默认情况下,这些元素中的每一个都开始一个新行,并在关闭时结束自己的行。换句话说 - 他们通过创建自己的段落级部分来适应文本块。

内嵌显示
inline元素通常与文本一起显示。换句话说,它们被设计为显示 - 线路的文本。示例包括 i , b , 或 span .请注意,默认情况下,这些元素中的每一个都继续其周围文本的流动,而不会在其自身之前或之后强制换行。

进入中途案例...

内嵌块显示
inline-block是以上两者的混合体。本质上,一个 inline-block元素从其前面的文本离开的地方开始,并尝试适应文档流 inline .但是,如果它到达需要 wrap 的点,它会下降到一个新行,就像一个 block元素。随后的文本将紧跟在 inline-block 之后继续。元素,并继续正常包装。这可能会导致一些奇怪的情况。

这是一个例子,以表明我的意思。要查看它的实际效果,请查看 this cssdesk snippet .

enter image description here

在您的示例中,您设置了 :after伪元素为 display: inline-block - 这意味着当它碰巧超出环绕显示的最右侧边界时,它的作用类似于示例中的浅蓝色文本 - 并被包裹为一个块。当您改为更改 :after 时元素到 display: inline ,它使它像任何其他文本一样运行 - 并且它和前面的字母之间没有空格,自动换行会按照您的意愿运行。

我希望这有帮助!

注:在你原来的 fiddle 之间改变的另一件事和 updated one是消除white-space围绕文本。

在第一个 fiddle 中,您的 HTML 如下所示:

<div class="container2">
    foo bar
</div>

虽然浏览器不显示文本前后的空格,但它确实包含空格,并且当 :after元素被渲染,就好像这正在发生:
<div class="container2"> foo bar :after</div>

浏览器将多个空格压缩为单个空格,但仍然在单词 "bar" 之间放置一个空格。和 :after元素。就像任何其他单词之间的空格一样,这将导致在 "bar" 之后发生换行。但之前:after在一定的宽度。

在第二个 fiddle 中,您正在使用:
<div class="container-wide">foo bar</div>
<div class="container-narrow">foo bar</div>

在这种情况下,因为 "foo bar" 后面没有空格字符串,浏览器呈现 :after元素紧跟在内容字符串的结尾之后显示。这好像正在发生:
<div class="container-narrow">foo bar:after</div>

无中断 inline - 渲染文本意味着没有中断。

有关演示此操作的示例,请参阅 this update到你的 jsFiddle。

关于html - 将字体图标附加到文本字符串中的最后一个单词并防止换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16246099/

相关文章:

html - 如何使标 checkout 现在输入字段内?

c# - 包装函数的属性?

css - 使 ul 环绕,但不重叠

css - CSS 中的高级包装

javascript - eBay 中的价格趋势功能在 IE 中如何工作?

javascript - 无法在单选按钮中设置选中属性(表内的单选按钮)

javascript - 使用 jquery 设置输入数组值

css - Primefaces p :printer loses all custom css

javascript - 内联样式高度不更新

javascript - 设置 CSS 缓入,而不是缓动