• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:border-style:solidで文字がずれる)

border-style:solidで文字がずれる

このQ&Aのポイント
  • URL用テキストに枠線をつけた際、<li>のテキストが5pxほどずれてしまう問題が発生しています。
  • 原因としては、headerのul li要素に設定されたfloat: left;が枠線を当てると右にずれてしまうことが考えられます。
  • 解決方法としては、float: left;の代わりにdisplay: inline-block;を使用すると、ずれる問題を解消することができます。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

a要素は行内(インライン)要素です。この行内要素ブロック要素の区別はHTML/CSSで重要なので覚えておくこと。 HTML4.01  7.5.3 ブロックレベル要素と行内要素( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/global.html#h-7.5.3 ) CSS2.1  9.2.1 ブロックレベル要素とブロックボックス( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/visuren.html#block-boxes )  9.2.2インラインレベル要素とインラインボックス( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/visuren.html#inline-boxes ) ※ a要素をボックスにする。(display:inline-block) ※ ボックスモデルの寸法はpadding辺の内側になる。   hover時にborderやpaddingを指定するとずれるのであらかじめ透明色(transparent)で指定しておく。 結果・・・ header ul{ text-align:center;/* 中央配置floatは使わない */ width:100%;/* 適当な幅に */ margin:0 auto;padding:0; } header ul li{ list-style:none; display:inline-block; position:relative; width:20%;/* 適当な幅に */ padding:5px; } header ul li+li{ margin-left:70px;/* 二つ目以降は70px左をあける */ } header ul li a{ text-decoration:none; display:block; width:100%;height:100%;/* 直近のstatic以外の親ブロック(li)に対して */ border-bottom:solid 2px transparent; } header ul li a:hover{ border-color:red; }

awakewalker
質問者

お礼

詳しくありがとうございます!おかげで解決いたしました!

awakewalker
質問者

補足

具体例込みで大変ありがとうございます!明日チャレンジします!

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

a hover に padding: 5px を指定しているので5pxずれるのでしょう。

awakewalker
質問者

お礼

ありがとうございます!

関連するQ&A