[CSS]縫い目風のかわいいデザインをスタイルシートで実装したナビゲーション
Post on:2011年6月22日
ぱっと見、画像を使用しているかのような縫い目風のデザインをスタイルシートで実装するナビゲーションを紹介します。
もちろん、画像は使っていません。
また、IE6などのCSS3非対応ブラウザも配慮した実装となっています。
[ad#ad-2]
実装のポイント
-
- スケーラビリティ
- アンカーのフォントサイズを変更することで、サイズを簡単に調整できます。
-
- 画像は無し
- 画像を使用していないため、メンテナンスが簡単です。またHTTPリクエストを減らします。
-
- カスタマイズ
- 簡単にドロップダウン型などに変更できます。
このスタイルシートのアイデアの元となったのは、LESSで使用されているダウンロードボタンです。
実装方法
HTML
HTMLはspan要素を使っている以外は、クリーンです。
このspanはスタイルをつけるのに必要で、疑似要素非対応ブラウザへの配慮となります。
<nav> <ul> <li><a href="#"><span>Home</span></a></li> <li><a href="#"><span>Categories</span></a></li> <li><a href="#"><span>About</span></a></li> <li><a href="#"><span>Portfolio</span></a></li> <li><a href="#"><span>Contact</span></a></li> </ul> </nav>
CSS:リストのスタイルをリセット
まずは、リスト要素のスタイルをリセットし、フロートで横並びにします。
nav ul{ padding: 0; margin: 0; list-style: none; } nav li{ float: left; }
CSS:a要素のスタイル
a要素では、角丸、ボックスシャドウ、グラデーション、テキストシャドウを使ってスタイルします。
縫い目のスタイルは次のspan要素で行います。
nav a{ float: left; color: #eee; margin: 0 5px; padding: 3px; text-decoration: none; border: 1px solid #831608; font: bold 14px Arial, Helvetica; background-color: #831608; background-image: -moz-linear-gradient(#bb413b, #831608); background-image: -webkit-gradient(linear, left top, left bottom, from(#bb413b), to(#831608)); background-image: -webkit-linear-gradient(#bb413b, #831608); background-image: -o-linear-gradient(#bb413b, #831608); background-image: -ms-linear-gradient(#bb413b, #831608); background-image: linear-gradient(#bb413b, #831608); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; text-shadow: 0 -1px 0 rgba(0,0,0,.8); -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3), 0 3px 0 rgba(0, 0, 0, 0.7), 0 2px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.5) inset; -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3), 0 3px 0 rgba(0, 0, 0, 0.7), 0 2px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.5) inset; box-shadow: 0 1px 0 rgba(255, 255, 255, 0.3), 0 3px 0 rgba(0, 0, 0, 0.7), 0 2px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.5) inset; } nav a:hover{ background-color: #bb413b; background-image: -moz-linear-gradient(#831608, #bb413b); background-image: -webkit-gradient(linear, left top, left bottom, from(#831608), to(#bb413b)); background-image: -webkit-linear-gradient(#831608, #bb413b); background-image: -o-linear-gradient(#831608, #bb413b); background-image: -ms-linear-gradient(#831608, #bb413b); background-image: linear-gradient(#831608, #bb413b); } nav a:active{ background: #bb413b; position: relative; top: 2px; -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.7) inset; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.7) inset; box-shadow: 0 0 3px rgba(0, 0, 0, 0.7) inset; }
CSS:span要素のスタイル
paddingを使用し余白をもたせ、dashedを使用して縫い目をつけます。
nav span{ border: 1px dashed #eba1a3; display: inline-block; padding: 4px 15px; cursor: pointer; background-color: #bb413b; background-image: -moz-linear-gradient(#d4463c, #aa2618); background-image: -webkit-gradient(linear, left top, left bottom, from(#d4463c), to(#aa2618)); background-image: -webkit-linear-gradient(#d4463c, #aa2618); background-image: -o-linear-gradient(#d4463c, #aa2618); background-image: -ms-linear-gradient(#d4463c, #aa2618); background-image: linear-gradient(#d4463c, #aa2618); } nav a:hover span{ background-color: #bb413b; background-image: -moz-linear-gradient(#aa2618, #d4463c); background-image: -webkit-gradient(linear, left top, left bottom, from(#aa2618), to(#d4463c)); background-image: -webkit-linear-gradient(#aa2618, #d4463c); background-image: -o-linear-gradient(#aa2618, #d4463c); background-image: -ms-linear-gradient(#aa2618, #d4463c); background-image: linear-gradient(#aa2618, #d4463c); }
完成したデモ
完成したデモをあらためて、見てみてください。
[ad#ad-2]
対応ブラウザ
対応ブラウザは主要なモダンブラウザ全てです。
IE6/7/8では角丸やグラデーションなどCSS3が適用されず、下記のように表示されます。
IE6でのキャプチャ
sponsors