このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

CSSのテーブル的displayって、めちゃくちゃ便利だわー

次のような2つの箇条書きがあります。

<ul>
 <li>リンゴ</li>
 <li>オレンジ</li>
 <li>バナナ</li>
</ul>

<ul>
 <li>キャベツ</li>
 <li>ニンジン</li>
 <li>ダイコン</li>
 <li>ハクサイ</li>
 <li>ブロッコリー</li>
 <li>トマト</li>
 <li>キューリ</li>
</ul>

この2つの箇条書きを、左右横並びに配置したかったんですよ。

CSSでなにやら頑張ればできそうな気はしたんですが、頑張りたくない。古き悪しきテーブル・レイアウトでいいや、と割りきって次のようにしました。

<!DOCTYPE html><!-- -*- coding: utf-8 -*- -->
<html>
  <head>
    <meta charset="UTF-8" />
    <title>table</title>
    <style>
      table {
        width: 100%;
      }

      li {
        font-weight: bold;
      }
      #fruits {
        width: 50%;
        background-color: LightPink;
      }
      #vegetables {
        width: 50%;
        background-color: GreenYellow;
      }
    </style>
  </head>

  <body>
    <h1>テーブルを使用</h1>

    <table>
      <tr>
	<td id="fruits">
	  <ul>
	    <li>リンゴ</li>
	    <li>オレンジ</li>
	    <li>バナナ</li>
	  </ul>
	</td>

	<td id="vegetables">
	  <ul>
	    <li>キャベツ</li>
	    <li>ニンジン</li>
	    <li>ダイコン</li>
	    <li>ハクサイ</li>
	    <li>ブロッコリー</li>
	    <li>トマト</li>
	    <li>キューリ</li>
	  </ul>
	</td>
      </tr>
    </table>

  </body>
</html>

これでだいたいは希望がかなえられたのですが、ちょっと気になる点もあります。

テーブルセル内では、上下方向にセンタリングが働くらしくて、左側の「リンゴ」と右側の「キャベツ」の高さがズレてます。これイヤですねー。ここでまたCSSで頑張れば調整できるんでしょうが、頑張りたくないからテーブル使ったのにぃ。

テーブルセルの内部がdivのように素直にレイアウトされればいいのだけどなー。divがそのままテーブルセルになってくれるといいのだけどなー。

ん? 待てよ、なんかそんなんあったような気がする。テーブルの要素じゃないものをテーブルみたくレイアウトしてくれるやつ … … ありました、ありましたねー; CSSのdisplayプロパティの値に、table, table-row, table-cell ってのが使えるんだって。ホホー。これを使ってみよう。

<!DOCTYPE html><!-- -*- coding: utf-8 -*- -->
<html>
  <head>
    <meta charset="UTF-8" />
    <title>table-like</title>
    <style>
      #outer { /* table like */
        display: table;
        width: 100%;
      }
      #inner { /* tr like */
        display: table-row;
      }

      li {
        font-weight: bold;
      }
      #fruits { /* td like */
        display: table-cell;
        width: 50%;
        background-color: LightPink;
      }
      #vegetables { /* td like */
        display: table-cell;
        width: 50%;
        background-color: GreenYellow;
      }
    </style>
  </head>

  <body>
    <h1>テーブル的displayを使用</h1>

    <div id=outer>
      <div id=inner>
	<div id="fruits">
	  <ul>
	    <li>リンゴ</li>
	    <li>オレンジ</li>
	    <li>バナナ</li>
	  </ul>
	</div>
	<div id="vegetables">
	  <ul>
	    <li>キャベツ</li>
	    <li>ニンジン</li>
	    <li>ダイコン</li>
	    <li>ハクサイ</li>
	    <li>ブロッコリー</li>
	    <li>トマト</li>
	    <li>キューリ</li>
	  </ul>
	</div>
      </div>
    </div>

  </body>
</html>

おおー、いいんじゃないんですか。

古いブラウザーでは効かないとかの問題がありますが、使える状況ならコレ便利です。