CSS コンテナクエリユニット|Webページの進化
Web制作の経験のある人でもなければ、いきなりCSSだのコンテナクエリだの言われても、なんのこっちゃって話だと思うので、まずは、普段、何気なく見ているWebページの仕組みをざっくりと書いて、その上で、コンテナクエリとコンテナ単位について書いてみたい。
Web制作の知識のある方は、こちらのページを読んでみて欲しい。
まだコンテナクエリとコンテナ単位は一般的には使えないようだが、使えるようになればWebページが少し進化するんじゃないかと思う。ちなみにおおもとの記事はCSS Container Query Unitsだ。
同じページがPC・タブレット・スマホで違った見た目になる仕組み
普段、何気なく見ているWebページだけれど、同じページがPC・タブレット・スマホでレイアウト等、違った見た目になっていることにお気づきだろうか?

Webページには要素と呼んでいる枠があり、大きな枠の中に小さな枠が入っており、その中に、また小さな枠が入っているといった入れ子の構造になっている。
上の図の左と右はディスプレイ幅の違いだと思って欲しい。
左の幅広のディスプレイは、A、B、Cという3つの枠が横並びに並ぶレイアウトになっている。こういったWebページのレイアウトや見た目は、現在のWebページではCSSというもので指定されている。
それが、右の幅の狭いディスプレイになると、A、B、Cの3つの枠が縦並びになる。これはCSSのメディアクエリというもので、ディスプレイの幅がある幅より小さくなったら、A、B、Cの横並びが解除されるように指定されているためだ。
現在見られる多くのWebページがこのメディアクエリによって、PC、タブレット、スマホで違ったレイアウトになるように指定され、作られている。
コンテナクエリ
上の図のA、B、Cの枠の中には、実際にはさらに枠が入れ子になっていて、タイトルや画像、文章などが入っている。今回、新たに出てきたコンテナクエリは、メディアクエリがディスプレイなどの全体幅の違いで見た目を指定していたのに対して、A、B、Cの枠の幅の違いによって、その中身の見た目を指定できるものだ。
上の図の左と右では、右の方が全体幅が狭くなるのに、中身のA、B、Cの3つの枠は、逆に幅が広くなっている。このような場合、それぞれの枠の中身が幅広ディスプレイの時と同じレイアウトだと、時として残念な見た目になることがある。コンテナクエリはそれぞれの枠幅に対して見た目を指定できるから、そういった事が解消されるわけだ。
WEB制作をやったことがある人は経験があるんじゃないかと思うけれど、サイドバーがスマホ画面ではメイン部分の下に落ちてくる。この場合、時として、残念な見た目になることがある。まあ、それもメディアクエリで細かく指定してやれば、直せるけれど、けっこう、めんどくさかったりする。それがコンテナクエリを使えば、楽にできるってことなんじゃないかと思う。
コンテナ単位
CSSでは幾つかの単位を使用している。分かりやすいものであれば、px(ピクセル)だ。例えば余白を50pxと指定すれば、50px分の余白ができる。1pxは画面上の1ドットだと、とりあえず考えて欲しい。つまり環境によって変化しない絶対的な単位だ。それに対して、例えば%は同じ50%でも、元になるものによって長さが変わる。こういった可変の単位がCSSでは幾つか使われている。emとかvhなんか、重宝してよく使われているいるんじゃないかと思う。
今回、新たに出てきたコンテナ単位は、それぞれの枠幅で可変的に変わる単位だ。時として、枠の中の余白やタイトルの文字の大きさなど、枠幅によって変えたい場合がある。これを従来のメディアクエリでやるすれば、PC、タブレット、スマホそれぞれで指定する必要があるけれど、コンテナ単位を使用すれば、枠幅に対して可変的だから、一発の指定で済むことになる。これは、かなり便利だと思う。
コンテナ単位には、枠幅に対して可変的なqwと枠の高さに対して可変的なqhの2つがある。
Webページの進化
思えばWebページも、メモ帳にhtmlを一生懸命書き込んでいた頃から、随分と進化したものだと思う。htmlのベタ打ちから、ホームページ作成ソフトを使うようになり、その頃はテーブル枠を使ってレイアウトを作っていたっけか。それが今では、ホームページ制作でhtmlなんかほとんど触らなくなってしまった。もっぱら触るのはCSSだ。
そして、そのCSSもどんどん進化している。かつては動きをつけたり、画像の見た目を変えたりなんてのはjavascriptの専売特許みたいなもんだったけど、今では、その多くが表面的にはCSSで済んでしまう。そして、メディアクエリの登場によって可変的なレイアウトのWebページへとシフトしてきた。
今回出てきた、コンテナクエリとコンテナ単位が一般的に使えるようになれば、さらなる進化になるような気がする。少なくともWebページの制作者にとっては、大きな変化になるだろう。
shin MICではWordPress初心者の勉強会を開いている。
今はまだCSSには触れずに、WordPressのテンプレートの機能だけを使ったサイト制作をやっているけれど、いずれはCSSにも踏み込んでいけたらと考えている。