我有<td>
元素:
<td><i class="flag-bfh-ES"></i> +34 666 66 66 66</td>
我希望将它保持在一条线上,但这就是我得到的:
如您所见,标志和电话号码分开。
正在处理电话号码之间,但不在标志和电话号码之间。
如何确保渲染器根本没有引入换行符?
答案 0 :(得分:115)
有几种方法可以防止内容中的换行符。使用
是一种方法,并且在单词之间工作正常,但在空元素和某些文本之间使用它没有明确定义的效果。这同样适用于使用图像作为图标的更合理,更易于访问的方法。
最强大的替代方法是使用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>
答案 1 :(得分:48)
该td:white-space: nowrap;
的CSS应该解决它。
答案 2 :(得分:3)
如果您需要多个单词或元素,但无法将其应用于整个TD或类似内容,则可以使用Span标记。
<span style="white-space: nowrap">Text to break together</span>
or
<span class=nobr>Text to break together</span>
如果您使用的是班级版本,请记住按照接受的答案详细说明设置CSS。
答案 3 :(得分:2)
如果<i>
标记未显示为块并导致问题,那么这应该有效:
<td style="white-space:nowrap;"><i class="flag-bfh-ES"></i> +34 666 66 66 66</td>
答案 4 :(得分:1)
这是真正的解决方案:
<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 */
}
示例,总是在文本之前的图像:
答案 5 :(得分:0)
在某些情况下(例如,由JavaScript生成和插入的html),您可能还想尝试插入零宽度的连接符:
.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;
}
&#13;
<div class="wrapper">
<span class="breakable-text">Lorem dorem tralalalala LAST_WORDS</span>‍<span class="no-break-before">TOGETHER</span>
</div>
&#13;
答案 6 :(得分:-1)
nobr太不可靠,请使用表
<table>
<tr>
<td> something </td>
<td> something </td>
</tr>
</table>
这一切都在同一行上,彼此之间都是平等的,如果以后要更改某些内容,您将拥有更大的自由度。