
コンテナクエリについて学ぶ
時代はコンテナクエリだと言われていますが、検索上位に表示される記事は似ています。そこで、できるだけ、オリジナルにしたいと思っています。以下を2カラム、いわゆる、ブログレイアウトにしたいと思っています。
下のものが、コンテナクエリで2カラムレイアウトを作りました。400pxまでは1カラムになります。
ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。
ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。
ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。
HTML
<div class="wrapper">
<div class="content">
<div class="left">
<div class="left__item">
<figure><img src="images/cloud.JPG"></figure>
<p>ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。</p>
</div>
<div class="left__item">
<figure><img src="images/tou.JPG"></figure>
<p>ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。</p>
</div>
<div class="left__item">
<figure><img src="images/sakura.JPG"></figure>
<p>ここに文章が入ります。ここに文章が入ります。ここに文章が入ります。</p>
</div>
</div>
<aside class="side-bar">
<p>サイドバー</p>
<figure><img src="images/yama.jpg"></figure>
</aside>
</div>
</div>
wrapperで全体を囲んでいます。contentでleftとside-barを囲んでいます。特に難しいものではありません。
CSS
.wrapper {
container-type: inline-size;
}
.content {
display: flex;
gap: 10px;
}
.left {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.left__item {
width: calc(50% - 10px);
}
@container (max-width:400px) {
.content {
display: block;
}
.left {
display: block;
}
.left__item {
width: 100%;
}
}
wrapperにcontainer-type: inline-size;を書き、コンテナクエリを宣言します。あとは、スタイルを書いていく。コンテナクエリで、コンテナが400pxまでのスタイルを書きます。
メディアクエリと大差はありません。@mediaか、@containerの違いかですが、理念が異なるので注意が必要です。
ポイントはこれになります。
HTMLとCSSを知っている人でしたら、コードをご理解頂くことは出来るかと思います。
ただ、メディアクエリの感覚で書くと、上手くいかないことが多いです。
flexと同じ場所に書けない?
上のコードで行くと、wrapperがなくても問題ないと思いますが、contentに書くと見事にアウトでした。少し前のデモサイトでは大丈夫でしたが、今回は無理でした。そういうものなのか。
ここは、より深く勉強したいですね。
flexとcontainerを共存させて大丈夫な場合とそうでない場合あり。コンテンツのレイアウトで使い分ける必要があるのかな。引き続き、検証したいと思っています。
さいごに
最近、デモサイトを作っていないので、少し忘れている部分がありました。模写コーディングをしようかな。考え中です。