うっかりWindows11にアップデートしてしまい、
「そろそろgridあたりを採用する時期かなぁ」
な気分になったので、別バージョンのテーマを製作開始。
※このサイトにも適用開始
Windows11でIEを使う
基本的に代理店様経由のサイトは、まだIE対応しなきゃいけない。
で、Windows11でもIEを起動できないとまずい。
Windows11でInternet Exploer11を起動する方法
いつまで使えるかはわからないが、現状では使える。とりあえず一安心。
以下、蛇足。
CSS grid
- IEを使えない環境が一気に増えそう
- ワードプレスのCSSエディタもだいぶ対応してきた
ので、今まで見送ってきたgridを使い始め。
「fr」は赤くならない。
「gap」は赤くなるけど、「grid-gap」はOK。
構文上は全く違うけれど、CSSの書き方はflexとtableの中間みたいなイメージ。
使い込むと奥が深いみたいだけど、タイル状に並べる程度なら大変便利。
ベンダープレフィクスを使えばIEにも対応できるけど、時期が時期なのでわざわざ対応はしない。
この状態だとIEではblock表示になって縦に積まれるだけ。まぁ大した問題ではない、とします。
タイル状に並べる
flexでタイル状に並べる際、一番面倒なのは子要素の間隔と思います。こんなのをメディアクエリーごとにずらずら書いてました。
.flex-container {
display: flex;
flex-wrap: wrap;
}
/* ---------- 一部抜粋 ---------- */
@media only screen and (min-width: 744px) and (max-width: 768px) {
.flex-c3 .flex-child {
width: calc( ( 100% - 3% * 1 ) / 2 );
margin: 2.99% 0 0 2.99%;
}
.flex-c3 .flex-child:nth-of-type( -n + 2 ) {
margin-top: 0;
}
.flex-c3 .flex-child:nth-of-type( 2n + 1 ) {
margin-left: 0;
}
}
@media only screen and (min-width: 769px) {
.flex-c3 .flex-child {
width: calc( ( 100% - 3% * 2 ) / 3 );
margin: 2.99% 0 0 2.99%;
}
.flex-c3 .flex-child:nth-of-type( -n + 3 ) {
margin-top: 0;
}
.flex-c3 .flex-child:nth-of-type( 3n + 1 ) {
margin-left: 0;
}
}
- 列数を変えたかったらcalcの計算変えて、n番目を変えて(一発置換できない!)
- 間隔を変えたかったら「3%」「2.99%」を検索&置換して(端数にしないとIEで段落ちする場合あり)
子要素への指定が必要なのでとにかくめんどくさい。
「space-between」の端数処理に「左寄せ」とかがあればこんなことにはならないんですが、、、
マイナスマージンを使えばもっと簡単と思いますが、それはそれで調整がいろいろと。
ホントは、メディアクエリー毎にもっと細かく制御してあったのですが、思い出しながら書いてる最中にも「これ、なんだっけ?」が多発して、うんざり。だいぶ簡略化して記事にしてます。
これがgridだと
.grid-container {
display: grid;
grid-gap: 1.5em;
}
@media only screen and (min-width: 744px) and (max-width: 768px) {
.grid-container.grid-columns-3 {
grid-template-columns: repeat( 2, 1fr );
}
}
@media only screen and (min-width: 769px) {
.grid-container.grid-columns-3 {
grid-template-columns: repeat( 3, 1fr );
}
}
で済む。
メディアクエリーごとに間隔を変えるとしても1行づつ足すだけ。
左右の並び順には専用のプロパティが無いみたいで、「direction: rtl」を使うしかなさそう。
子要素にも継承されちゃうので、「direction: ltr」のリセット指定が必須。
また、上下揃えの調整もflexの方がいろいろ細工しやすい感じ。
2列レイアウトで固定ページを装飾するような場合は、flexのままの方が無難かも。
そのほかのCSS
CSS変数や「aspect-ratio」も早く導入したいところなのですが、代理店様経由サイトには全く使えないので、しばらくは実験サイト専用かな。