- ベストアンサー
CSSのリスト 背景画像が表示されない
- text-indentを利用して背景画像のみを表示させる方法について説明します。
- h1要素ではうまくいくが、li要素では背景画像が表示されない問題について解決方法を探ります。
- text-indentを使用しなければ背景画像は表示されるが、配置がずれてしまう問題についても触れます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんわ。 >背景画像のみを表示 text-indent -999pxする目的が良くわかりませんが・・・・ その背景画像(../images/menu/top.jpg)が、メニュー項目なのでしょうか?「背景」画像ですから、要素liの中身がない or 文字があっても text-indent -999px ならば、表示するモノがないという事になります。モノがなければ、実際のUA上では幅がありません。「背景」画像も表示されませんね。ただし、IE6の場合は全くないですが、IE7, Firefox, Opera, Safari だと、ほんのわずか、10pxくらいでしょうか、表示されます(4.01の場合)。 ulには、width, height と指定なさってらっしゃいますから、liに、画像メニューの幅と高さを指定すれば表示されるはずです。htmlソースのli/liの中身になにもなくても、です。 h1の場合は、width,height を指定なさってますから、当然h1は中身があってもなくてもそのサイズは確保されてます。ですから、背景画像も表示されますね。 横並びメニューをliで実現するのは、さほど難しいことではありません。しかし、margin, padding, をUA毎に細かく指定するか、最大公約数的に指定しないと、IE,Firefox,Opera,Safari等々、それぞれ異なる隙間が表示され、当然、横並びメニュー全体の幅も変わって来ます。ulに指定した幅を越える、または足りなくて右が広くあいてしまう、などの状態になったりします。 また、画像が下にずれこむ状態とのことですが、background: ;で指定するばあいは、その画像などのポジションは2つあります。水平方向と垂直方向です。要素の width, height が その要素の背景画像より大きい場合、ポジションを指定すれば解決です。center も使えますし、%も使えます。50% 50% = center center ですね。0% 50% = 要素左端の真ん中。50% 0% = 要素中央の上端、という状態です。
お礼
ありがとうございます。 text-indentは、SEOを意識してのことで、本に載ってあったものを使用していました。 お教えいただいたようにliにwitdhを指定し、ulのwitdhを消すとうまくいきました。 ありがとうございました。