- ベストアンサー
CSSスプライトのpositionが効かない
- CSSスプライトを使用しているグローバルナビのbackground-positionが効かない問題について
- 質問者は現在サイト制作中で、グローバルナビのCSSスプライトで問題が発生している
- background-positionが正常に動作せず、HTMLとCSSのチェックをお願いしたい
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
background-positionの個別指定をしてるセレクタの方が 最初にbackgroundを指定してるセレクタより 指定が厳密でなく弱いからじゃないですかね 後ろに書いたところで #gnav ul li の指定の方が .gnav_2より強いでしょうから IDのほうがclassより強いので 個別のbackground-position指定を より厳密にするほうがいいでしょうね #gnav ul li.gnav_2 とかにするのが確実ではないでしょうか
その他の回答 (1)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
もっと簡単に・・ <div class="header"> <div class="nav"> <ol> <li><a href="/">ホーム</a></li> <li><a href="/intro">初めての方へ</a></li> <li><a href="/staff">スタッフ紹介</a></li> <li><a href="/price">料金</a></li> <li><a href="/access">アクセス</a></li> <li><a href="/FAQ">よくあるご質問</a></li> </ol> </div> </div> HTML5だと <header> <nav> <ol> <li><a href="/">ホーム</a></li> <li><a href="/intro">初めての方へ</a></li> <li><a href="/staff">スタッフ紹介</a></li> <li><a href="/price">料金</a></li> <li><a href="/access">アクセス</a></li> <li><a href="/FAQ">よくあるご質問</a></li> </ol> </nav> </header> div.header div.nav{text-align:center;height:60px;} div.header div.nav ol{list-style:none;margin:0;padding:0;font-size:0;} div.header div.nav ol li{display:inline-block;margin:0;padding:0;width:164px;height:60px;position:relative;} div.header div.nav ol li a{font-size:16px;display:block;width:100%;height:100%;background:url(images/gnav_on.png) gray;overflow:hidden;line-height:60px;text-decoration:none;} div.header div.nav ol li a:hover{text-align:left;text-indent:-200px;} div.header div.nav ol li a[href="/"]{background-position: -164px 0;} div.header div.nav ol li a[href="/intro"]{background-position: -328px 0;} div.header div.nav ol li a[href="/staff"]{background-position: -492px 0;} div.header div.nav ol li a[href="/price"]{background-position: -656px 0;} div.header div.nav ol li a[href="/access"]{background-position: -656px 0;} div.header div.nav ol li a[href="/FAQ"]{background-position: -820px 0 ;} ★せっかくスプライトを利用するのでしたら、その目的から当初の画像もスプライトのほうが良いです。 スプライトとは、画像を最初に読み込ませておくことで画像の変更をスムーズに行えるのが利点です。 そうすることで div.header div.nav ol li a{text-indent:-200px;overflow:hidden;text-align:center;} div.header div.nav ol li a[href="/"]{background-position: -164px 0;} div.header div.nav ol li a[href="/intro"]{background-position: -328px 0;} div.header div.nav ol li a[href="/staff"]{background-position: -492px 0;} div.header div.nav ol li a[href="/price"]{background-position: -656px 0;} div.header div.nav ol li a[href="/access"]{background-position: -656px 0;} div.header div.nav ol li a[href="/FAQ"]{background-position: -820px 0 ;} div.header div.nav ol li a[href="/"]:hover, div.header div.nav ol li a[href="/"]:focus{background-position: -164px 60px;} div.header div.nav ol li a[href="/intro"]:hover, div.header div.nav ol li a[href="/intro"]:focus{background-position: -328px 60px;} div.header div.nav ol li a[href="/staff"]:hover, div.header div.nav ol li a[href="/staff"]:focus{background-position: -492px 60px;} div.header div.nav ol li a[href="/price"]:hover, div.header div.nav ol li a[href="/price"]:focus{background-position: -656px 60px;} div.header div.nav ol li a[href="/access"]:hover, div.header div.nav ol li a[href="/access"]:focus{background-position: -656px 60px;} div.header div.nav ol li a[href="/FAQ"]:hover, div.header div.nav ol li a[href="/FAQ"]:focus{background-position: -820px 60px;} div.header div.nav ol li a[href="/"]:active{background-position: -164px 120px;} div.header div.nav ol li a[href="/intro"]:active{background-position: -328px 120px;} div.header div.nav ol li a[href="/staff"]:active{background-position: -492px 120px;} div.header div.nav ol li a[href="/price"]:active{background-position: -656px 120px;} div.header div.nav ol li a[href="/access"]:active{background-position: -656px 120px;} div.header div.nav ol li a[href="/FAQ"]:active{background-position: -820px 120px;} とかは無論、先でデザインを変えるのがスタイルシート側ですべてできます。 ⇒ナビゲーションリストを様々にデザインしてみよう。( http://www.ichiya.com/WebService/Howto/sample/HTML/nav/navigation1.html )
補足
わざわざありがとうございます。 ところで私の記述していたhtml cssにはpositionが効かないようなミスはありましたでしょうか??
お礼
ご回答ありがとうございます!! おっしゃる通りでした。ずーっと悩んでいたので本当に感激です。 また一つ勉強になりました。本当にありがとうございました。