
こんにちは!
CSS初心者で、今回初めてCSSを利用してホームページを作っています。
制作中に、行き詰ってしまい質問をさせていただきました。
メインナビの背景に画像、その上にリストのテキスト、そしてカーソルオーバーをすると、違う画像が表示するようにしています(ナビは、リストをfloatで横並びに表示しています)。
IEだと、問題なく正しい位置で表示されるのですが、Firefoxや Chromeだと、カーソルオーバー用の画像が下に少しずれて表示されてしまいます。
元凶を、探してみたんですが、なかなか見つけられません。
わかる方がいらっしゃったら、教えていただけないでしょうか。
お粗末なCSSコードですが(多分、無駄なコードがいっぱいありそう・・・)
のせさせていたたきました。
よろしくお願いします。
CSS
--------------------------------------------------------------
@import url(base.css);
body{
text-align:center;
margin-right : auto;margin-left : auto;
background-image : url(images/bg_brown.png);
background-repeat: repeat;
font-size : 90%;
padding-top : 0px;
padding-bottom : 0px;
margin-top : 0px;
margin-bottom : 0px;
height : 100%;
}
#wrap{
text-align : center;
margin-top : 0px;
margin-left : auto;
margin-right : auto;
margin-bottom : auto;
width : 100%;
padding-top : 0px;
}
#com_back{
background-image : url(images/bg_green.png);
background-repeat : repeat-x;
}
#g_navi_back{
width : 100%;
height : 80px;
text-align : center;
background-repeat : repeat;
background-image : url(images/bg_g_navi.png);
}
#g_navi{
overflow : hidden;
width : 900px;
margin 0 auto;
margin-left : auto;
margin-right : auto;
background-repeat : no-repeat;
background-image : url(images/navi_base.png);
height : 80px;
}
#g_navi ul{
padding-top : 0px;
padding-left : 0px;
padding-right : 0px;
padding-bottom : 0px;
margin-top : 0px;
margin-left : 0px;
margin-right : 0px;
margin-bottom : 0px;
}
#g_navi li{
text-align : center;
width : 180px;
float : left;
border-collapse : collapse;
background-position : left center;
top : 50%;
bottom : 50%;
letter-spacing : 1px;
line-height : 18px;
}
#g_navi li a{
display : block;
padding-top : 20px;
}
#g_navi ul li a:link{
text-decoration : none;
color : black;
}
#g_navi ul li a:hover{
background-image : url(images/navi_hover_g.png);
background-repeat : no-repeat;
background-position : center center;
height : 80px;
}
.inner{
text-align : left;
margin-top : 0px;
margin-left : auto;
margin-right : auto;
width : 900px;
background-repeat : repeat;
height : auto;
background-image : url(images/bg_white.png);
}
html
------------------------------------------------------------------------------
<!--外枠-->
<div id="wrap">
<!--ロゴ-->
<div id="com_back"><div id="com" ></div></div>
<!--ナビ-->
<div id="g_navi_back">
<div id="g_navi">
<UL style="list-style-type : none">
<LI><a href="index.html">ホーム</a></li>
<LI><a href="**********">ご案内</a></li>
<LI><a href="**********">ご利用方法</a></li>
<LI><a href="**********">イベント詳細</a></li>
<LI><a href="**********">アクセス</a></li>
</UL></div>
</div><!--ナビ_end-->
<div class="clear"><hr /></div><!--ナビfloatクリア-->
<div class="inner"><!--インナー-->
No.1ベストアンサー
- 回答日時:
そんな長くて煩雑だと・・・途中で読む気がうせてしまいました。
すみません。IEでのみ表示が違う原因で、最も多いのは互換モードでの動作です。--IEの解釈が間違っている--
HTMLを標準モードで起動するように書き換えてください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
・・・
詳しくは、
DOCTYPE スイッチ - Google 検索 ( https://www.google.co.jp/#hl=ja&safe=off&output= … )
など
HTML5を目前とした今は、transitinalは過去の技術です。1999年のHTML4.01の勧告以来「HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」といわれ続けてきたことですから。
HTMLを
Another HTML-lint gateway ( http://openlab.ring.gr.jp/k16/htmllint/htmllint. … )
などでチェックしながら、ウェブ標準にまず直してください。
それでスタイルシートを記述すれば、どのブラウザでも標準モードで起動し、ブラウザによる差は消えるでしょう。
なお、スタイルシートはHTMLが文書構造だけ記述してあれば、もっとシンプルに簡単になるし、わかりやすくなります。
昨日回答した
(CSS)縦メニューを一枚画像で作るには・・ - Webデザイン・CSS - 教えて!goo ( http://oshiete.goo.ne.jp/qa/7464353.html )
なんて、HTMLは極めて簡単で、スタイルシートもわかりやすいかと。
たぶん、あなたの期待されていることをHTMLさえ正しければ・・・HTMLは半分、スタイルシートは1/10で済むと思います。
★継承されるプロパティは、一度しか書かない
★同じ設定をする要素はグループ化する。
★デザインのためにidやclassは書かない
これだけで、随分とスリムになりメンテナンスも容易になります。
「例」
(CSS)縦メニューを一枚画像で作るには・・ - Webデザイン・CSS - 教えて!goo ( http://oshiete.goo.ne.jp/qa/7464353.html )
具体的には、HTMLは
<div class="nav">
<ol>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ol>
</div>
だけでよいのです。
とても丁寧な回答、ありがとうございました。
わかりづらいCSSながらも、解説していただいてとても助かりました。
おっしゃる通り、標準モードに切り替えることで、今回の問題は解決しました。
多分、スタイルシートやhtmlの知識が、不充分なのが一番原因なんですよね。
今後は、教えて頂いたサイトと、別で回答されている内容を参考に
スタイルシートとhtmlの簡素化を目指して、文書構造もきれいな
HPを作っていきたいと思います。
No.2
- 回答日時:
>IEだと、問題なく正しい位置で表示されるのですが、Firefoxや >Chromeだと、カーソルオーバー用の画像が下に少しずれて表示されてしまいます。
間違っているのはIEだね・・・(IEのバージョンにもよる)
>多分、無駄なコードがいっぱいありそう・・・)
ですね・・・ 半分以下に簡素化できますよ。
まずは、#1さんの通りDTD標準準拠に変更
作り直した方が後々の問題を回避できるけど、
とりあえずの応急処置なら、
#g_navi li a{
padding-top : 20px;
#g_navi ul li a:hover{
height : 80px;
実際の画像サイズが不明なので、良くわからないが、
この部分の高さが矛盾なのでは?
計算上では、21px程度のズレかな・・・
何故、a:hoverの時だけ height : 80px; なのかな???
わかりづらい、内容にも関わらず、回答していただいて
ありがとうございました。
問題点は、標準モードに切り替えることでクリアできました。
ご指摘の・・・
#g_navi li a{
padding-top : 20px
は、テキスト文字(「ご案内」等)が、垂直の中央にこさせるために
入れてます。
#g_navi ul li a:hover{
height : 80px
の件ですが、これを入れないと、画像が切れて表示されてしまうのです。
ナビのベースの画像の高さが80px、ロールオーバー用の画像の高さは80pxです。
表示させたい位置は、縦横間でセンターなのですが
80pxの指定を入れないと、ナビの「ご案内」等のテキスト部分にしか画像が反映されず、
そこからはみ出している画像部分は切れてしまうのです。
もっと、知識&技能があれば解決する問題なのでしょうが>_<;
ご指摘ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- オープンソース cssで中央寄せ 1 2023/05/19 06:25
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
表示倍率を変えるとレイアウト...
-
テーブル内の画像をマウスオー...
-
余分な縦スクロールバーが出て...
-
Media Queries 4 で 非推奨とな...
-
html/cssでembedとz-indexについて
-
テーブルのセル間に余白が空い...
-
form input テキストを上下中央...
-
widthやheightの数値に単位(px...
-
CSSがなぜかfont-sizeだけ効か...
-
ブログのテンプレート変更について
-
【HTML&CSS】フッター下部の余...
-
imgを含むliの高さが大きくなる...
-
W3Cのソースコードの検証サービ...
-
EXCELでHTMLのタグの入ったセル...
-
CSSでborderの指定を解除する記...
-
CSSの角丸での質問です。 今、C...
-
safariでの横並びリスト(List...
-
Chrome だと、画像が少し下に...
-
CSS:animation開始位置の設定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
form input テキストを上下中央...
-
余分な縦スクロールバーが出て...
-
画像イメージの上下左右、欲し...
-
CSSがなぜかfont-sizeだけ効か...
-
css初心者 フレックスボックス...
-
divで囲まれたpaddingの指定を...
-
表示倍率を変えるとレイアウト...
-
<div>と<div>の間の10px程の...
-
定義リストに下線をつけたいと...
-
【CSS】ヘッダーの高さが不明の...
-
W3Cのソースコードの検証サービ...
-
背景が下まで表示されないんです。
-
【HTML】【CSS】【Swiper】 元...
-
CSSでボックスのheightが0になる
-
div内に外部のurlを表示させたい
-
指定したborderの一部が表示さ...
-
div領域をウインドウサイズに合...
-
スクロールボックスを中央に配...
おすすめ情報