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に関してはまだビギナーなので、出来るだけ具体的で細かい解答をお願いいたします。
No.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;
}
を追加してみてください。
当方の環境では帳尻を合わせることに成功しました。
ありがとうございます!
無事に解決されました!
emの件はptに直しました。emの方が良いと言うような情報を目にした気がするのですが、あまりよろしくないのですね・・・
何はともあれ、解決して良かったです!
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS img と p を縦中央に配置したいのですがうまくいきません。 2 2023/01/12 14:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リストマーカーをボックス内に...
-
<table>の高さ固定。情報増加時...
-
html/cssの、navを2段にする...
-
番号付きリスト(<Ol><Li>・・...
-
html <li>の中の文字一部に色を...
-
ol要素の番号とリスト項目の離...
-
htmlの<ol>タグで、数字などを...
-
画像横のテキストをセンターに...
-
レスポンシブWebデザインでリン...
-
HTMLで組織図を作成する方法
-
「・」(黒い点)を非表示にした...
-
CSS「table-cell」で横並びにし...
-
親ページ側からインラインフレ...
-
list-style-type部分だけ大きく...
-
CSS使用。表のセルの中で、強制...
-
CSS3グラデーションで、右端だ...
-
HTMLで画像を3つ並べる方法
-
横並びのボタンの背景を片方だ...
-
カルーセルスライダー「slick.j...
-
ulとliで囲った文字の一部を変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
番号付きリスト(<Ol><Li>・・...
-
liタグの中に<p>タグやら<dl>を...
-
レスポンシブWebデザインでリン...
-
<table>の高さ固定。情報増加時...
-
<ul><li></li></ul>にするメリ...
-
リストの数字のフォントサイズ...
-
HTMLで組織図を作成する方法
-
ulタグやliタグの中でbrタグ...
-
divタグ内のコンテンツが重なっ...
-
画像にリンクを張ると画像がず...
-
複数行にまたがる括弧を表示し...
-
ページを開いているときのリン...
-
html <ul></ul>の並びで一行空...
-
html/cssの、navを2段にする...
-
HTML5のfooterに見出しを付けて...
-
<ul>~</ul>が二つ続くと間に改...
-
htmlの<ol>タグで、数字などを...
-
リンク文字同士の間隔を開ける...
-
CSSでつくったメニューのアニメ...
おすすめ情報