![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
CSS:hoverでナビボタンの背景画像を変えたいのですが・・
ナビボタンの左端に20pxくらいの余白をあけたいと思い、
#navi li{
list-style-type: none;
line-height: 38px;
font-size: 14px;
padding-left: 20px;
}
としていました。が、hoverで背景画像が変わるように設定したところ、
Paddingの部分だけリンクが無効になっていて、変更画像が右に20pxずれて表示されます。
(リンク元のテキストの始まる部分からしかリンクが有効にならないので)
display:block;の設定もしています。
結局、私の知識ではPadding-leftを削除して、テキストの左側にスペースを挿入するという
不細工な方法でしか思い通りの表示がされない状況です。
CSSでの正しい設定方法を教えていただけないでしょうか。
No.3ベストアンサー
- 回答日時:
No1です。
N02様がすでにお答えですが…
>「IEを除く」とは?
IEはリンク要素以外にhoverは設定されていません。
どのような全体構成なのか不明ですが、動作するようにするには
1)a要素をブロックにしてサイズを設定し、a要素の背景を変えるようにする
(文字の表示位置の調整が必要かと思われます。)
(=No2様のご回答)
2)IEでもリンク要素以外のhoverが可能なようにして、li要素の背景を変える。
↑javascriptのライブラリを利用。 (ぐぐればすぐに見つかると思います)
のような方法が考えらます。
*他のサイトで実現できているのたいていのことは、ご自分でも実現可能です。
ソースを見たり解説サイトを見るなどで、仕組みを研究してみましょう。
No.2
- 回答日時:
#navi li{ list-style-type: none; line-height: 38px; font-size: 14px; }
#navi li a:link { background: #39f;display: block;padding-left: 20px;}
#navi li a:visited { background: #39f;display: block;padding-left: 20px;}
#navi li a:hover { background: #06c; display: block;padding-left: 20px;}
#navi li a:active { background: #39f;display: block;padding-left: 20px;}
liでなく
a要素の中に記述してあげれば行けるんではないかと思うのですが、いかがでしょうか。
No.1
- 回答日時:
CSSはよくわかってませんが…
ご提示のものがli要素なので、
#navi li{
list-style-type: none;
line-height: 38px;
font-size: 14px;
padding-left: 50px;
background-image: url(back1.gif);
}
#navi li:hover {
background-image: url(back2.gif);
}
ってことでしょうか?
これはこれで、ずれることなく動作すると思いますけれど。(IEは除く)
あるいは、HTMLソースが
<li><a href="xxx">XXX</a></li>
のようになっていて、li要素に背景を設定しておいて、
a:hover { background-image: ~~; }
のようにa要素にhoverを設定しているのでしょうか?
もしそうであれば、a要素にはpaddingがかかっているのでご質問のようになるのは当然ですよね?
違ってたら失礼。
この回答への補足
ご指摘のとおりです・・・。
ということで、li:hoverに書き換えましたが、
今度はまったく動作しなくなりました。
(IE8だと動作すると思うのですが・・・「IEを除く」とは?)
#navi li{
list-style-type: none;
line-height: 38px;
font-size: 14px;
padding-left:20px;
background-image: url("./image/aaa.png");
background-repeat: no-repeat;
height: 40px;
width: 200px;
}
#navi li:hover{
background-image: url("./image/bbb.png");
}
結局、あの不細工な方法しかないのでしょうか・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS CSSがなぜかfont-sizeだけ効かない...記述がまちがっているんでしょうか 5 2022/04/09 17:52
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- オープンソース cssで中央寄せ 1 2023/05/19 06:25
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
footer を横幅いっぱいに広げる...
-
画像イメージの上下左右、欲し...
-
テーブルのセル間に余白が空い...
-
table周辺の隙間をなくしたい。
-
CSS:animation開始位置の設定
-
CSSでボックスのheightが0になる
-
定義リストに下線をつけたいと...
-
CSS検証サービス
-
CSS、width100%でもできる余白
-
heaerとfooterに背景画像が難し...
-
背景が下まで表示されないんです。
-
border-style:solidで文字がずれる
-
CSS3で角丸写真にシャドーを付...
-
form input テキストを上下中央...
-
ラジオボタンの大きさを変更し...
-
スタイルシートで<div>を使った...
-
css初心者 フレックスボックス...
-
定義リストで先頭にアイコン
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
CSS、width100%でもできる余白
-
CSSがなぜかfont-sizeだけ効か...
-
css初心者 フレックスボックス...
-
余分な縦スクロールバーが出て...
-
CSS:animation開始位置の設定
-
form input テキストを上下中央...
-
W3Cのソースコードの検証サービ...
-
スクロールボックスを中央に配...
-
CSSでボックスのheightが0になる
-
表示倍率を変えるとレイアウト...
-
【CSS】ヘッダーの高さが不明の...
-
Media Queries 4 で 非推奨とな...
-
div領域をウインドウサイズに合...
-
CSS(0の単位)について
-
divで囲まれたpaddingの指定を...
-
中点「・」の改行について
-
CSSで指定した背景画像にリンク...
おすすめ情報