ウェブデザインをスタイルシートでおこなおう!

ホームページ作成スタイルシート編!スタイルシート倶楽部@ウェブマイスター
ホームページ作成総合支援ウェブマイスター
スタイルシート倶楽部トップ戻る
スタイルシートを使えばウェブデザインは思いのまま!
ページ管理も楽になり、大幅なデザイン変更も楽になっちゃうよ!
スタイルシートを使いこなして脱入門者になろう!

サイト作りの基礎を学びたい方は >> 本館 ウェブマイスター
さくらインターネット
たった125円という破格の値段で高機能なレンタルサーバー。業界最大手で安心して使えるよ。
3ヶ月無料キャンペーン実施中!! レンタルサーバーのSpeever
一番高いプランも今なら無料だよ

メニューリストのCSS術 総合編

前書き

メニューリスト作成技の総合編は、名の通り他ページで説明した関連技を組み合わせる総合技だ。
以下の技を組み合わせて使用する。

  1. ul要素の左余白を調節する。
  2. メニューリストのCSS術 a要素編
  3. メニューリストのCSS術 ul要素編

細かい説明は上記ページでされているので、ここでは簡単にスパっと説明する。

説明

まずは、以下のhtmlを作る。サイトメニューを表示させるのが目的だ。

<ul class="menulist">
<li><a href="[url]">.....</a></li>
<li><a href="[url]">.....</a></li>
<li><a href="[url]">.....</a></li>
</ul>

上記はいたってシンプルで理想的な構成と言えよう。
では、上記をCSS無しで表示してみる。

上記が、ノーマルのリスト。
では、CSSを適用させてみる。(当館トップで使っているスタイル)

上のは、前書きの1から3の全てを適用させた物だ。
IEでもマウスオーバー時にチラツキが無く、綺麗に画像が表示されるのがわかる。

では、ここで登場する新しいCSSの手順を説明する。
メニューリストのCSS術 a要素編で説明した方法のみだと、チラツキが生じる。
これを防ぐために、 メニューリストのCSS術 ul要素編を併用することになる。
すなわち、ul(もしくはli)要素で、常に画像を表示させておき、a要素のマウスオーバー時に、画像を上に乗せて表示させる。
これで画像が何も表示されない時間というのが無くなる。

CSS例

ul.menulist li{
background-image: url(/img/icon_menu.gif);
background-repeat: no-repeat;
background-position: left bottom;
padding: 0px;
margin-left: 5px;
list-style-type: none;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
} .menulist li a {
background-image: url();
background-repeat: no-repeat;
background-position: left bottom;
padding-left: 13px;
}
.menulist li a:hover {
text-decoration: underline;
background-position: left bottom;
background-image: url(/img/icon_menu_b.gif);
background-repeat: no-repeat;
}

だた、注意する点がある。
li要素の高さと、a要素の高さを一致させることは不可能ということ。
行の先頭の文字によっては、ズレが生じてしまう。(高さを絶対値で高さ指定してもだ)
そのため、座標を上から計算させる事はできない。中央に指定しても同じだ。
IEでは、唯一、下の座標だけは、大抵の文字でliとa要素が同じになるので、
background-position: left bottom;
という指定となる。
しかし、Netscapeでは、この下の座標も多くで異なるので、このままではNetscapeではずれて表示されるので注意。
回避するには、ブラウザを識別してCSSを自動で切り替えるようにするしかない。

たとえば、下記のような方法がある。( phpスクリプト使用例 )

<?php
$AGENT = $_SERVER['HTTP_USER_AGENT'];
if (ereg(" Netscape", $AGENT, $match)){
print "<link href=\"/nn.css\" rel=\"stylesheet\" type=\"text/css\">";
}
?>
| ウェブマイスタートップ | ホームページの作り方 | スタイルシート入門 | PHP Tips | CGI/PHPソフト配布 | 掲示板 | ブログ | ショッピング | リンク集 |
(C) 2005 - 2007 ウェブマイスター