リストタグを使ったメニューサンプル

リストタグを使ったメニューサンプルです。  CSSで、ボーダーと背景色による装飾、背景に画像使用して装飾、テキストを 画像 に置換、リストアイテムを横に並べる等をロールオーバーで変化させたサンプル があります。

Mac ie5、Win ie6、 opera7、 nn7、 firefox1で検証してます。 スタイルシートはブラウザによって解釈がま ちま ちですが、以上のブラウザでは同じように表示されます。(注:表示されないも のに は注意書きがあります。)

なんでリストタグかっていうと、携帯やテキストブラウザ等のスタイルシート 未 対応のブラウザからでも、文章構造を理解して表示してくれるからです。(注:nn4 等のスタイルシートの対応が中途半端なブラウザはスタイルシートを外すように 指定する事をお勧めします。)

このファイルはHTML 4.01 Transitionalでloose.dtdを指定しています。loose.dtdを指定していないバージョンはこちらにあります。 なお、loose.dtdについてはこちらをご覧下さい。

このページを作った動機。最近スタイルシートを使った「タグ」等を「配布」 しているサイトを良く見かけますが、Win+ie以外ではレイアウトが崩れて見れない物が、やたらと多い。 (しかもテーブルでレイアウト+CSSで装飾しながら) Win+ieでしか閲覧できないサイトを作るのは当人の勝手ですが、Win+ieでしか表示されない「タグ」や「テンプレート」を「配布」するなん てこれはもう公害です。 ということで、このページは公害対策用に作成しました。

スタイルシートをはずした状態

sample A

共通HTMLソース
<div id="ここに任意のID名">
<ul>
<li><a href="#">MENU 1</a></li>
<li><a href="#">MENU 2</a></li>
<li><a href="#">MENU 3</a></li>
<li><a href="#">MENU 4</a></li>
<li><a href="#">MENU 5</a></li>
</ul>
</div>

画像無しスタイルシートで装飾したサンプル

下記のサンプルはスタイルシートをはずした状態だと全て上の【sample A】よ う に表示されます。テキストブラウザ、携帯電話やスタイルシートに対応していな いブ ラウザでも箇条書きで表示されます。

フォントサイズとボックスは相対値で指定しているので、フォントサイ ズ をブラウザで大きくしてもレイアウトが崩れません。(下ボーダーがテキストに 被る 等)

といいますか、フォントを絶対値で指定するとユーザーがフォントサ イ ズを変えられないのって、Win ieくらいだけなんです。

アレンジの際の注意。リストアイテムを使った場合ブラウザによってインデントの幅が異なるので、リストアイテムはインライン要素にしてマーク、パディング、マージンは消してあります。 サンプルによってはULをインラインにしています。 「ul」「li」のdisplay,margin,paddingの値は変えるとブラウザによってはレイアウトが崩れます。

sample B

ボーダーと背景色

CSSソース
#ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; } #ID a { display:block; border:1px solid #111; background-color:#de8; font-size:small; padding:0.1em 0 0.1em 0.7em; text-decoration:none; color:#780;width:8em; margin:1px 0px; height:1.3em; } #ID a:hover { display:block; border:1px solid #000; background-color:#fc7; font-size:small; padding:0.1em 0 0.1em 0.7em; text-decoration:none;color:#a70; height:1.3em; }

sample C

ボーダースタイル「dotted」太さを「2px」

