这是我能够生成的屏幕截图。在 jsfiddle.net 上查看它的运行情况。
这里是CSS:
body {
background: #454545;
}
hr {
font-family: Arial, sans-serif;
text-align: center;
line-height: 1px;
height: 1px;
font-size: 1em;
border-width: 1px 0;
border-style: solid;
border-color: #676767;
margin: 20px 10px;
overflow: visible;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
-ms-box-sizing: content-box;
-o-box-sizing: content-box;
box-sizing: content-box;
}
hr:after {
content: "§";
color: #999;
display: inline;
background-color: #454545;
padding: 0 0.5em;
}
x:-o-prefocus, hr:after {
content: "";
}
章节符号
要添加章节符号,您可以使用生成内容与:before
或:after
。其余棘手的部分是水平居中、垂直居中和边框抠掉。
水平居中
水平居中只需在hr
上添加text-align: center
,并确保生成的内容为display: inline
。
垂直居中
垂直居中需要一些关于行内渲染的知识。一行文本所占据的垂直空间由line-height
确定。即使line-height
比呈现字符的大小小得多,字符仍然以全尺寸显示,但它占用的空间由line-height
决定。使用line-height: 1px
实现垂直居中。
边框抠掉
最后,我所知道的去除章节符号背景边框的唯一方法是用另一种颜色覆盖它们。在这种情况下,我们使用与文档其余部分相同的背景颜色,使其看起来融为一体。设置适当的background-color
,然后使用左右padding
来控制章节符号两侧的空间大小。
边框之间的1像素间隙
您还会注意到,我正在设置box-sizing: content-box
。这是为了确保边框之间的间隙为1像素。(一个替代但等效的设置将是box-sizing: border-box; height: 3px;
。)
Opera渲染错误
@cimmanon指出了一些Opera渲染错误,因此我决定优雅地降级并不显示章节符号。我认为仅显示线条仍然看起来非常整洁和专业。如果您真的想在Opera中使其工作,则可以使用不同的标记,例如<div class="hr"></div>
(当然需要更新CSS以匹配)。
overflow: hidden
一样作用,导致:before
完全隐藏,除非你给hr
一个足够大的高度来显示字形。 - cimmanon:after
。 - Chris Calo