paddingがきかない。ulはpaddingがきかないと言うことは無いのになぜきかないのでしょうか?

このQ&Aのポイント
  • paddingがきかない理由として、ul要素にはデフォルトのpaddingが設定されており、それを上書きしない限り適用されないためです。
  • 解決策としては、ul要素に対して明示的にpaddingを指定することで解決できます。
  • また、heightを使用して背景を指定することでもpaddingが効かない問題を回避することができます。
回答を見る
  • ベストアンサー

paddingがきかない。

下記サイトのパンくずリストにpaddingを加えたのですが上部にの背景が広がりません。 ulはpaddingがきかないと言うことは無いのになぜきかないのでしょうか? http://sample1.digi2.jp/yufu/inquery.html 仕方ないのでheightを使いました。 ul#topicpath{ background-image: url(img/base/blackground.png); width: 200px; height: 40px; white-space: nowrap; display: table-cell; vertical-align: middle; text-align: center; } ul#topicpath li { display: inline; color: #FFF; font-weight: bolder; } 原理主義者は答えなくていいです。

noname#226032
noname#226032
  • CSS
  • 回答数3
  • ありがとう数4

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

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

先ほどは横幅と誤解して筋違いの回答をしたようで・・ ulは、ブロック要素ですがそれ自体のサイズは抱合している要素に依存します。 したがって、高さはline-height:で指定しないとなりません。line-height:は継承されますので ul{line-height:40px;} とするのが正しい方法です。 また、ul{ border:solid transparent 1px; padding:20px 0; } とborderを指定すると背景色/画像はborder辺の内側になります。  ul自体に高さが存在しないのは、含まれるli(リストアイテム)要素をabsoluteなどで独立させると、高さが消えてしまうことでわかるでしょう。  詳しくは  ⇒8.4 パディングのプロパティ( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/box.html#padding-properties )

noname#226032
質問者

お礼

ありがとうございます。 ulは、ブロック要素なのにそれ自体のサイズではなく、中の要素の縦のサイズで縦のサイズを決めるのですね。 横はwidthで出来ますが。

その他の回答 (2)

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

>横はwidthで出来ますが。  そうです。ブロック要素なので、height:width:共にautoなのですが、ちょっと扱いが変わっていて、ブロック要素の場合は横幅一杯、縦は折り返しなどもあるため内容に追随・・・幅は無くても一杯、縦はなかったらゼロ。  置換インライン要素とか、非置換とか、私もこの部分はややこしくて実際にやってみないとと(苦笑)。  ⇒10 視覚整形モデル詳細( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/visudet.html )  ⇒10.6 高さとマージンの計算( http://momdo.s35.xrea.com/web-html-test/spec/CSS21/visudet.html#Computing_heights_and_margins )  私は原則としてline-height:を指定しています。テキストが中央に表示されますし、継承されるので・・

noname#226032
質問者

お礼

ありがとうございました。 また、今後ともコメントはお手柔らかにお願いします。

回答No.1

>ulはpaddingがきかないと言うことは無いのになぜきかないのでしょうか? ブラウザ等の環境にもよるので、決めつけるのは原理主義者のやることです。 で、ulではなく、liに反映させる方法は試したんですか?

関連するQ&A

  • リスト内での画像の下部揃え

    下記のように、上部テキスト下部画像の組み合わせで、横並びでリストを作りました。 テキストの量に合わせて、画像が上下するので、見栄えが悪いです。それをテキストは そのままの位置で、画像は下部でそろえたいと思います。それが不可能な場合 せめてすべて下部で合わせたいです。 display: inline-block; vertical-align: bottom; を記入しましたが、全く効果ありません。 どうすればよろしいのでしょうか? HTML <body id="news" class="s"> <div > <ul class="u1" > <li><span class="time">テキスト</span> <div class="news_img"> <img src="hoge.jpg"> </li> </ul> </div> </body> CSS #news.s ul { padding: 10px; width: 100%; } #news.s li { float: left; width: 170px; height: 240px; padding:0 10px 8px 0; font-size: 12px; list-style: none; display:block; vertical-align: bottom; } #news.s li img { display: inline-block; vertical-align: bottom; border: solid 1px silver; width: 140px; height: 140px; max-width: 140px; max-height: 140px; } .news_img { display: table-cell; height: 160px; text-align: center; width: 160px; margin-top: 10px; } div.news_img div { /* IE 7 */ display: inline; zoom: 1; }

    • ベストアンサー
    • CSS
  • float横並びにしたブロックの中のul/liを縦並びにさせたい

    float leftで横並びさせている中でul/liを縦並びにさせたい。現在はすべて横並びしてしまう。 (html) <div class="base"> <div class="box1"> <a href="#"><img src="#" alt=""></a> </div> <div class="box2"><img src="images/spacer.gif" width="1" height="1" alt=""></div> <div class="box3"> <ul class="list-y"> <li>ああああ</li> <li>いいいい</li> <li>うううう</li> <li>ええええ</li> <li>おおおお<a href="#">かかか</a></li> </ul> </div> </div> (css) ul{ margin: 0; padding: 0; list-style-type: none; text-decoration: none; display: block; } li { margin: 0; padding: 0; display: inline; } .base { width: 618px; height: 100px; margin: 0; padding: 8px 10px 0 10px; text-align: left; line-height: 1.5em; background-image: url(../images/content_bg.gif); background-repeat: repeat-y; } .base .box1 { width: 130px; height: 97px; margin: 0; padding: 0; float: left; outline: solid 2px black; } .base .box2 { width: 2px; height: 100px; margin: 0 5px 0 10px; padding: 0; float: left; border-right: dotted 2px #ccc; } .base .box3 { margin-left: 157px; padding: 0; font-weight: bold; text-align: left; } .list-y{ clear: both; } CSSに疎いのでよろしくお願いいたします。

    • ベストアンサー
    • CSS
  • paddingを加えたのですが上部にの背景が広がり

    下記サイトのパンくずリストにpaddingを加えたのですが上部にの背景が広がりません。 ulはpaddingが聞かないと言うことは無いですよね。 なぜきかないのでしょうか? http://sample1.digi2.jp/yufu/inquery.html

    • ベストアンサー
    • CSS
  • CSSの左横に隙間ができてしまいます。

    画像の左横に謎の隙間(8mmほど)ができて埋まりません。 そのため、4枚収めたい画像のうち、最後の1枚が改行されてしまっています。 padding や vartical-align、text-alignなど試してみましたが、ダメでした。 とても困っています、どなたかご教示くださいますようお願いいたします。 << CSS >> #header { width:940px; height:59px; margin: 0 0 20px 0; } #logo { width:300px; height:59px; float:left; margin: 0 20px 0 0; } #menu { width:620px; height: 59px; padding: 0; margin: 0; float:right; } #menu img { padding-top:8px; border:none; } #menu ul { margin:0; } #menu ul li { margin: 0px; padding: 0px; list-style-type: none; display:inline; float:left; } << HTML >> <div id="header"> <div id="logo"> <img src="img/logo.gif" width="298" height="59" alt="ロゴ"> </div><!-- /#logo --> <div id="menu"> <ul> <li><img src="img/btn_A.gif" width="194" height="51"></li> <li><img src="img/btn_B.gif" width="140" height="51"></li> <li><img src="img/btn_C.gif" width="149" height="51"></li> <li><img src="img/btn_D.gif" width="137" height="51"></li> </ul> </div><!-- /#menu --> </div><!-- /#header -->

    • ベストアンサー
    • CSS
  • CSSで画像を中央に持っていく方法。

    簡単な問題です。 画像を liの枠内の上下左右中央に配置するには、どうすればいいでしょうか? 画像のサイズがまちまちなので、 paddingなどで数値を指定するのは、NGです。 vertical-align:middleはだめでした。 text-align:centerで左右の中央に持って行く所まで、できました。 HTML ==================== <ul class="book_slide"> <li><img src="image/bookmihon.jpg" width="51" height="75" alt="*" /></li> <li><img src="image/bookmihon.jpg" width="51" height="75" alt="*" /></li> </ul> ====================== css ======================= ul.book_slide li{ float:left; height:114px; width:80px; border:1px solid #000; text-align:center; } =======================

    • ベストアンサー
    • CSS
  • ナビゲーション表示のCSSについて質問させて下さい。

    ナビゲーション表示のCSSについて質問させて下さい。 本を参考に以下のようなソースを試しているのですが、各メニューの幅を統一するためにはどうしたらいいのでしょうか? 試しにと、width: 200px;として、li内に設定したりしていますが、変わる気配がありません。 /*css*/ ul{ list-style: none; text-align: center; margin: 30px 0px; color: #fff; } li{ display: inline; white-space: nowrap; } li a{ text-decoration: none; padding: 10px 10px; color: #fff; background: transparent; background: #f60; } li a:hover { color: #fff; background: #fc0; } ~html~ <ul> <li><a href="A.html">項目A</a></li> <li><a href="B.html">項目B</a></li> <li><a href="C.html">項目C</a></li> <li><a href="D.html">項目D</a></li> <li><a href="E.html">項目E</a></li> </ul> お恥ずかしい質問かと思いますが、アドバイスのほど頂戴できたら幸いです。 お忙しいなか恐縮ですが宜しくお願い申し上げます。

    • ベストアンサー
    • HTML
  • <table>の高さ固定。情報増加時、高さ自動変化

    <table>で<td>の中に入れる文字の行が 多くなったり少なくなったりする形のもので 少ないときは高さを150pxに固定し、 多くなったときは行数に合わせて 自動的に高さが変化するものを作りたいです。 サンプルを作ってみました。 アドバイスをお願いいたします。 <html> <head> <title></title> <body> <table style="width:200px; height:150px; background-color:#ccc; vertical- align:top; display:block; margin:20px;"> <tr> <td> <ul> <li>あいうえお</li> <li>あいうえお</li> </ul> </td> </tr> </table> <table style="width:200px; height:150px; background-color:#ccc; vertical- align:top; display:block; margin:20px;"> <tr> <td> <ul> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> <li>あいうえお</li> </ul> </td> </tr> </table> </body> </html>

    • ベストアンサー
    • HTML
  • 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
  • 画像を横並びに2つと、その右側に文字入りのボックス

    画像を横並びに2つと、その右側に文字入りのボックスを横並びに2(よこ)×3段(たて)で配置したいのですが、IE7だけ2つの画像の下に、文字入りボックスが3(よこ)×2段(たて)で並んでしまいます。 IE8やそれ以外のブラウザは画像右側に文字入りボックスが2(よこ)×3段(たて)で並びます。 どのようにすれば、IE7も他と同じようになりますか。 よろしくお願い致します。 <div class="imagebox"> <p class="image"><img src="1.jpg" width="145" height="120" alt=""/></p> </div> <div class="imagebox" style="margin:0 20px 0 10px"> <p class="image"><img src="2.jpg" width="145" height="120" alt=""/> </div> <ul class="box"> <li>aaa</li> <li>bbb</li> <li>ccc</li> <li>ddd</li> <li>eee</li> <li>fff</li> </ul> <div style="clear: left;"></div> div.imagebox { background-color: #383838; width: 145px; float: left; margin: 0px; } p.image { text-align: center; margin: 0px; } ul.box { list-style:none; width:100%; margin: 0 0 5px 0; padding: 0; } ul.box li { width: 180px; height: 14px; padding: 4px 5px 4px; border-color: #000033; border-style: double; background: #373737; color: #7e7763; text-align: center; float: left; display: inline; list-style: none; margin: 2px; }

    • ベストアンサー
    • HTML
  • DIV内の padding について

    下記のようなCSSとHTMLファイルにてデザインをしています。 main 内にてpaddingを上下左右に10px 有効にしたいのですが、下記のような記述をCSSにした場合、padding が top (bottom?)にしか適用されません。左右に適用させるにはどうすればよいのでしょうか? よろしくお願いします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <link rel="stylesheet" media="all" type="text/css" href="index.css" /> </head> <body> <div id=wrapper> <div id=header></div> <div id=face></div> <div id=navi></div> <div id=main></div> <div id=footer></div> </div> </body> </html> body { background: url(img/bg.gif); margin: 0 auto; text-align: center; } #wrapper { width: 800; margin: 0 auto; background: #EEE; } #header { clear: both; height: 50px; text-align: left; background: #009 url(img/header.gif) no-repeat; border-bottom: 1px solid #FFF; } #face { clear: both; height: 200px; text-align: left; background: url(img/face.jpg) no-repeat; border-bottom: 1px solid #FFF; } #navi { float: left; width: 130px; height: 550px; background: #009; text-align: center; border-right: 1px solid #FFF; } #main { font-family: Maiandra GD, Verdana, Arial; font-size: 14px; line-height: 20px; text-align: left; padding: 10px; } #footer { clear: both; height: 50px; background: #009 url(img/footer.gif) no-repeat; border-top: 1px solid #FFF; }

    • ベストアンサー
    • HTML

専門家に質問してみよう