Simplicity の 2 列・3 列の一覧リストの行をそろえる方法
完成図
Simplicity の一覧リストには、「タイル 2 列」と「タイル 3 列」があります。
このタイル 2 列と 3 列は、各記事の高さが違うと行が揃いません。理由は、Simplicity のタイル 2 列と 3 列はメイソンリースタイルのためです。Pinterest が採用し一躍脚光を浴びたメイソンリースタイルは、行の概念がありません。
しかし、Simplicity のフォーラムを見ていると、行を揃えたいと希望されている方が多いようです。もし、行を揃えたいとお考えであれば、Flexbox で一覧リストを表示させてはいかがでしょうか。Flexbox であれば、各記事の高さが違っても自動的に行が揃います。
テーマ設定で下準備
行が揃った 2 列や 3 列の一覧リストにするために、まず一覧リストのスタイルを「大きなエントリーカード」にします。
「大きなエントリーカード」であれば、タブレットサイズのレスポンシブ対応が簡単です。
CSS を指定
あとは子テーマの style.css で CSS を指定するだけです。
ただ、「エントリーカード全体をリンク化」が無効か有効かで、指定する CSS が異なります。
「エントリーカード全体をリンク化」が無効の場合
「エントリーカード全体をリンク化」が無効の場合は、下記の CSS を子テーマの style.css に追加します。「完全レスポンシブ表示を有効」が、無効であっても有効であっても同じ CSS です。
#list {
display: flex;
flex-wrap: wrap;
}
#main .entry {
margin-bottom: 16px;
}
@media screen and (min-width: 740px) {
#main .entry {
flex: 0 1 50%;
}
}
@media screen and (max-width: 740px) {
#main .entry {
flex: 1 0 100%;
}
}
.entry-large-thumb {
border: 1px solid #ddd;
border-bottom: none;
border-radius: 5px 5px 0 0;
margin: 0 8px;
}
.entry-large-thumnail {
display: block;
}
.entry-card-large-content {
border: 1px solid #ddd;
border-top: none;
border-radius: 0 0 5px 5px;
margin: 0 8px;
padding: 8px 16px;
}
.entry h2 a {
font-size: 18px;
}
.entry .post-meta {
font-size: 12px;
margin: 8px -16px;
padding: 0 16px;
}
.entry-snippet {
font-size: 11px;
}
.entry-read a {
font-size: 12px;
}
なるべくデフォルトのタイル2列と同じになるように指定していますが、余白は若干調整しています。
画面幅 740px 以上では 2 列、740px 以下では 1 列で表示されます。
画面幅 740px 以上で 3 列にするには、以下の部分の 50%
を 33.333333%
に書き換えます。
@media screen and (min-width: 740px) {
#main .entry {
flex: 0 1 50%;
}
}
ただ、メインカラムの幅が 740px の Simplicity のデフォルトでは、カードの 3 列は窮屈に感じるかもしれません。
「エントリーカード全体をリンク化」が有効の場合
「エントリーカード全体をリンク化」を有効にした場合は、HTML が変わります。そのため、無効の場合とは CSS が異なります。
有効にしている場合は、下記の CSS を子テーマの style.css に追加します。「完全レスポンシブ表示を有効」が無効であっても有効であっても同じ CSS です。
#list {
display: flex;
flex-wrap: wrap;
}
@media screen and (min-width: 740px) {
#list .hover-card {
flex: 0 1 50%;
}
}
@media screen and (max-width: 740px) {
#list .hover-card {
flex: 1 0 100%;
}
}
#main .entry {
border: 1px solid #ddd;
border-radius: 5px;
margin: 8px;
}
.entry-large-thumnail {
display: block;
}
.entry-card-large-content {
padding: 8px 16px;
}
.entry h2 {
font-size: 18px;
margin: 0;
line-height: 180%;
}
.entry .post-meta {
font-size: 12px;
margin: 8px -16px;
padding: 0 16px;
}
.entry-snippet {
font-size: 11px;
}
.entry-read {
font-size: 12px;
}
タイル 3 列にするには、以下の部分の 50%
を 33.333333%
に書き換えます。
@media screen and (min-width: 740px) {
#list .hover-card {
flex: 0 1 50%;
}
}
リストの端数対策
#list
に justify-content: center
を追加すれば、割り切れずに余った最後の記事を左右中央に配置できます。
これは「エントリーカード全体をリンク化」が無効であっても有効であっても同じです。
#list {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
お好みに合わせて、指定するかをお選びください。