页面文字折行,css如何控制英文排版换行的连字符?
发布于 作者:苏南大叔 来源:程序如此灵动~整体来说,本文说的就是英文排版的时候,单词被分到两行的时候,显示在行末尾的连字符小横线。具体来说,就是hyphens
属性。然而,hyphens
的正确使用,却有很多的前置条件,这就是本文要讨论的问题。
苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10
,chrome@123.0.6312.105
。
测试例子
<style>
div {
width: 95%;
border: 1px solid black;
}
div.p0 {
hyphens: auto;
}
</style>
<div class="p0" lang="en-us">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome manmanmanmanmanmanmanmanmanmanmanmanman. see more: https://www.newsn.net/about.html
</div>
无脑使用的话,就是hyphens:auto
这个设置最常用。上面的例子里面,宽度是可变的。不断拉动浏览器边缘改变宽度,进而改变容器的宽度。就可以看到连字符在不同的地方不断出现了。
lang
属性
hyphens
连字符的出现规则,前提必然是类英文的文字了。而正常情况下,页面识别文字的方式也比较原始,就是读取容器的lang
属性。那么正常情况下,是设置<html lang='zh'>
的。当然,也可以设置容器的lang
属性,只是比较不常见而已。
所以,如果类英文文章段落,怎么也调试不出来连字符。那么,可能的情况就请检查lang
的设置吧。而且不同人类语言有着不同的连字符规则。hyphens:auto
的auto
就是浏览器按照预设的连字符规则进行显示的。
<style>
div {
width: 95%;
border: 1px solid black;
}
div.p0 {
hyphens: auto;
}
</style>
<div class="p0" lang="en-us">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome manmanmanmanmanmanmanmanmanmanmanmanman. see more: https://www.newsn.net/about.html
</div>
<div class="p0" lang="zh-cn">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome manmanmanmanmanmanmanmanmanmanmanmanman. see more: https://www.newsn.net/about.html
</div>
参考文章:
word-break: break-all
冲突
如果设置了word-break: break-all
,那么,永远不会显示连字符,两者冲突。但是,与此同时,与word-wrap:word-break
并不冲突!
<style>
div {
width: 95%;
border: 1px solid black;
hyphens: auto;
}
div.p0 {
word-wrap: break-word;
}
div.p1 {
word-break: break-all;
}
</style>
<div class="p0" lang="en-us">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome
manmanmanmanmanmanmanmanmanmanmanmanman. see more:
https://www.newsn.net/about.html
</div>
<div class="p1" lang="en-us">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome
manmanmanmanmanmanmanmanmanmanmanmanman. see more:
https://www.newsn.net/about.html
</div>
word-break: keep-all
下依然可以产生连字符
当然,这里讨论的是因为折行而可能产生的连字符现象。所以,和word-break:keep-all
无关。
<style>
div {
width: 95%;
border: 1px solid black;
word-break: keep-all;
}
div.p0 {
hyphens: auto;
}
div.p1 {
}
</style>
<div class="p0" lang="en-us">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome
manmanmanmanmanmanmanmanmanmanmanmanman. see more:
https://www.newsn.net/about.html
</div>
<div class="p1" lang="en-us">
Sunan is a veryveryveryveryveryveryveryveryveryveryveryveryvery handsome
manmanmanmanmanmanmanmanmanmanmanmanman. see more:
https://www.newsn.net/about.html
</div>
这个例子似乎有些超出预期,即使keep-all
,依然产生了连字符。这个说明在本文的测试环境下:hyphens:auto
的优先级比keep-all
更高一些。
总结
本文仅仅说明了hyphens:auto
这一种最常见的情况,连字符的位置是由浏览器根据lang
语言设置,然后匹配预制的连字符显示规则进行显示的。并且,遇到break-word
的情况,会导致连字符不显示。
更多css
相关文章,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。