CSSソース
/* ◆ボーダースタイル「dotted」太さを「2px」◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; } #ID a { display:block; border:2px dotted #fa0; background-color:#fff; font-size:small; padding:0.1em 0 0.1em 0.5em; text-decoration:none; color:#a70;width:8em; margin:4px 0px; height:1.2em; } #ID a:hover { display:block; border:2px dotted #fa0; background-color:#fd8; font-size:small; padding:0.1em 0 0.1em 0.5em; text-decoration:none; color:#a70; width:8em; margin:4px 0px; height:1.2em; }

sample D

ボーダースタイル「double」太さを「4px」

CSSソース
/* ◆ボーダースタイル「double」太さを「4px」◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; } #ID a { display:block; border:4px double #780; background-color:#de8; font-size:small; padding:0; text-decoration:none; color:#780;width:8em; margin:2px 0px; height:1.2em; text-align:center; } #ID a:hover{ display:block; border:4px double #780; background-color:#efa; font-size:small; padding:0; text-decoration:none; color:#780; width:8em; margin:2px 0px; height:1.2em; text-align:center; }

sample E

左ボーダーのみ幅を太く、上下のマージンを消してつなげ、上下のパディングを広めにする。

CSSソース
/* ◆左ボーダーのみ幅を太く◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li {display : inline; padding :0; margin:0; } #ID a { height:1.7em; display:block; border-left:10px solid #ab6; background-color:#fff; font-size:small; padding:0.3em 0 0.1em 0.5em; text-decoration:none; color:#111;width:8em; margin:0px 0px; } #ID a:hover { display:block; border-left:10px solid #fd7; background-color:#fff; font-size:small; padding:0.3em 0 0.1em 0.5em; text-decoration:none; color:#111; width:8em; margin:0px 0px; height:1.7em; }

sample F

左、上を薄く、右、下を濃くして立体感を出す。(hoverでは逆)

CSSソース
/* ◆左、上を濃く、右、下を薄くして立体感を出す。(hoverでは逆)◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; } #ID a:hover { height:1.3em; display:block; border-left:2px solid #ab7; border-top:2px solid #ab7; border-right:2px solid #dea; border-bottom:2px solid #dea; background-color:#efb; text-align:center; font-size:small; padding:0.1em 0 0 0; text-decoration:none; color:#573; width:8em; margin:2px 0px;} #ID a { display:block; border-left:2px solid #dea; border-top:2px solid #dea; border-right:2px solid #ab7; border-bottom:2px solid #ab7; text-align:center; background-color:#d5e595; font-size:small; padding:0.1em 0 0 0; text-decoration:none; color:#573; width:8em; margin:2px 0px; height:1.3em;}

sample G

左、上を薄く、右、下を濃くして立体感を出す。(hoverでは逆)
inset、outset使用バージョン

CSSソース
/* ◆左、上を濃く、右、下を薄くして立体感を出す。(hoverでは逆)◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; } #ID a { height:1.4em; display:block; border:4px outset #fc5; background-color:#fea; font-size:small; padding:0.1em 0 0 0; text-decoration:none; color:#764;width:8em; margin:2px 0px; text-align:center; } #ID a:hover { display:block; border:4px inset #fc5; background-color:#fd7; font-size:small; padding:0.1em 0 0 0; text-decoration:none; color:#764; width:8em; margin:2px 0px; height:1.4em; text-align:center; }

sample H

左右のボーダーの幅を太く

CSSソース
/* ◆左右のボーダーの幅を太く◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; } #ID a { display:block; border-right:7px solid #bc7; border-top:1px solid #bc7; border-bottom:1px solid #bc7; border-left:7px solid #bc7; background-color:#fff; font-size:small; padding:0.2em 0 0 0; text-decoration:none; color:#675; width:8em; height:15px; margin:2px 0px; text-align:center; height:1.5em;} #ID a:hover { display:block; border-right:7px solid #cb7; border-top:1px solid #cb7; border-bottom:1px solid #cb7; border-left:7px solid #cb7; background-color:#fff; font-size:small; padding:0.2em 0 0 0; text-decoration:none; color:#575; text-align:center; width:8em; margin:2px 0px; height:1.5em;}

背景色、上下左右のボーダーの色やスタイルや幅を変えて、色々アレンジしてみてください。

画像とスタイルシート修飾

sample J

背景に画像を置く

このサンプルではテキストの左に画像を置いています。 「それならリストマークを画像にすればいいのでは」と思うかもしれませんが、リストマークを画像にすると、ネスケだとマーク(画像)とテキストの間に・文字分程の空白ができて右にズレます。 その空白をネスケに合わせて潰すとIE他のブラウザでは、左にズレたりします。文中ならさほど気になりませんが、ナビゲーションのようにあまり幅を取りたくない場合には、不向きです。

そんなわけで、リスト−マークを消してリストアイテムのマージンとパディングもつぶして、アンカーをブロックにして背景を置きました。 この方法だと前述のブラウザのデフォルト設定なら同じように表示されます。

もちろん背景全体に画像を置いてもOKです。

CSSソース
/* ◆背景に画像◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { padding :0; margin:10px 0; } #ID a { background-image:url(xxx.gif); text-decoration:none; background-repeat:no-repeat; padding-left:15px; font-size:small; color:#557; width:8em; margin:5px 0px; height:1.5em; } #ID a:hover { background-image:url(xxx.gif); text-decoration:none; background-repeat:no-repeat; font-size:small; color:#557; width:120px; margin:5px 0px; padding-left:15px; height:1.5em; }

sample K

全体に背景を置き、アンカーの背景に透過gifを使い背景を透かせる。

アレンジの際の注意:ロールオーバーでボーダーの色を変更するときは、上下のマージンを、同じ値にしてください。(【例】margin : 6px 0px 6px 0px;)Win ie6 では上下のマージンの値が異なるとロールオーバー時にマージンが無視されボックスが動きます。loose.dtdを指定していなければ、このバグは起きません。ボーダーの色を変更しないときも起きません。

CSSソース
/* ◆画像とスタイルシート修飾◆ */ #ID {border:1px solid #cdb; width:131px; height:9.5em; padding: 5px 0px 0px 0px; background:url(xxx.gif) repeat-x #fff 0% 100%;} #ID a { height:1.4em; width :130px; font-size :small; color :#675; display : block; text-decoration :none; border-top :1px solid #cdb; border-right :1px solid #ab9; border-bottom :1px solid #ab9; border-left :1px solid #cdb; margin : 2px 0px 2px 0px; text-align :center; padding :3px 0px; background-color : transparent;} #ID a:hover { height:1.4em; width :130px; font-size :small; color :#675; display : block; text-decoration :none; border-top :1px solid #ab9; border-right :1px solid #cdb; border-bottom :1px solid #cdb; border-left :1px solid #ab9; margin : 2px 0px 2px 0px; text-align :center; padding :3px 0px; background-image:url(xxx.gif); background-color : transparent; } #ID ul { margin : 0px; padding :0px; list-style-type : none; width :130px; display : inline; } #ID li { display : inline; padding :0px; margin :0; width :130px; }

