• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:display:inlineで横並びにしたメニュー)

display:inlineで横並びにしたメニューのa:とa:hoverをbackground-imgでロールオーバーさせたい

このQ&Aのポイント
  • HTMLとCSSを使用して、display:inlineで横並びにしたメニューの要素をaタグとa:hover状態でbackground-imgを用いてロールオーバーさせたい場合、line-heightとheightを調整しても画像の高さは変わらないことがあります。
  • サイドメニューを作成する場合は、DL,DT,DD要素を用いてdisplay:blockとすることでうまく表示できます。
  • 具体的には、HTML側ではdiv要素にid属性を追加し、ul要素内にli要素とa要素を配置します。CSS側では、line-heightとheightの値を調整しても画像の高さが変わらないことに注意しましょう。また、a:hover状態の背景画像を変更するために、background-imgプロパティと:hoverセレクタを使用します。

質問者が選んだベストアンサー

  • ベストアンサー
  • DrFell
  • ベストアンサー率55% (305/551)
回答No.1

インライン要素とブロックレベル要素の違いを把握されていないようです。インライン要素は横にならぶ物ではなく、行の中に入るもので、幅や高さをもてません。marginも効きませんが、paddingなら効きます。 ブロック要素は前後に改行を含む矩形で、高さや幅をもてます。 今回liをインラインに変えられたので、liは高さも幅ももてません。その中の要素はaでやはりインライン要素です。同じく高さも幅ももてません。paddingならもてます。文字の長さにしたがって、aの幅が変わるのならpaddingで幅や高さを指定する手があります。 全menuに同じ幅と高さを指定したいなら、この場合、a要素をinline-block要素に見せかける方法があります。これは外向きにはinline内向きにはblockになる要素です。imgなどと同じように外に対しては改行されず、行内に含まれるが、中身は高さや幅を持てます。 知識として、出来上がりの見た目が同じタイプなら、liをdisplay:inlineにせず、float:leftにして、afterでclear:leftする方法がよく使われます。

papion0525
質問者

お礼

ありがとうございました。とりあえずliをfloat:leftに変更して、a:をdisply:blockにして解決しました。シンプルな形にするのもだいじですねぇ。