我有这个<td>
元素:
<td><i class="flag-bfh-ES"></i> +34 666 66 66 66</td>
我本来希望这个内容只占用一行,但是却变成了下面这样:
你可以看到,旗帜和电话号码在两行中。虽然
在电话号码的数字之间起作用,但却对旗帜和电话号码之间没有起作用。
我怎样才能确保渲染器不会引入任何换行符呢?
我有这个<td>
元素:
<td><i class="flag-bfh-ES"></i> +34 666 66 66 66</td>
我本来希望这个内容只占用一行,但是却变成了下面这样:
你可以看到,旗帜和电话号码在两行中。虽然
在电话号码的数字之间起作用,但却对旗帜和电话号码之间没有起作用。
我怎样才能确保渲染器不会引入任何换行符呢?
有几种方法可以防止内容中的换行。使用
是其中一种方法,在单词之间很有效,但在空元素和文本之间使用它没有明确定义的效果。对于使用图像作为图标的更逻辑和更易访问的方法也同样适用。
最强大的替代方法是使用 nobr
标记,虽然非标准化,但被普遍支持并可在禁用 CSS 时使用:
<td><nobr><i class="flag-bfh-ES"></i> +34 666 66 66 66</nobr></td>
在这种情况下,您可以使用
而不是空格,但并非必须。
另一种方法是使用nowrap
属性(已弃用/过时,但仍然正常工作,除了一些罕见的怪异情况):
<td nowrap><i class="flag-bfh-ES"></i> +34 666 66 66 66</td>
然后还有一种CSS方法,适用于支持CSS的浏览器,并需要更多的代码:
<style>
.nobr { white-space: nowrap }
</style>
...
<td class=nobr><i class="flag-bfh-ES"></i> +34 666 66 66 66</td>
nobr
的浏览器;这样的浏览器是不存在的。 - Jukka K. Korpelanobr
仍然被弃用并且“不得使用”。 - MarcusCSS针对td的样式:white-space: nowrap;
可以解决这个问题。
<span style="white-space: nowrap">Text to break together</span>
or
<span class=nobr>Text to break together</span>
如果您使用类版本,请记得按照接受的答案中详细说明的方式设置CSS。
.wrapper{
width: 290px;
white-space: no-wrap;
resize:both;
overflow:auto;
border: 1px solid gray;
}
.breakable-text{
display: inline;
white-space: no-wrap;
}
.no-break-before {
padding-left: 10px;
}
<div class="wrapper">
<span class="breakable-text">Lorem dorem tralalalala LAST_WORDS</span>‍<span class="no-break-before">TOGETHER</span>
</div>
<td>
<span class="inline-flag">
<i class="flag-bfh-ES"></i>
<span>+34 666 66 66 66</span>
</span>
</td>
css:
.inline-flag {
position: relative;
display: inline;
line-height: 14px; /* play with this */
}
.inline-flag > i {
position: absolute;
display: block;
top: -1px; /* play with this */
}
.inline-flag > span {
margin-left: 18px; /* play with this */
}
nobr太不可靠了,使用表格吧
<table>
<tr>
<td> something </td>
<td> something </td>
</tr>
</table>
所有内容都在同一行上,彼此之间平齐,如果以后想要更改某些内容,您将拥有更多的自由。