プロが教えるわが家の防犯対策術!

CSSで指定したblock要素の配置が、ブラウザ毎に異なるのを統一させたい

下記のようなhtmlとcssで、マウスオン時に画像が切り替わる横型メニューを作成しました。
※image/top_menu.gifには、ロゴと平常時メニューが全て含まれており、ロゴはブロック要素でハイパーリンク出来るようにしてあります。メニュー項目は、マウスオン時にオン用の画像を表示するようにしてあります。


<div id="top">
<ul>
<li class="logo"><a href="#"><span class="alt">logo</span></a></li>
</ul>
<div id="menu">
<ul>
<li class="home"><a href="index.html"><span class="alt">ホーム</span></a></li>
<li class="products"><a href="products.html"><span class="alt">商品情報</span></a></li>
</ul>
</div>
</div>


=============================以下CSS=============================
.alt {
display:none;
}

#top {
width:75em;
height:14.3em;
margin-left:auto;
margin-right:auto;
background:url(image/top_menu.gif) center no-repeat;
}
#menu {
width:74em;
position:static;
}
#menu ul {
padding:0 0 0 1em;
margin:0;
}
#menu li {
float:left;
}
#top ul {
padding:0 0 0 1em;
margin:0;
}
#top li {
list-style:none;
}
/*トップメニュー各項目(通常時)*/
li.logo a {
display:block;
margin-left:1em;
width:17.5em;
height:9em;
}
li.home a {
display:block;
width:14.1em;
height:4.5em;
margin-top:0.8em;
margin-left:1.3em;
}
li.products a {
display:block;
width:14.1em;
height:4.5em;
margin-top:0.8em;
}
/*トップメニュー各項目(マウスオン時)*/
.home a:hover {
background:url(image/on_home.gif) no-repeat;
}
.products a:hover {
background:url(image/on_products.gif) no-repeat;
}



FireFox、Safariでは意図した通りに表示されるのですが、
Windows7“以外の”IEでは、横位置は正常ですが、縦位置がずれてしまいます。
※どうやら、logoとmenuの間の余白が原因のようで、Windows7以外のIEにのみ余白が現れてしまうようです。
IE全体で異なるのであればまだ方法があると思うのですが、
「Windows7では今のままで、それ以外では表示位置を変えて・・・」
などと言うことが出来るのでしょうか?

本音を言うと、OSやブラウザの振り分けをせず、同じCSSで対応するのがベストなのですが。

出来るだけスマートな方法で解決したいと思っていますが、良い案が見つかりません。
どなたかご教授の程、よろしくお願いいたします。

※なお、CSSに関してはまだビギナーなので、出来るだけ具体的で細かい解答をお願いいたします。

A 回答 (1件)

>Windows7“以外の”IEでは…



おそらく問題は OS ではなく、バージョンだと思います。
当方 XP の IE8 で確認したところ、正常(Firefox と同じ)表示でした。
試しに IE7 で実験してみましたが、#menu ul li が数ピクセル下方向にズレた感じでレンダリングされました。
どうやら今回は IE7 がネックみたい。

おそらく原因は div#top をルートとする全ての要素の padding 及び margin が設定されていないために起こっているような気がします。
それとなぜか数値の単位が em って…
em は相対単位ですから、閲覧者がフォントサイズをいじると激しく変化しますよ?メニューなどの背景に画像を表示させてるようですし、これってよろしく…ないの、では…?

とりあえず細かい事は考えずに対処療法。スタイルシートの一番最後に

/* IE7用設定 */
*:first-child+html #menu {
position:relative;
top:-3px;
}

を追加してみてください。
当方の環境では帳尻を合わせることに成功しました。
    • good
    • 0
この回答へのお礼

ありがとうございます!
無事に解決されました!
emの件はptに直しました。emの方が良いと言うような情報を目にした気がするのですが、あまりよろしくないのですね・・・
何はともあれ、解決して良かったです!
ありがとうございました!

お礼日時:2010/03/18 01:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!