テキストを画像に置き換える

テキストを画像に置き換えるにはテキストを「display:none;」で非表示にし 、親 要素(ブロック)の背景に任意の画像を指定します。

sample L

テキストを画像に置換える

アンカーごとに異なる画像を使用するので、HTMLもアレンジしてありますが、 こ の場合でも、スタイルシートをはずすと、【sample A】 のように表示されます 。

HTML と CSSソース
HTMLソース
<div id="ID">
<ul>
<li id="menu_a_1"><a href="#"><span class="span1">MENU
1</span></a></li>
<li id="menu_a_2"><a href="#"><span class="span1">MENU
2</span></a></li>
<li id="menu_a_3"><a href="#"><span class="span1">MENU
3</span></a></li>
<li id="menu_a_4"><a href="#"><span class="span1">MENU
4</span></a></li>
</ul>
</div>
CSSソース /* ◆画像で置き換え◆ */ #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:3px 0; } #ID #menu_a_1 a { background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat; margin:3px 0; padding:0; background-color:#fff;display:block;} #ID #menu_a_1 a:hover { background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat;margin:3px 0; padding:0;display:block;} #ID #menu_a_2 a { background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat; margin:3px 0; padding:0; background-color:#fff;display:block;} #ID #menu_a_2 a:hover { background-image:url(xxx.gif); width:47px; height:24px;background-repeat:no-repeat;margin:3px 0; padding:0;display:block;} #ID #menu_a_3 a { background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat; margin:3px 0; padding:0; background-color:#fff;display:block;} #ID #menu_a_3 a:hover { background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat;margin:3px 0; padding:0;display:block;} #ID #menu_a_4 a{ background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat; margin:3px 0; padding:0; background-color:#fff;display:block;} #ID #menu_a_4 a:hover { background-image:url(xxx.gif); width:47px; height:24px; background-repeat:no-repeat;margin:3px 0; padding:0;display:block;} .span1 {display:none;}

リストアイテムを横並びにする

リストアイテムを横並びにするには、「li」に「float:left;」入れます。 こ の場合でも、スタイルシートをはずすと、【sample A】 のように表示されます 。

sample M

横並び ボーダーと背景色


