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

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

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

URL用のテキストに枠線をつけました。通常はポインタを当てると下線がでると思いますが、最初に a{ text-decoretion: none; } でもって下線を消しました。 次に a hover{ border-style: solid; padding: 5px; } によって枠線を作りましたところ、ポインタを当てると枠線はでるのですが、<li>のテキストが5pxほどずれてしまいます。 cssで header ul li{ float: left; padding: 0 70px 0 0; } こんな感じになら設定しており、float: left;で左詰めにしているせいでポインタを当てて枠線をが出た時に枠線分だけ右にずれるのが原因ではないかななどと思っていますが、兎にも角にも分かる方がいらっしゃいましたらすみませんが教えてください。

  • HTML
  • 回答数2
  • ありがとう数6

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

  • ベストアンサー
  • 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% (5085/13290)
回答No.1

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

awakewalker
質問者

お礼

ありがとうございます!

関連するQ&A

  • スタイルシート・・・borderが適用されない

    横並びのメニューを作っていますがなぜかborderが適用されません。 多分余計な記述があるためだと思いますが分からなくなってしまいました。どなたか助けて下さい。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>テスト</title> <link href="test.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="header-menu"> <ul class="sample"> <li><A href="#">メニュー1</A></li> <li><A href="#">メニュー2</A></li> <li><A href="#">メニュー3</A></li> <li><A href="#">メニュー4</A></li> </ul> </div> </body> </html> .header-menu { width: 400px; overflow: hidden; } ul.sample{ margin-top:20px; font-size:12px; padding-left:0; margin-left:0; } ul.sample li{ display: inline; } ul.sample li a{ width:85px; text-decoration:none; color: #fff; background-color: #FF7F50; padding:3px 0 3px 0; margin-right:7px; width:85px; float:left; border-width:1px; border-color:#CCCCCC; text-align: center; } ul.sample li a :hover { background:none; }

    • ベストアンサー
    • HTML
  • 【CSSについて】リストをフロートするとfirefoxでボーダーが消える

    お世話になっております。 今回は、CSSの質問です。 IE6.0とFF3.0の違いなのですが、ソースを以下に記述します。 ***HTML*** <ul id="navi"> <li><a href="#">風景</a></li> <li><a href="#"> 生き物</a></li> <li><a href="#">建物</a></li> <li><a href="#">乗り物</a></li> </ul> ***CSS*** #navi { margin-left: 0px; padding-left: 0px; list-style-type: none; width: 600px; border-right: 1px solid #333333; } #navi li { float: left; border-left: 1px solid #000000; border-top: 1px solid #333333; border-bottom: 1px solid #000000; width: 149px; } #navi a { display: block; background-color: #ff9900; color: #FFFFFF; text-decoration: none; width: 149px; line-height: 30px; text-align: center; font-size: 12px; font-weight: bold; letter-spacing: 0.5em; } #navi a:hover { background: #00FFFF; color: #000000; } IEではボーダーで区切られたナビがキレイに表示されますが、FFでは右端のボーダーが消えてしまいます。 これもハックしなきゃならないものですか? とりあえず、背景に画像を使用することで逃げられるのですが、すっきりしませんので対処法を教えてください。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • スタイルシートでのメニュー作成で

    今回初めてテーブルを使わずスタイルシートでナビゲーションを作成しているのですが 下記の方法ではメニュー内のテキストが左に寄ってしまいます。 出来ればすっかり左寄せではなく、左に10px程空間を入れたいのですがどのようにすれば良いでしょうか。 CSS内の#menuに「margin-left:10px」としても反映されません。 ■■ CSS ■■ #menu {margin: 12px; padding: 0px; width: 180px; border-top: 1px solid #080240; border-right: 1px solid #080240; border-left: 1px solid #080240; font-size: 100%; } #menu ul {margin: 0px; padding: 0px; list-style: none; } #menu li {margin: 0px; padding: 0px; } ■■ HTML ■■ <ul> <li><a href="#">メニュー1</a></li> <li><a href="#">メニュー2</a></li> </ul> アドバイスいただけると助かります。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • HTML
  • スタイルシートでのレイアウトの際に、border枠から文字がはみ出てしまう問題について

    まず、ソースです。 [html] <ul id="greeting"> <li id="entrancephoto">  写真 </li><!-- entrancephoto --> <li id="word">  言葉 </li><!-- word --> <li id="news">  ニュース </li><!-- news --> </ul><!-- greeting --> [css] ul#greeting{ clear:both; display:block; width:570px; border-color:#D6757E; border-width:1px; border-style:solid; padding:20px 0px 20px 0px; list-style:none; } li#entrancephoto{ float:left; width:210px; vertical-align:middle; padding:0px 20px 0px 20px; } li#word{ float:left; width:320px; } li#news{ clear:both; float:left; width:530px; padding:5px 0px 0px 20px; margin:auto; } --ここまで-- このように、一番外をid:greetingで囲み、 borderを設定しています。 そしてその中に、3つの要素を<li>で書いています。 (上に段組2段、下に1段) ですので、borderで全ての要素を囲みたいのですが、 id:greetingで囲んでいるはずが下の3つの要素を 囲むことは無く、高さ40pxの枠(padding分)に なってしまい、文字量に関係無い設定になってしまいます。 (IEでは、文字量に合わせてheightが変わるのですが、 firefox、nsではできません) いろいろ試してみたつもりですが解決できませんでした。 お分かりになる方、何卒よろしくお願いします。

    • ベストアンサー
    • HTML
  • IE9でa:hoverが効かない

    IE9でa:hoverが効かなくて困っています。 droppy.jsというJavaScriptを使ってドロップメニューにしているのが原因でしょうか? 以下ソースです。 html <div id="navi"> <div class="inner"> <ul> <li><a href="サイトトップのURL">トップ</a></li><!-- ←ここのa:hoverは正常に動作する --> <li> <a href="メニュー1のURL">メニュー1</a><!-- ←ここのa:hoverは正常に動作する --> <ul> <li><a href="メニュー1-1のURL">メニュー1-1</a></li><!-- ←ここのa:hoverが効かない --> <li><a href="メニュー1-2のURL">メニュー1-2</a></li><!-- ←ここのa:hoverが効かない --> </ul> </li> </ul> </div> </div> css #navi { background: url(naviの背景画像のURL) repeat-x left top #000000; border-bottom: 1px solid #000000; -moz-box-shadow: 0 0 3px #484848;/* Firefox用 */ -webkit-box-shadow: 0 0 3px #484848;/* Safari,Google Chrome用 */ box-shadow: 0px 0px 3px rgba(0,0,0,0.5); } #navi .inner { margin: 0 auto; width: 940px; } #navi .inner ul li { float: left; margin: 15px 0; padding: 0 10px; position: relative; } #navi .inner ul li a { padding: 5px 11px; color: #ffffff; text-decoration: none; } #navi .inner ul li a:hover { border: 1px solid #ffffff; padding: 5px 10px; color: #333333; background: #ffffff; background:linear-gradient(#eaeeee, #e2e3e3); background: -moz-linear-gradient(top, #eaeeee, #e2e3e3);/* Firefox用 */ background: -webkit-gradient(linear, left top, left bottom, from(#eaeeee), to(#e2e3e3));/* Safari,Google Chrome用 */ filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startcolorstr=#eaeeee, endcolorstr=#e2e3e3);/* IE6,7 */ -ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startcolorstr=#eaeeee, endcolorstr=#e2e3e3)";/* IE8 */ -moz-border-radius: 5px; -webkit-border-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; behavior: url(/PIE.htc); } #navi .inner ul li ul { position: absolute; top: 39px; left: 0; zoom: 1; display: none; background: #dae4d7; border: 1px solid #8db0a0; border-top: none; border-bottom: none; font-size: 85%; width: 150px; } #navi .inner ul li ul li { float: none; padding: 0; margin: 0; background: none; } #navi .inner ul li ul li:hover { background: none; } #navi .inner ul li ul li a { color: #2d595f; text-align: left; display: block; background: url(icon画像のURL) no-repeat 5px center; border-top: 1px solid #ffffff; border-bottom: 1px solid #8db0a0; padding: 5px 5px 5px 20px; } #navi .inner ul li ul li a:hover { background: url(hoer用icon画像のURL) no-repeat 5px center #2d595f; color: #ffffff; -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-top: 1px solid #2d595f; border-bottom: 1px solid #2d595f; border-left: none; border-right: none; padding: 5px 5px 5px 20px; margin: 0; } どこがおかしいのかわからないのでnaviv部分全体を載せます。 宜しくお願いします。

    • ベストアンサー
    • CSS
  • マージン?空白?を変えたい

    以下のコードで左右のマージン?空白?を変えたいのですが、どうすればよいのでしょうか? 現状、ヘッダのメニューを9個までは普通に設置できるのですが、10個になると二段になってしまうので、ちょっとみっともないのです。文字サイズは変更したくないです。 /* ----- header-menu (default color #f3193d) --------------------------------------------------------------------------------------------------------------------------- */ .header_menu { float:right; display:inline; margin:20px 0 0 0; height:52px; background:url(img/header_menu_right.gif) no-repeat right top; } .menu { float:left; background:url(img/header_menu_left.gif) no-repeat left top; font-size:11px; height:52px; margin:0; } .menu, .menu ul { line-height:1; margin:0; padding:0; } .menu li { position:relative; float:left; border-left:1px solid #444; height:48px; margin:2px 0 0 0; z-index:10; } .menu ul li { height:auto; border-left:none; padding:0; left:auto; margin:0; } .menu a:link, .menu a:visited { color:#999; display:block; padding:19px 30px 14px; position:relative; } .menu a:hover { color:#f3193d; text-decoration:none; background:#333; } .menu ul { position:absolute; top:48px; left:0; display:none; opacity:0; width:200px; } .menu ul ul { margin:0 0 0 189px; top:0; }

    • ベストアンサー
    • HTML
  • 縦並びメニューの枠線が重ならない

    いつもこちらではお世話になり、ありがとうございます。 cssのli:hoverを使ってサブメニューを表示させようとしていますが、 縦並びのサブメニューの枠線が重なってくれません。 どこが間違えているのでしょうか。 ご指摘をお願いいたします。 (素人ですので、他にもつっこみどころがかなりあると思います。 すみません(汗)) 【html】 <ul class="menu"> <li><a href="menu1.html" >メニュー1</a></li> <li><a href="menu2.html">メニュー2</a> <ul> <li><a href="submenu1.html">サブメニュー1</a></li> <li><a href="submenu2.html">サブメニュー2</a></li> </ul> </li> <li><a href="menu3.html" >メニュー3</a></li> <li><a href="menu4.html" >メニュー4</a></li> </ul> 【css】 ul.menu { margin: 0px; padding:0; list-style-type : none; } ul.menu li { margin:0; float:left; width: 107px; line-height: 43px; } ul.menu li a{ display:block; text-align:center; text-decoration: none; background-image: url(images/navi_b.png); background-repeat: no-repeat; color: #202020; font-family: "メイリオ"; font-size: 11px; } ul.menu li a:hover{ background-image: url(images/navi_r.png); } ul.menu li ul{ display: none; position: absolute; top: 165px; left: 210px; list-style-type : none; background-image: none; } ul.menu li:hover ul{ display: block; } ul.menu li ul li{ clear: left; width: 106px; line-height: 35px; border: 1px #989590 solid; border-collapse: collapse; } ul.menu li ul li a{ background: none; background-color:#B28872; color:#ffffff; } ul.menu li ul li a:hover{ background: none; background-color: #643E3E; color:#ffffff; } よろしくお願いします。

    • ベストアンサー
    • HTML
  • Firefox、Netscapeでレイアウトが崩れる(スタイルシート)

    2段組レイアウト、 左がナビゲーションメニューで ロールオーバーボタンのような効果を出したくて、 IEとOperaでは正常に表示・動作したのですが FirefoxとNetscapeで、レイアウトが大きく崩れてしまいます。 メニュー箇所のソースは以下です。 【HTML】 <div id="side"> <div id="sidelist"> <ul> <li><a href="#">メニュー1</a></li><br> <li><a href="#">メニュー2</a></li><br> </ul> </div> </div> 【CSS】 #side{ float:left; position:absoulte; width:200px; height:100%; padding:0; background-color:#ffffff; } #sidelist ul{ margin:0; padding:0; list-style:none; } #sidelist li{ display:inline; } #sidelist a,#sidelist a:link #sidelist a:visited{ width:100%; height:100%; padding:10px 20px; border-bottom:1px solid #333333; background-color:#cccccc; color:#333333; text-decoration:none; } #sidelist a:hover{ width:100%; height:100%; paddint:0; margin:0; color:ffffff; background-color:#666666; } headerの幅を800px、mainの幅を600pxに指定したので ナビゲーションメニューとなるsideは 200pxに指定しましたが、 数値を減らしてみてもやはり崩れます。 FirefoxとNetscapeでも崩れずに 表示させる方法はあるでしょうか? よろしくお願いします。 なお、ブラウザは全て最新バージョンです。

    • ベストアンサー
    • HTML
  • WordPressで画像に枠が入ってしまいます。

    wordpress でホームページを制作していますが、写真に枠線が入ってしまいます。どの部分を消したらいいのかがわかりません。有料テンプレートを買ってしまって特にわかりません。。。どなたかお助けください。 CSSは @charset "UTF-8"; /* CSS Document */ /* -------------------------------------------------- setting ----------------------------------------------------- */ body { background:#ededed url(images/bg/default.gif);} p { font-size: 110%; line-height:1.6em } li{list-style:none;} .row { width: 980px; } @media only screen and (max-width: 767px) { p { font-size: 115%; } } /* -------------------------------------------------- header ----------------------------------------------------- */ header.row { padding-top:23px; padding-bottom:20px; } header.row .nine.columns{ padding:0; } header h1 { margin:0; padding:7px 0 0 0; line-height:1em; font-size: 36px; color:#666; font-family:Georgia, "Times New Roman", Times, serif; font-weight:lighter; float:left; text-align:left; } header img{ border:none; } header h1 a { color:#666; text-decoration:none; } header h1 a:hover { color:#fff; } header #tagline { color:#333; font-size:small; float:left; line-height:37px; padding-top:7px; padding-left:15px; } header #contact { text-align:right; } header #contact #phone { font-weight:bold; font-size: large; color:#666; line-height:1em; } header #contact #phone a { color:#666; } header #contact #icon img { margin-left:5px; vertical-align:middle;} header h3 { margin:0; margin-bottom:5px; padding-left:7px; font-size:14px; } header .widget_RGBdesign_Contact#contact h3 { border-left:0px #FFFFFF solid; padding-left:0px; padding-bottom:5px; } header .widget_search#contact h3, header .widget_search#contact label { display:none; } header form, header p { margin:0; padding:0; } header .widget_search#contact #s {width:70%; float:left; margin:0; padding:0;} header .widget_search#contact #searchsubmit {width:30%: float:right; margin:0; padding:0; font-size: 20px; margin-top:0.3em;} header .widget ul li { display: inline; } header:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; }

  • Mac IE5.2 のCSS対応

    これまでコーディングはテーブルレイアウトばかりでやってきまして、 急いでフルCSSサイト作りの勉強をしているものです。 Windows Firefox、IE6 Macのsafari ではほぼ意図した通りに表示できるようになったのですが、Mac IE5.2ではどうもうまくいかない箇所があります。 listタグにスタイルを指定している部分がまったく効いてないのです。 ブラウザの対応など問題はあると思うのですが、これくらいはできるハズですよね?(汗)できるものと思ってアレコレ試しているのですが。 初歩的な質問でお恥ずかしいのですが、よろしくお願いします。 CSSはこんな感じです。 =========================================================== #header { padding-top: 0px; margin-bottom:20px; position:relative; width:800px; height: 78px; background-color:#575757; } #header #logo { position: absolute; top: 0px; } #header ul { margin: 0; padding: 0 20px 0 20px; list-style: none; float:right; width:550px; background-color:#676767; vertical-align:bottom; } #header li { display: inline; font-size:x-small; line-height:25px; height:25px; list-style-type: none; padding-left: 2.8em; vertical-align:middle; float:left; } #header li a { color:#ffffff; text-decoration: none; padding-left:15px; background:url(../images/arrow_bl2.gif) left no-repeat; } #header li a:visited { color:#ffffff; } #header li a:hover { color:#12A0ED; } =========================================================== htmlのほうはこちらです。 <div id="header"> <a href="../index.html" title="tabi-memo" id="logo"><img src="../images/title_s.gif" width="250" height="78"></a> <ul> <li><a href="../index.html">HOME</a></li> <li><a href=".html">●●</a></li>

    • ベストアンサー
    • HTML