
こんにちは、ログを探してみましたが似通ったものが見つからなかったので教えてください。
CSSを使ってのページデザインを勉強しています。ナビゲーションバーを、背景を使って画像にしようと思い、テキストインデントをマイナスにして消す方法を本で読みました。やってみたのですが、背景画像も一緒に消えてしまいました。
親ボックスで右寄せにすると、今度はテキストインデントは解除され、テキストと背景画像が重なって右寄せになってしまいます。
横幅700の親ボックスに600の子ボックスを右寄せにしたいので、以下のようなソースにしてみました。
HTML側
<div id="navi">
<ul id="navibar">
<li><a href="***" id="link1" title="リンク1">link1</a></li>
<li><a href="***" id="link2" title="リンク2">link2</a></li>
---同様にリンクが続く---
</ul>
</div>
CSS側
#navi{
width:700px;
text-align:right;
}
#navibar{
width:600px;
list-style-type:none;
background-color:transparent;
}
ul#navibar li{
width:120px;
float:left;
border:none;
display:block;
}
#navibar #link1{
width:106px;
height:20px;
text-indent:-500em;
background-image:url("images/link1bg.gif");
background-repeat:no-repeat;
}
#navibar #link2{
width:106px;
height:20px;
text-indent:-1000em;
background-image:url("images/link2.gif");
background-repeat:no-repeat;
} 以下同様に続く
どのように修正すれば背景だけ表示できますでしょうか。アドバイスお待ちしています。
No.2ベストアンサー
- 回答日時:
【html】
<div id="navi">
<ul id="navibar">
<li id="link1"><a href="#" title="リンク1">link1</a></li>
<li id="link2"><a href="#" title="リンク2">link2</a></li>
<li id="sample">sample</li>
</ul>
</div>
【css】
div#navi{
width:700px;
}
ul,
li{
margin:0;
padding:0;
}
ul#navibar{
list-style-type:none;
width:600px;
float:right;
}
ul#navibar li,
ul#navibar li a{
float:left;
text-indent:-9999px;
display:block;
width:106px;
height:20px;
margin-right:14px;
}
ul#navibar li#link1 a{
background:url(images/link1bg.gif) no-repeat left top;
}
ul#navibar li#link2 a{
background:url(images/link2.gif) no-repeat left top;
}
ul#navibar li#sample{
background:url(images/samplebg.gif) no-repeat left top;
}
text-alignは、ブロックレベル要素の中のインラインに対して効果があるものです。ブロックレベル要素自体に効果が出てしまうのはIEのバグです。
再びアドバイスいただき有難うございます。
この通りにやってみましたら、無事に解決できました!
何日もああでもないこうでもないと迷っていたのが嘘のようです・・・。
text-alignがブロック要素自体に効いてしまうのは
IEのバグだったのですか・・・トホホ。
本当にありがとうございました!
No.1
- 回答日時:
【html】
<div id="navi">
<ul id="navibar">
<li id="link1"><a href="***" title="リンク1">link1</a></li>
<li id="link2"><a href="***" title="リンク2">link2</a></li>
</ul>
</div>
【css】
div#navi{
width:700px;
}
ul,
li{
margin:0;
padding:0;
list-style-type:none;
}
ul#navibar{
width:600px;
float:right;
}
ul#navibar li{
float:left;
}
ul#navibar li a{
text-indent:-9999px;
display:block;
width:106px;
height:20px;
margin-right:14px;
}
ul#navibar li#link1 a{
background:url(images/link1bg.gif) no-repeat left top;
}
ul#navibar li#link2 a{
background:url(images/link2.gif) no-repeat left top;
}
こんな感じでどうでしょう。
ul要素の右寄せは、とりあえずfloatを使ったけど、要は左側に100pxの空きが欲しいならmargin-left:100pxとするとか、positionで左が100px空くようにすれば大丈夫だと思います。divの中身がulだけなら、div無くしてulにpadding-left:100pxでもいいですし。ま、そこら辺はこの部分以外のレイアウト次第ですね。
この回答への補足
アドバイスありがとうございます。書いていただいたソースで試したところ、ちゃんと背景画像だけが出ました!
ただ、実はナビバー内にリンクしたくない部分が含まれていまして、その部分は今まで、
<li><span id="sample" title="サンプル">サンプル</span></li>
のようにして、CSSは
#navibar #sample{
text-indent:-1500em;
background-image:url("images/samplebg.gif");
background-repeat:no-repeat;
}
という風にしていたのです。教えていただいたCSSだと、a要素に指定がありますが、こういうノンリンク部分が含まれる場合はどのようにすればよいのでしょうか。(すみません、先に記述しておくべきでした。)
右寄せは、画像(ナビゲーションバー)をピッタリ右寄せにしたかったので、手っ取り早く出来るのがテキストアラインかと思ったのですが、それがダメだったのでしょうか・・・。キッチリ数値で指定してみます。
回答いただいて二重に質問になってしまい申し訳ありません。宜しければまたアドバイスお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
画像リンクの下に文字を付けた...
-
XHTML+CSS で、ブラウザごとに...
-
css
-
ヘッダーの高さが合わない
-
IE・FirefoxでのCSS表示違いに...
-
Safariでheight:100%のボックス...
-
ドリームウィーバー8のプレビュ...
-
[CSS] レスポンシブにできない ...
-
サイト名を入れ方がわかりませ...
-
イラレで作った画像がぼやけて...
-
1カラムのリキッドレイアウトに...
-
li 黒丸含んで移動する方法
-
テーブルタグをCSSにしたい
-
ブロック要素の右下寄せ
-
font-sizeが効かない
-
html/cssでembedとz-indexについて
-
テーブルの線を上に引っ付けたい
-
Netscape-Navigatorについて教...
-
セル内のリンク文字を中央に配...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
CSSがなぜかfont-sizeだけ効か...
-
form input テキストを上下中央...
-
【CSS】ヘッダーの高さが不明の...
-
画像イメージの上下左右、欲し...
-
css初心者 フレックスボックス...
-
余分な縦スクロールバーが出て...
-
W3Cのソースコードの検証サービ...
-
表示倍率を変えるとレイアウト...
-
safariでの横並びリスト(List...
-
<div>と<div>の間の10px程の...
-
border-style:solidで文字がずれる
-
入力フォームとセレクトボック...
-
div内に外部のurlを表示させたい
-
divの中にspanを右寄せにするに...
-
dl,dt,ddタグでdtに対して、row...
-
divで囲まれたpaddingの指定を...
-
footer を横幅いっぱいに広げる...
-
CSSで指定した背景画像にリンク...
おすすめ情報