HTMLとCSSソース
/* ◆横並び◆ */ #ID {width:38em;height:1.5em; margin: 0; padding :0;} #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; float:left } #ID a {display:block; border-bottom:1px solid #230; border-top:1px solid #230; border-left:1px solid #230; background-color:#de8;font-size:small;padding:1px 0px 1px 0px;text-decoration:none;color:#780;width:7em;height:1.3em;margin:1px 0px;text-align:center;} #ID a:hover {display:block; border-top:1px solid #230; border-bottom:1px solid #230; border-left:1px solid #230; background-color: #fc7;font-size:small;padding:1px 0px 1px 0px;text-decoration:none;color:#fff;height:1.3em;text-align:center;} #ID #menu_left a {display:block; border:1px solid #230; background-color:#de8;font-size:small;padding:1px 0px 1px 0px;text-decoration:none;color:#780;width:7em;height:1.3em;margin:1px 0px;text-align:center;} #ID #menu_left a:hover {background-color:#fc7;display:block; border1px solid #230; background-color:#fc7;font-size:small;padding:1px 0px;text-decoration:none;color:#fff;height:1.3em;text-align:center;}

sample N

横並び ボーダーを点線にする


CSSソース
/* ◆横並び 2◆ */ #ID { width:38em; height:1.6em; margin: 0; padding :0; } #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0; float:left ; } #ID a { width:7em; display:block; border:2px dotted #fa3; background-color:#fea; font-size:small; padding:1px 0px 1px 0px; text-decoration:none; color:#750; height:1.3em; text-align:center; margin:0px 5px; } #ID a:hover { display:block; border:2px dotted #fa0; background-color:#fc7; font-size:small; padding:1px 0px 1px 0px; text-decoration:none; color:#fff; height:1.3em; text-align:center;}

sample O

テキストを画像に置き換え横並びする

基本は【Sample L】と同じで、そのまま横並びにしています。


HTML と CSSソース
/* ◆画像横並び◆ */ HTMLはsample Lと同じです。 #ID {width:500px;height:38px; margin: 0; padding :0;} #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0 3px;float:left; } #ID #menu_a_1 a{ background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat; margin:0; padding:0; background-color:#fff;display:block;} #ID #menu_a_1 a:hover { background-color:#fff; background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat;margin:0; padding:0;display:block;} #ID #menu_a_2 a { background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat; margin:0; padding:0; background-color:#fff;display:block;} #ID #menu_a_2 a:hover { background-color:#fff; background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat;margin:0; padding:0;display:block;} #ID #menu_a_3 a { background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat; margin:0; padding:0; background-color:#fff;display:block;} #ID #menu_a_3 a:hover {background-color:#fff; background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat;margin:0; padding:0;display:block;} #ID #menu_a_4 a { background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat; margin:0; padding:0; background-color:#fff;display:block;} #ID #menu_a_4 a:hover {background-color:#fff; background-image:url(xxx.gif); width:50px; height:38px; background-repeat:no-repeat;margin:0; padding:0;display:block;} .span1 {display:none;}

sample X

1文字めを装飾。擬似要素を使用している為、HTMLも少しアレンジしてあります。

Win ieではロールオーバー時に変化しません。といいますか、Win ieでは致命的なバグがあるので要注意です。Win ieのバグがなければHTMLのアレンジも必要ないです。この擬似要素ってcss1からあるのに何故未だにサポートしていないんだろうか、まあ大した要素ではないから大勢に影響ないけど。position:fixedもWin ieでは使えないし(略)

一部のブラウザでは下のボーダ−がテキストに被りますが、面白い効果になっているので、敢てそのままにしてあります。

HTMLソース、CSSソース
HTMLソース
 <div id="b_f_letter" >
 <ul >
 <li > <a href="#" class="fl" >MENU 1 </a > </li >
 <li > <a href="#" class="fl" >MENU 2 </a > </li >
 <li > <a href="#" class="fl" >MENU 3 </a > </li >
 <li > <a href="#" class="fl" >MENU 4 </a > </li >
 <li > <a href="#" class="fl" >MENU 5 </a > </li >
 </ul >
 </div >
 
 
CSSソース #ID ul { margin: 0; padding :0; list-style-type : none; } #ID li { display : inline; padding :0; margin:0;font-size:small; } #ID a {display:block; background-color:#fff;padding:2px 0px 2px 0px; text-decoration:none;color:#557;width:120px; width:120px; height:15px;margin:2px 0px;text-align:center;height:1.5em;height:1.5em;letter-spacing:0.5em;font-va riant:small-caps;border-bottom:1px dotted #99f; } #ID a.fl:first-letter {font-size:25px; font-weight:bold;color:#99c;font-style:italic;} #ID a:hover {color:#77f;}

copy right reserved by year of the cat home