WordPressの新しいエディタ「Gutenberg(グーテンベルク)」は使ってますか?
クラシックエディタに慣れてる人や、HTMLコードが書ける人にからは「使いにくいっ!」って意見も多いですよね〜
でも使ってみると、意外と便利なんです。
コードを書かなくてもカラムが使えたり、レスポンシブレイアウトが出来るといったメリットがあるので、HTMLの知識がないクライアントにも安心して編集を任せられます。
ただ1点!
「メディアと文章」というレイアウト要素だけは気をつけていただきたい。
↓こういうやつです。
メディアと文章のサンプル
インスタ蝿
インスタバエ(インスタ蝿)とは、現在女子学生を中心に寄生しているハエであり、寄生虫の一種。世界規模で流行の兆しをみせており、この昆虫に寄生された人間は、「インスタ映え」という謎の行動原理に支配されることが知られている。
ネット弁慶
ネット弁慶とは、Web上のブログや電子掲示板などでは居丈高な調子を見せるが、実生活ではおとなしく、小心者であるような人物のことである。
非コーダーには意外と難易度の高い、写真と文章を左右に配置する「2カラムレイアウト」が簡単にできる機能なのですが、いくつか問題点があるんです。
今回はその問題と解決法についてご案内します。
1. テキストが上になってしまう問題
モバイル表示は「写真が上でテキストが下」にしたいのに、「メディアを右に表示」した場合、「モバイルで重ねる」にチェックを入れるとテキストが上になってしまうんです。
理想
現実
要望としては以下の2つ。
- 写真をテキストの上にしたい
- テキストを画像の左右幅に合わせたい
「気にしない」というのも一つの案ですが、CSSで解決できます。
@media screen and (max-width: 480px) {
.wp-block-media-text {
display: block;
}
.wp-block-media-text .wp-block-media-text__content {
padding: 0;
}
}
説明すると、「メディアと文章」は「display: grid;」というグリッドレイアウト用のCSSで構築されているため、モバイルでは通常のブロック要素「display: block;」に指定し直しただけです。
後はテキストブロックに「padding: 0 8%;」と左右に8%の余白が設定されているので、「padding: 0;」で指定し直します。
2. IEで崩れてしまう問題
IEでは「display: grid;」が適用されないため、以下のように1カラムになってしまいます。
理想
現実
表示はされてますしIEユーザーは少数派なので、「気にしない」というのも一つの解決策だとは思いますが、こちらもCSSで解決できます。
@media screen\0 {
.wp-block-media-text {
display: flex;
align-items: center;
}
.wp-block-media-text.has-media-on-the-right {
flex-direction: row-reverse;
}
.wp-block-media-text .wp-block-media-text__media,
.wp-block-media-text .wp-block-media-text__content {
width: 50%;
}
}
まずは「display: grid;」を諦めて「display: flex;」を適用させます。
縦を中央揃えにするために、「align-items: center;」も記述。
写真が右のブロック要素「.wp-block-media-text.has-media-on-the-right」に対して、並び順が逆になる「flex-direction: row-reverse;」を適用。
写真とテキストそれぞれのブロックが半々になるように「width: 50%;」を記述します。
最後にIEだけに適用されるようにCSSハックのメディアクエリで囲みます。
CSSハックしなくても表示は問題ないと思いますが、Gutenbergの機能をなるべくそのまま使いたいので、あえてハックしてあります。
ちなみこれはIE8〜11に適用されるCSSハックなのですが、「display: flex;」はIE10以降にしか適用されませんのでご注意ください。
※マイクロソフトのIE10のサポートが来年1月いっぱいまでなので、IE11以下は基本無視するようにしてます。