[Web] CSS3を活用したパン屑リストを作成してみた
画像ファイルを用いずに、CSSを用いて以下図のようなパン屑リストを作成してみました。
CSS3の内容も用いてますので、モダンブラウザーでの動作となります。
今日は、その実装方法をブログに書きたいと思います。

http://www.yoheim.net/labo/html5/css3/breadList.html
今回の色の設定は、灰色を基調とするようにしています。

続いて、先端を尖らせて、よりパン屑リストっぽくするCSSを適用します。
ここではCSS3の、transform, ::before, ::after, contentなどを用いて、疑似要素に対して変形をかけます。
最後に、currentクラスの設定や、マウスホバー時の設定を追加しました。
CSSで面白いことが出来そうだったら、またブログに書ければ良いなぁ。
最後までお読み頂きましてありがとうございました!
CSS3の内容も用いてますので、モダンブラウザーでの動作となります。
今日は、その実装方法をブログに書きたいと思います。

http://www.yoheim.net/labo/html5/css3/breadList.html
パン屑リストの土台となるHTMLを構築する
パン屑リストを構成するHTML要素は、ul, li, aタグで構成しました。<ul class="bread"> <li><a href="#">List001</a></li> <li><a href="#">List002</a></li> <li><a href="#">List003</a></li> <li class="current"><a href="#">List004</a></li> <li><a href="#">List005</a></li> </ul>この後の作業で上記HTMLにCSSを適用したいので、breadやcurrentといったクラス属性を定義しています。
パン屑リストとして表現する為のCSS
まずは、li要素を立て並びから、横並びにとして、a要素をブロックとして表現するようにせっていします。今回の色の設定は、灰色を基調とするようにしています。
.bread {
list-style : none;
overflow : hidden;
}
.bread li {
float : left;
line-height : 60px;
}
.bread li a {
display : block;
float : left;
padding : 0 40px 0 50px;
font-weight : bold;
color : #666;
text-decoration : none;
background: -moz-linear-gradient(left, #EDEDED, #CCCCCC);
background: -webkit-linear-gradient(left, #EDEDED, #CCCCCC);
background: -ms-linear-gradient(left, #EDEDED, #CCCCCC);
background: linear-gradient(left, #EDEDED, #CCCCCC);
background-color : #CCCCCC;
text-shadow : 1px 1px 0 #FFFFFF;
}
ここまでの設定で、以下のようなパン屑リストが作成出来ます。
続いて、先端を尖らせて、よりパン屑リストっぽくするCSSを適用します。
ここではCSS3の、transform, ::before, ::after, contentなどを用いて、疑似要素に対して変形をかけます。
.bread li a::before {
display : block;
width : 15px;
height : 30px;
border-right : 5px solid #FFFFFF;
margin : 0 -50px -30px auto;
background-color : #CCCCCC;
content : " ";
-webkit-transform : skew(30deg);
-moz-transform : skew(30deg);
transform : skew(30deg);
}
.bread li a::after {
display : block;
width : 15px;
height : 30px;
border-right : 5px solid #FFFFFF;
margin : -30px -50px 0 auto;
background-color : #CCCCCC;
content : " ";
-webkit-transform : skew(-30deg);
-moz-transform : skew(-30deg);
transform : skew(-30deg);
}
a::beforeとa::afterの疑似要素に対して、「content:" "」で空間を表現し、その空間に対して、
「transform : skew(degree)」で変形をかけることで、角が尖った部分を表現しています。最後に、currentクラスの設定や、マウスホバー時の設定を追加しました。
.bread li.current a {
color : #FFFFFF;
background : linear-gradient(left, #E69A4F, #BA4A0A);
background : -webkit-linear-gradient(left, #E69A4F, #BA4A0A);
background : -moz-linear-gradient(left, #E69A4F, #BA4A0A);
background : -ms-linear-gradient(left, #E69A4F, #BA4A0A);
background-color : #BA4A0A;
text-shadow : 1px 1px 0 #BA4A0A;
}
.bread li.current a::after, .bread li.current a::before {
background-color : #BA4A0A;
}
.bread li a:hover {
color : #FFFFFF;
background : linear-gradient(left, #CCCCCC, #999999);
background : -webkit-linear-gradient(left, #CCCCCC, #999999);
background : -moz-linear-gradient(left, #CCCCCC, #999999);
background : -ms-linear-gradient(left, #CCCCCC, #999999);
background-color : #999999;
text-shadow : 1px 1px 0 #999999;
}
.bread li a:hover::before, .bread li a:hover::after {
background-color : #999999;
}
最後に
CSSはCSS3になって表現力が格段に上がったというお話を良く聞きます。 今回使った、transform, linear-gradient, ::after, ::before, contentなどは、表現力が上がったなぁと実感できる CSSの無いようだなぁと思っています。CSSで面白いことが出来そうだったら、またブログに書ければ良いなぁ。
最後までお読み頂きましてありがとうございました!






