味も素っ気もないリストから既に廃れ始めた感のあるグリッドに変えてみました。一覧性があるようなないような微妙な感じですね。すぐ戻しそう。
普通にfloat
プロパティを使って作りました。モックアップのコードで解説すると、各記事のHTMLが、
<section class="sub-news">
<h3><a href="http://example.com/blog/entry">Entry Title</a></h3>
<p>Entry Summary</p>
</section>
となっているので、このsection
要素の高さをうまく固定して並べます。
.sub-news {
margin: 0 0.7%;
float: left;
width: 32%;
font-size: 75%;
}
.sub-news h3 {
margin: 24px 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.sub-news p {
margin: 24px 0;
height: 84px;
display: block;
overflow: hidden;
}
並べるのは幅を適当に指定してfloat
プロパティで良いですが、ちゃんと高さを揃えてやらないとうまく並ばなかったりすることがあります。そのためにh3
要素ではwhite-space
とoverflow
プロパティを使って複数行にならないようにし、p
要素ではheight
とoverflow
プロパティで4行以上にならないようにします。実際のCSSは他のルールとの兼ね合いなどもあって、もうちょっと複雑になっています。高さの計算などはSassでやってたりとかするので、書くのは面倒ではないですけどね。
もっと手軽にjQuery MasonryとかBrickmaker-jsなど敷き詰める系のJavaScriptライブラリを使っても良いかもしれないですね。文字だとちょっと読みづらいかもしれませんが。
狭い画面では今までと同じようにリスト表示にしてます。HTMLはそのままでh3
でlist-item
にしてやってます。
CSS Multi-column Layout Moduleを使った奴も書いてみました。Opera 11で普通にずれました……。カラム切り替えのタイミングがちょっと違うようなので、ちゃんとcolumn-break-before
等で制御しないとダメそうですね。まぁそれよりもそもそもカラム・レイアウトのためのもので、グリッド・レイアウトのためのものではないので、読まれる方向と並び方が噛み合っていないですね。Grid Layoutさん……。
そのままだと空白がバラバラでなんか揃っているのに揃っていない感じだったので薄い半透明の背景をちょっと加えました。ボタンっぽいイメージになると思うので、ついでにa
要素で括って全体をクリックできるようにも。最初はなんかいまいちだなーとか作っときながら思ってましたが、段々気に入ってきました!