この効果を達成するためのいくつかの異なる方法があります、そしてそれは本当にあなたの好みに依存します。あなたが適切に仮定したように、あなたはこれを3つの異なる部分として考える必要があります。そのため、最も簡単な方法は、3つの異なる画像に分割することです。
解決策は、HTMLマークアップがどのように見えるかにも依存します。たとえば、次の場合のみ:
<a class="tab" href="#">My Tab</a>
次に、これを機能させるためにスタイルを設定できる要素は1つだけです(これにより、作業がはるかに困難になります)。
ただし、タブの周りに折り返し要素がある場合:
<li class="tab"><a href="#">My Tab</a></li>
次に、LI要素を使用して、目的の結果を達成するのに役立てることができます。
単一要素
私の最初の例では、操作する「アンカー」要素は1つだけでした。タブに使用する画像を調べると、画像に面取りがあり、単純な単色でも、単純な境界線のある単色でもないことがわかります。つまり、ストレートCSSではその効果を達成できないため、画像を並べて表示するにはCSSが必要になります。
2つのオプションがあります。
オプション1
画像を真ん中で分割して、画像を左側と右側の2つの画像に分割します。次に、画像編集アプリケーションで、キャンバスを右に、たとえば200ピクセル(またはタブの最大幅になると思われるもの)だけ拡張します。最後に、最も右端(これはタブの中央にあるはずです)を選択し、右の境界線まで水平方向に伸ばします。
最終的には、傾斜した左側、次に約200ピクセルの「中央領域」になります。
tab-left-side.png
これで、と呼ぶ2つの画像ができtab-right-side.png
ました。これらの2つの画像を使用すると、次のCSSでタブ効果を実現できます。
.tab {
background: url(tab-left-side.png) no-repeat 0 0;
overflow: hidden;
padding-left: 10px; /* width of the left edge of the tab, before the middle section begins. If you want more horizontal tabbing, add it to this value */
}
.tab:after {
content: ' ';
overflow: hidden;
width: 10px; /* width of the right edge of the tab */
background: url(tab-right-side.png) no-repeat 0 0;
}
オプション2
このオプションでは、画像を3つの画像に分割する必要があります。tab-left-side.png
、、、がtab-middle.png
ありtab-right-side.png
ます。ご想像のとおり、画像をこれらに適切に分割する必要があります。
これで、CSSを使用できます。
.tab {
background: url(../images/tab-middle.png) repeat-x 0 0;
overflow: hidden;
color: white;
float: left;
margin: 0 10px; /* must be same as side widths */
}
.tab:after {
content: '.';
overflow: hidden;
text-indent: -999px;
float: right;
width: 17px; /* width of the right edge of the tab */
background: url(../images/tab-right-side.png) no-repeat 0 0;
}
.tab:before {
content: '.';
text-indent: -999px;
overflow: hidden;
float: left;
background: url(../images/tab-left-side.png) no-repeat 0 0;
width: 17px; /* width of the left edge of the tab */
}
ダブルエレメント
double要素は、疑似クラスセレクターを使用する必要がないことを除いて、SingleElementの例のオプション1とまったく同じ方法で実行されます。疑似クラスセレクター(または少なくとも:before
と:after
)をサポートしない古いブラウザーをサポートする必要があるコードを記述している場合は、これが唯一のオプションです。
tab-left-side.png
ここでも、2つの画像をとに分割しますtab-right-side.png
。
次に、CSS:
LI.tab {
background: url(tab-left-side.png) no-repeat 0 0;
overflow: hidden;
padding-left: 10px; /* width of the left edge of the tab, before the middle section begins. If you want more horizontal tabbing, add it to this value */
}
LI.tab A {
content: ' ';
overflow: hidden;
width: 10px; /* width of the right edge of the tab */
background: url(tab-right-side.png) no-repeat 0 0;
}
セレクターを変更したことを除けば、オプション1の例と実質的に同じCSSです。