これが私が作成できたもののスクリーンショットです。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
。
垂直方向のセンタリング
垂直方向のセンタリングには、インラインレンダリングに関する知識が少し必要です。1行のテキストによって消費される垂直方向のスペースは、によって決定され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を更新します)。