给定一个包含可变长度文本的内联(或内联块)元素,以及第一个元素右侧的另一个元素,作为一种标记,是否有办法防止第一个元素和第二个元素的最后一个单词之间的换行符?两个元素占用同一行是可以的;出现在第一元素的文本中的换行符也是可以的;但是两个元素之间的换行符是不可取的。2这里有一个例子来解释我的意思。
有什么办法可以做到这一点吗?我试着把这两个元素作为跨度,并在它们之间放置一个不间断的空格,但没有效果。
- UPDATE:**下面是一个快速而粗略的Codepen示例:http://codepen.io/anon/pen/LkzBQJ
网页:
<h1>
<span class="title-text">
This is some text
</span><span class="badge">yo!</span>
</h1>
<h1>
<span class="title-text">
This is some broken text
</span><span class="badge">yo!</span>
</h1>
CSS:
h1 {
width: 350px;
}
.badge {
color: #f6511d;
display: inline-block;
border: 1px solid #f6511d;
border-radius: 3px;
font-size: 0.8em;
padding: 0.1em 0.2em;
line-height: 0.97em;
margin-left: 0.4em;
vertical-align: 1px;
}
- UPDATE2:**在我的特殊情况下,第一个元素中的文本和徽章都必须使用JavaScript动态呈现,所以下面Ricardo的解决方案(用
white-space: nowrap
将文本的最后一个单词和徽章 Package 在一个span中)虽然有效,但实现起来并不容易。
- UPDATE2:**在我的特殊情况下,第一个元素中的文本和徽章都必须使用JavaScript动态呈现,所以下面Ricardo的解决方案(用
4条答案
按热度按时间ars1skjm1#
检查这个!这一行
<h1>This is some text</h1><span class="badge">yo!</span>
必须在一行中才能工作。https://codepen.io/lemonjelly/pen/rNNvLGE
mpbci0fu2#
我能想到的解决方案是创建某种修复,将文本与徽章 Package 在
span
中,并使用css属性white-space: nowrap;
。63lcw9qa3#
这个问题在排版中被称为“寡妇”。有三种方法可以解决这个问题。
使用
widows
css属性只把最后两个字连在一起。
使用
字符在最后一个单词和标记之间添加一个“物理”非中断空格字符,并且仅添加该字符。
如果必须对多行代码执行此操作,可以使用HTML注解来避免中断空格。
用
white-space: nowrap
的跨度将最后一个单词和徽章括起来。vbopmzt14#
您可以向文本添加填充和负边距:
这甚至适用于动态生成的内容,而不必在文本和图像的最后一个单词周围做一个标记。
(根据我在这里看到的答案:https://stackoverflow.com/a/25857961/5899236)