ロールオーバーリンク6〜画像編3〜
ロールオーバーリンク5に続いて画像を使ったロールオーバーのやり方を紹介します。 今までは文字部分は画像ではありませんでしたが、今回は文字まで画像にしてしまいます。
1:画像を用意する
今回は次の3枚の画像を用意しました。
名前は左から順にroll6-a roll6-b roll6-cとつけてあります。
2:スタイルシートを書く
ulタグでメニューと、ロールオーバーリンク5を同時に使用するので、スタイルシートは結構複雑です。 ul#menu liというのはID=menuというulタグの中にあるliタグにのみ使うという意味です。
ul#menu{ list-style:none; width:100%; } ul#menu li{ list-style:none; float:left; width:81px; } ul#menu a{ display:block; width:81px; height:21px; text-indent:-100px; overflow:hidden; } a.home{ background-image:url(../../csstec/img/roll6-a.gif); } a:hover.home{ background-position:0px -23px; } a.mail{ background-image:url(../../csstec/img/roll6-b.gif); } a:hover.mail{ background-position:0px -23px; } a.photo{ background-image:url(../../csstec/img/roll6-c.gif); } a:hover.photo{ background-position:0px -23px; }
HTMLはこんな感じで書きます。
<ul id="menu">
<li><A href="#" class="home">HOME</A></li>
<li><A href="#" class="mail">MAIL</A></li>
<li><A href="#" class="photo">Photo</A></li>
</ul>
実際に見るとこんな感じです。
liのなかに文字を書いているにもかかわらず、実際には見えませんね。
理由は、ul#menu aに書いたtext-indent:-100px;とoverflow:hidden;を使って見えないところに飛ばしているからです。
これが今回の最大のポイントです。
ul#menu liのfloat:left;を取れば、縦に並べることができます。
ここまで来るとかなり高等なテクニックの部類に入ります。
使いこなすための+α
一枚の画像にまとめてしまうことも可能です。
ul#menu2{ list-style:none; width:100%; } ul#menu2 li{ list-style:none; float:left; width:81px; } ul#menu2 a{ display:block; width:81px; height:21px; text-indent:-100px; background-image:url(../../csstec/img/roll6-d.gif); overflow:hidden; } a.home2{ background-position:0px 0px; } a:hover.home2{ background-position:0px -23px; } a.mail2{ background-position:-83px 0px; } a:hover.mail2{ background-position:-83px -23px; } a.photo2{ background-position:-166px 0px; } a:hover.photo2{ background-position:-166px -23px; }
HTMLはこんな感じで書きます。
<ul id="menu2">
<li><A href="#" class="home2">HOME</A></li>
<li><A href="#" class="mail2">MAIL</A></li>
<li><A href="#" class="photo2">Photo</A></li>
</ul>
画像を1つにまとめると、使用する画像ファイルの数が減るほか、トータルのファイルサイズも小さくなります。 小さなことに見えるかも知れませんが、結構大きなメリットですよ。
05年6/26追記・修正
ゲストブックにてMacIEじゃ見えないっすという報告をもらったので、修正案を作りました。
あらゆるブラウザーに対応したい方はこちらを使ってください。。
<ul id="menu2">
<li><A href="#" class="home2"><span>HOME</span></A></li>
<li><A href="#" class="mail2"><span>MAIL</span></A></li>
<li><A href="#" class="photo2"><span>Photo</span></A></li>
</ul>
ul#menu2 aからtext-indent:-100px;とoverflow:hidden;を削除
そして次のスタイルを追加
#menu2 a span{display:none;}
ちなみに上のmenu2はこのMacIE用対策を施してあります。menu1の方も同様の手法で見えるようにできるとおもいます。