这是我能够制作的屏幕截图。在jsfiddle.net上查看它的实际应用。
这是CSS:
body {
background: #454545;
}
hr {
font-family: Arial, sans-serif; /* choose the font you like */
text-align: center; /* horizontal centering */
line-height: 1px; /* vertical centering */
height: 1px; /* gap between the lines */
font-size: 1em; /* choose font size you like */
border-width: 1px 0; /* top and bottom borders */
border-style: solid;
border-color: #676767;
margin: 20px 10px; /* 20px space above/below, 10px left/right */
overflow: visible;
/* ensure 1px gap between borders */
-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: "§"; /* section sign */
color: #999;
display: inline; /* for vertical centering and background knockout */
background-color: #454545; /* same as background color */
padding: 0 0.5em; /* size of background color knockout */
}
/* opera doesn't render correctly. hide section sign */
x:-o-prefocus, hr:after {
content: "";
}
部分标志
要添加部分符号,您可以将生成的内容与:before
或结合使用:after
。剩下的棘手部分是水平居中、垂直居中和敲除边框。
水平居中
水平居中就像添加text-align: center
并hr
确保生成的内容一样简单display: inline
。
垂直居中
垂直居中需要一点内联渲染的知识。一行文本占用的垂直空间由 决定line-height
。即使line-height
比渲染字符的大小小很多,字符仍然显示为全尺寸,但它占用的空间由line-height
. 使用line-height: 1px
达到垂直居中。
敲出边界
最后,我所知道的敲除部分标志后面的边框的唯一方法是用另一种颜色覆盖它们。在这种情况下,我们使用与文档其余部分相同的背景颜色,因此它似乎融入其中。设置适当的background-color
,然后使用左右padding
来控制节符号两侧的空间量。
边框之间的 1px 间隙
您还会注意到我正在设置box-sizing: content-box
. 这是为了确保边框之间的间隙为1px。(另一种等效的设置是box-sizing: border-box; height: 3px;
。)
Opera 渲染错误
@cimmanon 指出了一些 Opera 渲染错误,所以我决定优雅地降级而不显示剖面符号。我认为只显示线条看起来仍然非常整洁和专业。如果你真的想让它在 Opera 中工作,你可以使用不同的标记,比如<div class="hr"></div>
(当然更新 CSS 以匹配)。