[CSS]シンプルなHTMLで角丸のタブをより美しく実装するチュートリアル
Post on:2012年1月13日
sponsorsr
画像を使用せずに、リスト要素で実装したシンプルなHTMLで角丸のタブをより美しく実装するチュートリアルを紹介します。

(Better) Tabs with Round Out Borders
[ad#ad-2]
下記は各ポイントを意訳したものです。
デモ
デモはChrome, Safari, Firefox, Operaでご覧ください。
IEはたぶんIE10で対応するはずです。

実装
まずは、HTMLから。
HTML
タブをシンプルなリスト要素で実装します。
<ul class="tabrow">
<li>Lorem</li>
<li>Ipsum</li>
<li class="selected">Sit amet</li>
<li>Consectetur adipisicing</li>
</ul>
[ad#ad-2]
CSS
CSSの実装は、少しずつキャプチャとともに紹介します。

まずは、ulとliのデフォルトのスタイルを取り除き、水平に並べてラインで囲みます。
.tabrow {
text-align: center;
list-style: none;
margin: 0;
padding: 0;
line-height: 24px;
}
.tabrow li {
margin: 0 10px;
padding: 0 10px;
border: 1px solid #AAA;
background: #ECECEC;
display: inline-block;
}

選択されたタブのスタイルを定義します。
.tabrow li.selected {
background: #FFF;
color: #000;
}

タブの下側にラインを引きます。
ここで最初の擬似要素を使用します。
.tabrow {
position: relative;
}
.tabrow:after {
position: absolute;
content: "";
width: 100%;
bottom: 0;
left: 0;
border-bottom: 1px solid #AAA;
z-index: 1;
}

選択されたタブに下線は必要ないので、「z-index」を使用して下線がない状態にします。
.tabrow:before {
z-index: 1;
}
.tabrow li {
position: relative;
z-index: 0;
}
.tabrow li.selected {
z-index: 2;
border-bottom-color: #FFF;
}

いよいよ、角丸のスタイルです。
擬似要素を使用して、角丸の準備をします。
.tabrow li:before,
.tabrow li:after {
position: absolute;
bottom: -1px;
width: 6px;
height: 6px;
content: " ";
}
.tabrow li:before {
left: -6px;
}
.tabrow li:after {
right: -6px;
}
.tabrow li:after, .tabrow li:before {
border: 1px solid #AAA;
}

borderを取り除いて、角丸を設定します。
.tabrow li {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
}
.tabrow li:before {
border-bottom-right-radius: 6px;
border-width: 0 1px 1px 0;
}
.tabrow li:after {
border-bottom-left-radius: 6px;
border-width: 0 0 1px 1px;
}

角を取り除くために、「box-shadow(赤い箇所)」を適用します。
.tabrow li:before {
box-shadow: 2px 2px 0 red;
}
.tabrow li:after {
box-shadow: -2px 2px 0 red;
}

赤のシャドウが角を包み隠しているのを確認したら、正しい色に変更します。
.tabrow li:before {
box-shadow: 2px 2px 0 #ECECEC;
}
.tabrow li:after {
box-shadow: -2px 2px 0 #ECECEC;
}
.tabrow li.selected:before {
box-shadow: 2px 2px 0 #FFF;
}
.tabrow li.selected:after {
box-shadow: -2px 2px 0 #FFF;
}

最後に、より美しくするために、グラデーションとボックスシャドウなどを加えます。
.tabrow li {
background: -o-linear-gradient(top, #ECECEC 50%, #D1D1D1 100%);
background: -ms-linear-gradient(top, #ECECEC 50%, #D1D1D1 100%);
background: -moz-linear-gradient(top, #ECECEC 50%, #D1D1D1 100%);
background: -webkit-linear-gradient(top, #ECECEC 50%, #D1D1D1 100%);
background: linear-gradient(top, #ECECEC 50%, #D1D1D1 100%);
box-shadow: 0 3px 3px rgba(0, 0, 0, 0.4), inset 0 1px 0 #FFF;
text-shadow: 0 1px #FFF;
margin: 0 -5px;
padding: 0 20px;
}
完成したデモは、下記のようになります。

対応ブラウザはIE以外のすべてです。
IE10はおそらく大丈夫だと思いますが、IE8/9は別のスタイルシートを用意する必要があります。
sponsors











