- 締切済み
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要素で多段表示させることはできないのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- think49
- ベストアンサー率59% (285/482)
質問内容を伺う限りでは 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; } ---
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>table-cellで再現できないか調べています。 出来ません。 なぜ、table-cellの必要があるのでしょう。
補足
>なぜ、table-cellの必要があるのでしょう。 もう少しでできそうだからです。 そもそもtr要素の指定ができるわけですから、 うまく使えばいけるんじゃないのかって思うのがそんなに悪いですかね? 得意なコーディングばかりではなく、 システムを使えば、タグは変更できないのでCSSだけでレイアウト変更するといったケースは大いにありますが、 それらの際に非常に役に立つと思ったので、試行錯誤しています。 こちらに質問させて頂いたのも、試行錯誤しましたが行き詰ってしまい、諦めようと思いましたが 他の方から見れば意外に簡単に再現できるかもしれないと思い、質問させて頂きました。 可能性を広げて頂ける助言があることを期待しましたが、 これを使う必要があるのかという回答を執拗にお送りされる貴殿に少々げんなりしています。 できる事なら二度と関わりたくないので、回答はされなくて結構です。 ありがとうございました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
明らかに変です。 <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は要らないかと
補足
クラス指定がnaviとなっていたので、紛らわしいですね。 すみません。 目に入ったクラスをそのまま書き込んでしまいました。 こちらはナビゲーションではありません。 リストを縦に並べると横のスペースがあいてしまうため、 table、もしくはfloatで多段表示(今回は3列2段で表示)させていましたが、 table-cellで行えないものか調べています。 tr要素を入れると、その行は1列になってしまうため、 :afterなどの疑似要素などで試してみましたが、 枠の中から出せなかったため、tr指定ができませんでした。 <h3>タイトル</h3> りんご ばなな いちご もも くり かき といった感じで<ul>だけで多段表示させたいです。 >>>少なくともdisplay:table-cellは要らないかと table-cellで再現できないか調べています。 すみません。
お礼
やはりfloatが適切ですか。 table-cellだと縦幅を気にせず使えるので便利だったのですが、 一旦あきらめることにします。 回答ありがとうございました。 PS:http://jsfiddle.net/cjq0zc6g/1/ このツールいいですね。初めて知りました^^