• 締切済み

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要素で多段表示させることはできないのでしょうか?

みんなの回答

  • 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