• 締切済み

display:table;を多段表示させたい

<style> .navi { display:table; } .navi li:nth-child(3n+1) { display:table-row; color:#F00; } .navi li { display:table-cell; width:50%; } /* 色づけ */ * {margin:0;padding:0;list-style:none;} .navi {width:600px;border-top:solid 1px #CCC;border-left:solid 1px #CCC;margin:0 auto;} .navi li {border-right:solid 1px #CCC;border-bottom:solid 1px #CCC;padding:5px;} </style> <ul class="navi"> <li>a</li> <li>b</li> <li>c</li> <li>d</li> <li>e</li> <li>f</li> </ul> こうすると、1,4,7,10…番目の要素が改行されますが、 <li></li>に何も入れないようにしなければならず、 行き詰ってしまいました。 table要素で多段表示させることはできないのでしょうか?

  • egtomo
  • お礼率59% (101/170)
  • CSS
  • 回答数3
  • ありがとう数13

みんなの回答

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

質問内容を伺う限りでは float が適切な気がしますが、いかがでしょうか。 http://jsfiddle.net/cjq0zc6g/1/ --- .navi { display: block; width: 600px; margin: 1em auto; padding: 0px; color: #F00; } .navi li { float: left; display: block; margin: 0px; width: 288px; border: solid 1px #CCC; } ---

egtomo
質問者

お礼

やはりfloatが適切ですか。 table-cellだと縦幅を気にせず使えるので便利だったのですが、 一旦あきらめることにします。 回答ありがとうございました。 PS:http://jsfiddle.net/cjq0zc6g/1/ このツールいいですね。初めて知りました^^

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

>table-cellで再現できないか調べています。  出来ません。  なぜ、table-cellの必要があるのでしょう。

egtomo
質問者

補足

>なぜ、table-cellの必要があるのでしょう。 もう少しでできそうだからです。 そもそもtr要素の指定ができるわけですから、 うまく使えばいけるんじゃないのかって思うのがそんなに悪いですかね? 得意なコーディングばかりではなく、 システムを使えば、タグは変更できないのでCSSだけでレイアウト変更するといったケースは大いにありますが、 それらの際に非常に役に立つと思ったので、試行錯誤しています。 こちらに質問させて頂いたのも、試行錯誤しましたが行き詰ってしまい、諦めようと思いましたが 他の方から見れば意外に簡単に再現できるかもしれないと思い、質問させて頂きました。 可能性を広げて頂ける助言があることを期待しましたが、 これを使う必要があるのかという回答を執拗にお送りされる貴殿に少々げんなりしています。 できる事なら二度と関わりたくないので、回答はされなくて結構です。 ありがとうございました。

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

明らかに変です。 <div class="nav">  <ul>   <li><a href="/a">a</a></li>   <li><a href="/b">b</a></li>   <li><a href="/c">c</a></li>   <li><a href="/d">d</a></li>   <li><a href="/e">e</a></li>   <li><a href="/f">f</a></li>  </ul> </div> じゃないかと、HTML5だと <nav>  <ul>   <li><a href="/a">a</a></li>   <li><a href="/b">b</a></li>   <li><a href="/c">c</a></li>   <li><a href="/d">d</a></li>   <li><a href="/e">e</a></li>   <li><a href="/f">f</a></li>  </ul> </nav> となるだろうからして・・・。文書構造だけは落ちがないようにリンクまで書いてください。  ひょっとして <div class="nav">  <ul>   <li><a href="/a">a</a>    <ul>     <li><a href="/b">b</a></li>     <li><a href="/c">c</a></li>    </ul>   </li>   <li><a href="/d">d</a></li>   <li><a href="/e">e</a></li>   <li><a href="/f">f</a></li>  </ul> </div> かも、文書構造は正確に!!  デザインは文書構造に反するものではありえないので  そのうえでどのように表示したいか・・  少なくともdisplay:table-cellは要らないかと

egtomo
質問者

補足

クラス指定がnaviとなっていたので、紛らわしいですね。 すみません。 目に入ったクラスをそのまま書き込んでしまいました。 こちらはナビゲーションではありません。 リストを縦に並べると横のスペースがあいてしまうため、 table、もしくはfloatで多段表示(今回は3列2段で表示)させていましたが、 table-cellで行えないものか調べています。 tr要素を入れると、その行は1列になってしまうため、 :afterなどの疑似要素などで試してみましたが、 枠の中から出せなかったため、tr指定ができませんでした。 <h3>タイトル</h3> りんご ばなな いちご もも  くり  かき といった感じで<ul>だけで多段表示させたいです。 >>>少なくともdisplay:table-cellは要らないかと table-cellで再現できないか調べています。 すみません。

関連するQ&A

  • firefoxのみテーブルのborderが消える

    firefoxのみテーブルの上下のborderの一部が消えてしまいます。 ウィンドウのサイズを変えると消える位置が変わります。 消えないための方法はありますか? 【CSS】 table.aaa{ width:750px; border-top:1px solid #333; border-bottom:1px solid #333; border-collapse:separate; border-spacing:0; text-align:center; margin-top:30px; } td.bbb, td.ccc{ padding:30px 30px; } td.ccc{ width:100px; background:#000; color:#fff; } ul{ width:750px; margin-left: -23px; overflow:hidden; } ul li { display: inline; width: 200px; margin-left: 30px; float: left; } ul li img { display: block; border: 1px solid #555; } 【HTML】 <table class="aaa"> <tr> <td class="ccc">テスト1</td> <td class="bbb">※※※※※※※※※※</td> </tr> </table> <ul> <li><a href="xxx.html#w1"><img src="sample.jpg" width="200" height="150" ></li> <li><a href="xxx.html#w2"><img src="sample.jpg" width="200" height="150" ></li> <li><a href="xxx.html#w3"><img src="sample.jpg" width="200" height="150" ></li> </ul> <ul> <li><a href="xxx.html#w4"><img src="sample.jpg" width="200" height="150" ></li> </ul> <table~…~</ul>まで10個ほど繰り返す。

    • ベストアンサー
    • HTML
  • ホームページ作成

    ナビゲーションを作成中なのですが、教えてください。 CSSで作ってみたんですが一番右と左の白の線の1pxを消したいんですが なにかいい方法ありますか? CSSは #navi { list-style-type:none; width:750px; margin: 0; padding: 0; border-left-width: 1px; border-left-style: solid; border-left-color: #FFF; } ul#navi li { float:left; width:150px; font-family: "A-OTF 新ゴ Pr5 EL"; font-size: 14px; } ul#navi li a { display:block; padding-top:5px; padding-bottom:5px; text-align:center; text-decoration:none; color:#FFF; width:149px; border-right-width: 1px; border-right-style: solid; border-right-color: #FFF; background-image: url(../images/templete/navi2.gif); です。 よろしくお願いします。

  • レイアウト、フッターが崩れてしまいます。

    横800pxの外枠にフッター部分を枠内の下に綺麗に収まるよう配置したいのですが、ブラウザーで確認するとフッター部が上に配置されてたり、mainのテキスト部分や外枠のレイアウトが表示されてなかったり、崩れてしまいます。またsafari、firefoxを使って確認してるのですが、同じように表示されません。どこが間違っているのか、教えて頂けると助かります。 *html <body> <div id="wrapper"> <div id="headir"> <h1>The highest hiphop design All group</h1> <div class="logo"><img src="#”></div> </div> <span id="menu"><ul><li><img src="#" alt="#" width="200" height="100" /></li><li><img src="#" alt="#" width="200" height="100" /></li><li><img src=”#" alt="#" width="200" height="100" /></li><li><img src="#" alt="#" width="200" height="100" /></li></ul></span> <h2><img src="#" alt="#" /></h2> <span id="sidemenu"> <ul> <li><a href="#">TOP</a></li> <br /> <li><a href="#">NEW</a></li> <br /> <li><a href="#">Line</a></li> <br /> <li><a href="#">Fine</a></li> <br /> <li><a href="#">Mail</a></li> <br /> <li><a href="#">TOP02</a></li> <br /> <li><a href="#">NEW02</a></li> <br /> <li><a href="#">Line02</a></li> <br /> <li><a href="#">Fine02</a></li> <br /> <li><a href="#">Mail02</a></li> </ul> </span> <div id="main"> ~~ ~~ </div> <div id="footer"> <span align="center">&copy;#</span> </div> </div> </body> </html> *css body { font-family: "MS P明朝", "細明朝体", "ヒラギノ明朝 Pro W3"; margin:0px; padding:0px; } #wrapper { margin: auto; padding:auto; height: 100%; width: 800px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-left-color: #000000; border-bottom-style: solid; border-bottom-color: #000000; } #headir { padding: 0px; margin:0px; height: 220px; width: 800px; } #headir h1{ margin: 0px; padding: 0px; height:20px; font-family: "MS P明朝", "細明朝体", "ヒラギノ明朝 Pro W3"; font-size:small; text-align: left; } .logo{ padding-bottom:20px;} #menu ul { padding-top : 0px; padding-left : 0px; padding-right : 0px; padding-bottom : 0px; margin-top : 0px; margin-left : 0px; margin-right : 0px; margin-bottom : 0px; width:800px; height:100px; list-style-type : none; } #menu li{ display:inline; padding-bottom:20px; } span#sidemenu { height: 300px; width: 50px; float:left; margin-top: -19px; margin-right: 8px; margin-bottom: 0px; margin-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #000000; border-right-color: #000000; border-bottom-color: #000000; border-left-color: #000000; font-size: smaller; } span#sidemenu li{ list-style-type:none; text-indent: -30px; } span#sidemenu{ padding-top: 20px; padding-right: 20px; padding-bottom: 20px; padding-left: 20px; } div#main { margin-top: 20px; margin-right: 40px; margin-left:30px; margin-bottom:20px; font-size: small; text-align: left; left: 150px; light: 50px; height: 400px; width: 600px; } div#main p { padding-left:10px; padding-light:20px; padding-top:10px; padding-bottom:20px; } #footer{ height:30px; width:100%; background-color: #CC9933; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border: 1; border-left-width: 1px; border-left: 1; z-index: 2; position: relative; margin: 0; padding: 20px 0 0 20px; }

  • html,cssプルダウンメニューについて教えてください。

    html,cssプルダウンメニューについて教えてください。 現在html,cssのみでプルダウンメニューを作成しているのです、解決のできない問題点が あり困っています。どなたか知識のある方、教えていただけると嬉しいです。 [問題点] オンマウスでプルダウンメニュー表示時、その表示分だけ、親要素の<div>の 高さが広がってしまい、それに伴いそれ以下のページ内要素全て下にずれてきます。 (分かりにく表現で申し訳ありません) 出来れば、プルダウンメニューが表示されても、親要素の高さは変わらず、以下のタグ要素の 上に重なって表示させたいと思っています。 対処法がお分かりになる方、教えて頂けると幸いです。 [html] <div id="main_menu"> <div id="navi"> <ul> <li class="navi_menu" onmouseover="this.className='navi_menu_on'" onmouseout="this.className='navi_menu'"> <a href="#"><IMG src="img/main_menu04.gif"></a> <ul class="sub"> <li><a href="#">サブメニュー 1</a></li> <li><a href="#">サブメニュー 2</a></li> </ul> </li> <li class="navi_menu1" onmouseover="this.className='navi_menu_on'" onmouseout="this.className='navi_menu'"> <a href="#"><IMG src="img/main_menu05.gif"></a> <ul class="sub"> <li class="navi_menu1"><a href="#">サブメニュー 1</a></li> <li class="navi_menu1"><a href="#">サブメニュー 2</a></li> </ul> </li> </ul> </div> </div> [css] #navi { width:993; margin:0 auto; border:0px solid red; padding:0px 39px 0px 0px; } #navi ul { margin: 0; padding: 0; list-style: none; } #navi li { float: left; margin: 0; width:120px; } #navi li.navi_menu1{ float: left; margin: 0; width:140px; } #navi li a { font-size: 14px; color: #ffffff; display: block; width: 100%; padding: 0px 0; text-align: center; font-weight: bold; text-decoration: none; background-color: #3399ff; } #navi li a:hover { color: #ffffff; background-color: #3366cc; } #navi ul.sub { background: #eeeeee; } #navi ul.sub li { padding:5px 0px 0px 0px; float: none; height:25; } #navi ul.sub li.navi_menu1 { float: none; height:25; width:180; } #navi ul.sub li a { color: #666666; background: none; font-size: 12px; font-weight: normal; padding:0px 0; border-top:0px solid #000099; } #navi ul.sub li a:hover { color: #ffffff; background-color: #ff9900; } #navi ul li.navi_menu ul { display: none; } #navi ul li.navi_menu_on ul { display: block; } #navi li.navi_menu{ border:0px solid #000099; } #navi li.navi_menu_on{ border:0px solid #000099;}

  • スタイルシートでのメニュー作成で

    今回初めてテーブルを使わずスタイルシートでナビゲーションを作成しているのですが 下記の方法ではメニュー内のテキストが左に寄ってしまいます。 出来ればすっかり左寄せではなく、左に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
  • <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
  • スタイルシートの横並びリスト中央配置について

    #Area_Navi { margin: 0; padding: 0; } #Area_Navi ul { margin-left: auto; margin-right: auto; text-align: center; list-style-type: none; list-style-position:inside; } #Area_Navi li { text-align: center; display: inline; padding: 0; margin-left: auto; margin-right: auto; float: left; width: 200px; } #Area_Navi a { display: block; border-left: 1px solid #000000; border-top: 1px solid #000000; border-bottom: 1px solid #000000; background-color: #FFFFFF; font-size: 20pt; padding: 3px; text-decoration: none; color: #000000; margin: 1px 0px; text-align: center; } スタイルシートは上記なのですが、うまく中央配置されず 半端に左寄せになっています。 windows7 firefox を使用しています。 調べて position:relative; と記載しても上手く中央寄せになりませんでした。 どなたか、教えて頂けませんか。 宜しくお願い致します。

    • ベストアンサー
    • CSS
  • 画像を使ったドロップダウンメニュー

    ホームページのメニューボタンにドロップダウンを使おうと思っています。 色々ネットから調べて自分で試したのですが、 オンマウスで画像を変えたりと、少し複雑な為、うまく表示できません。 文字数の関係上スタイルシートのコードだけしか貼れませんが、 よろしくお願いいたします。 /* ナビゲーション */ #navi_continer { position: relative; z-index:100; width: 400px; height:110px; } #navi { position: absolute; width: 100px; background-image: url(./img/menu/03a.jpg); height: 110px; } #navi ul { margin: 0; padding: 0; list-style: none; } #navi li { color: #fffff; float: left; width: 100px; margin: 0; } #navi li a { font-size: 14px; color: #ffffff; display: block; width: 100%; padding: 3px 0; text-align: center; font-weight: bold; text-decoration: none; background-image: none; } #navi li a:hover { color: #ffffff; background-image: url(./img/menu/03b.jpg); height: 110px; width: 100px; } /* サブメニュー */ #navi ul.sub { background: #eeeeee; } #navi ul.sub li { float: none; } #navi ul.sub li a { color: #666666; background: none; font-size: 12px; font-weight: normal; padding: 3px 0; border-top:1px solid #000099; } #navi ul.sub li a:hover { color: #ffffff; background-color: #ff9900; } #navi ul li.navi_menu ul { display: none; } #navi ul li.navi_menu_on ul { display: block; } #navi li.navi_menu{ border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; } #navi li.navi_menu_on{ border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; }button { background-image: url(%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3%201.jpg); }

  • ウィンドウ全体をテーブルで表示するには?

    できればウィンドウ全体をテーブルにする方法を教えて欲しいです。 左右上下に余白がなく、ウィンドウの大きさと同じ大きさでテーブルが表示される様にしたいのですが、下記のタグをどうさわっても余白ができてしまいます…。 何処が間違いなのか教えて頂けると有り難いです。 下手ですがイメージもかいてみたので見てみて下さい。 分かり辛い説明で申し訳ありませんが、よろしくお願いします。 【HTML】 <table width="100%" height="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr><td>たいとる</td></tr> <tr><td class="menu_td"><ul class="menu">めにゅー</ul></td></tr></table> 【CSS】 body{ background-image:url(***); background-repeat: repeat; } .menu_td{ padding-left:20px; height:20px; background-color:#fff; border-top:1px solid #ccc; border-bottom:1px solid #ccc; filter:alpha(opacity=75); -moz-opacity:0.75; } .menu{ margin:0px; padding:0px; list-style-type:none; } .menu li{ width:100px; height:20px; line-height:20px; float:left; } .menu li a{ padding-left:15px; height:20px; line-height:20px; background-image:url(***); background-position:0% 50%; background-repeat:no-repeat; display:block; } .menu li a:hover{ background-color:#efefef; } table{ border-collapse: collapse; border: 0px #999999 solid; color: #999999; font-size: 9pt; font-family: Verdana,Osaka,'MS UI Gothic'; } ul{ margin:0px; padding:0px 0px 0px 15px; list-style-type:circle; } よろしくお願いします。

    • 締切済み
    • CSS
  • スタイルシートでのレイアウトの際に、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