在HTML中,是否可以插入换行提示?
想象一下,我在一个DIV中有一个长的、多单词的文本行: 你好,亲爱的顾客。请看一下我们的报价 DIV具有动态宽度。我想对上面的文字进行换行。当前,换行发生在单词边界上,该边界使第一行的长度最大化:在HTML中,是否可以插入换行提示?,html,word-wrap,soft-hyphen,wbr,Html,Word Wrap,Soft Hyphen,Wbr,想象一下,我在一个DIV中有一个长的、多单词的文本行: 你好,亲爱的顾客。请看一下我们的报价 DIV具有动态宽度。我想对上面的文字进行换行。当前,换行发生在单词边界上,该边界使第一行的长度最大化: |-DIV WIDTH------------------------------------| Hello there, dear customer. Please have a look at our offer. 我希望包装发生在句子的边界上。然而,如果没有包装是必要的,我想保留作为一个线 为
|-DIV WIDTH------------------------------------|
Hello there, dear customer. Please have a look
at our offer.
我希望包装发生在句子的边界上。然而,如果没有包装是必要的,我想保留作为一个线
为了说明我的观点,请查看不同的DIV宽度以及我希望文本如何包装:
|-DIV WIDTH--------------------------------------------------------|
Hello there, dear customer. Please have a look at our offer.
|-DIV WIDTH-----------------------------------|
Hello there, dear customer.
Please have a look at our offer.
|-DIV WIDTH--------|
Hello there, dear
customer.
Please have a look
at our offer.
对于单词,您可以使用软连字符,以便在建议的音节边界上进行单词换行。如果不需要包装,则­代码>保持不可见。如果需要包装,则­代码>是它发生的地方:
magnifi­cently
有没有类似的方法来暗示HTML中的单词包装?不太准确,但很接近:
简而言之,您应该设置空白:nowrap代码>用于文本容器,并使用
根据需要在单词之间插入分隔符。使用­
在单词中或单词之间,因为
不会引入连字符
另见:
当不允许换行时,在单词之间使用无中断空格U+00A0(或
,如果无法方便地输入字符),否则使用正常空格
当单词包含连字符“-”和一些其他字符(如括号)时,这将不起作用,因为一些浏览器将它们视为允许在它们之后换行。请参阅一篇长篇论文,包括处理这些问题的各种技巧。但是,如果您的单词只有普通标点符号,没有连字符,那么您应该可以使用简单的方法。元素
和
通常有效,但并不总是有效。当设计一个静态登录页面时,它们尤其有问题,(a)必须在各种屏幕和浏览器上工作,(b)必须看起来很好
在这种情况下,我希望在各种不同的屏幕分辨率下控制换行提示。为此,我使用
标记和css。如果它变得复杂,可能会变得一团糟,但我发现它在一定程度上起作用。例如:
<p class='break-hints'>
Hello there, dear customer. <br class='break-big'>
Please have a look <br class='break-small'> at our offer.
</p>
我也有同样的问题。我的文本如下所示:
助理某物/任何东西
在/
字符后面打断它确实有助于提高可读性
在我的例子中,我通过使用内联块(现在inline flow root
显然)元素包装所需的“较低换行优先级”块来解决这个问题:
助理某物/任何东西
有关结果,请参见代码段
.d{
边缘:1米;
}
#b跨度{
显示:内联块;
}
助理某物/任何东西
助手某物/任何东西Pabulum Navigation
+1:请下次提供您的代码的简短摘要,因为您还提供了
作为可能的解决方案。我注意到,Gmail等Google Web应用程序甚至在文字中使用
。
p.break-hints br {
display: none;
}
@media only screen and (max-width: 300px) {
p.break-hints br.break-small {
display: inline;
}
}
p.break-hints br.break-big {
display: inline;
}