CSSの進化と新機能——random()関数からアンカー配置、CSS製DOOMまで

CSSの進化と新機能——random()関数からアンカー配置、CSS製DOOMまで

CSSの進化と新機能——random()関数からアンカー配置、CSS製DOOMまで

Web制作の最前線では、CSSの進化が凄まじいスピードで進んでいる。かつてはJavaScriptや複雑な画像処理が必要だった表現が、今や数行のスタイルシートで完結する時代だ。

2026年3月に公開されたCSS-Tricksのレポートによれば、ネイティブなランダム値の生成や、要素同士を動的に紐付けるアンカー配置など、制作ワークフローを根本から変える機能が次々と登場している。これらの新機能は、コードの簡略化だけでなく、パフォーマンスの向上にも直結する。

本記事では、最新のCSSプロパティがもたらす可能性と、実務での活用方法について詳しく解説していく。従来の常識を覆すようなテクニックが、現代のWebデザインにどのような変革をもたらすのかを見ていこう。

CSSでランダム値を生成する「random()」と「random-item()」

CSSでランダム値を生成する「random()」と「random-item()」

これまでCSSでランダムな値を扱うには、Sassなどのプリプロセッサで事前に計算するか、JavaScriptでインラインスタイルを書き換える手法が一般的だった。しかし、現在策定が進んでいる「random()」および「random-item()」関数は、CSS単体で動的なランダム性を実現する。

random()関数の仕組みと構文

Alvaro Montoro氏の解説によれば、random()関数は単に数字をランダムに出すだけでなく、特定の識別子(キャッシュキー)を用いて値を制御できる。例えば、同じ要素内では同じランダム値を保持し、異なる要素間では別の値を出すといった高度な指定が可能だ。

/* 1remから2remの間でランダムな幅を指定 */
width: random(--w element-shared, 1rem, 2rem);

上記のコードでは、`–w`という識別子を指定することで、要素間で値を共有するか、個別に生成するかを制御している。これにより、レイアウトが崩れない範囲での適度なバラツキをCSSだけで表現できる。これは、背景の装飾ドットや、アニメーションのディレイ(遅延時間)を個別に設定する際に極めて有効だ。

リストから選択するrandom-item()

一方、random-item()は、指定した値のリストからランダムに1つを選択する関数だ。数値だけでなく、色やキーワードも対象にできるため、デザインのバリエーションを増やすのに役立つ。

/* 指定した色の中からランダムに適用 */
color: random-item(--c, red, orange, yellow, darkkhaki);

この機能により、リロードするたびにボタンの色が変わるようなUIや、リストアイテムごとに異なるアクセントカラーを割り振る作業が、JavaScriptなしで完結するようになる。Webサイトに「遊び心」や「オーガニックな変化」を加えたい開発者にとって、待望の機能と言える。

clip-pathを活用した「折り畳み角(Folded Corners)」の表現

clip-pathを活用した「折り畳み角(Folded Corners)」の表現

紙の端を折ったような「折り畳み角」のデザインは、古くからWebデザインで好まれてきた。かつては背景画像や擬似要素を駆使した複雑な実装が必要だったが、Kitty Giraudel氏は「clip-path」を用いたモダンな解決策を提示している。

clip-pathによる形状の切り出し

clip-pathとは、要素を特定の形状で切り抜くためのプロパティだ。Giraudel氏の手法では、多角形(polygon)を指定して要素の角を削り、そこに擬似要素(::before, ::after)で「折れ曲がった破片」と「影」を配置することで、リアルな立体感を演出している。

この手法の利点は、レスポンシブ対応が容易な点にある。画像を使用しないため、要素のサイズが変わっても角の形状が歪むことがない。また、CSS変数(カスタムプロパティ)を組み合わせることで、ホバー時に角がさらに深く折れ曲がるようなアニメーションもスムーズに実装できる。

実務でのアクセシビリティとパフォーマンス

画像による実装と比較して、clip-pathによる表現はデータ転送量を削減できる。また、テキストコンテンツをそのまま保持できるため、検索エンジン(SEO)やスクリーンリーダーへの影響も最小限に抑えられる。デザイン性を維持しつつ、Webサイトの軽量化を図る上での標準的なアプローチとなりつつある。

再評価される「backdrop-filter」と「tabular-nums」

再評価される「backdrop-filter」と「tabular-nums」

新機能だけでなく、既存のプロパティを再発見する動きも活発だ。特に「backdrop-filter」と「font-variant-numeric」は、UIの質を一段階引き上げるために欠かせない要素として注目されている。

backdrop-filterによるガラス質感(グラスモーフィズム)

Stuart Robson氏は、backdrop-filterの有用性を改めて強調している。このプロパティは、要素自体の背景ではなく、その「背後」にあるコンテンツに対してフィルターを適用するものだ。代表的な例が、背景をぼかす「blur()」である。

/* 背後をぼかして明るくする */
backdrop-filter: blur(10px) brightness(120%);
background-color: rgba(255, 255, 255, 0.1);
backdrop-filter デモ このパネルの背後がぼけて見えます。

このデモでは、背後のグラデーションがパネル越しにぼやけて見える「グラスモーフィズム」を表現している。

Robson氏によれば、この機能は単なる装飾ではなく、情報の優先順位を明確にするためにも有効だ。背後の情報を完全に消さずにノイズを抑えることで、前面のテキストの可読性を確保できる。

tabular-numsで数字のガタつきを防ぐ

時計やカウンター、財務データなど、数字が頻繁に更新される箇所で問題になるのが「文字幅の違いによるレイアウトの揺れ」だ。Amit Merchant氏は、これを解決する`font-variant-numeric: tabular-nums`の重要性を説いている。

通常、フォントの数字は「1」は細く「8」は太いといった具合に、文字ごとに幅が異なる(プロポーショナル・フォント)。しかし、`tabular-nums`を指定すると、すべての数字が同じ幅で表示される(等幅化)。

/* 数字を等幅で表示し、レイアウトシフトを防ぐ */
.timer {
  font-variant-numeric: tabular-nums;
}
tabular-nums なし:
11:11:11
88:88:88
tabular-nums あり:
11:11:11
88:88:88

上下で数字の幅が揃っているかを確認できる。等幅にすることで、秒数が進むたびに文字が左右に揺れる現象を回避できる。

Popover APIとアンカー配置(Anchor Positioning)の連携

Popover APIとアンカー配置(Anchor Positioning)の連携

モダンWebにおけるUI構築の大きな転換点となっているのが、Popover APIとアンカー配置(Anchor Positioning)の登場だ。これらは、ツールチップやドロップダウンメニューといった「重ね合わせ」が必要なUIを、JavaScriptに頼らずに構築することを可能にする。

Popover APIによる最前面表示の制御

Godstime Aburu氏が詳説するように、Popover APIはブラウザの「トップレイヤー」を利用して要素を表示する仕組みだ。これにより、親要素の`overflow: hidden`や`z-index`の制限に悩まされることなく、常に最前面にコンテンツを表示できる。

実装は非常にシンプルで、HTML属性に`popover`を付与し、ボタン側の`popovertarget`でそのIDを指定するだけで動作する。キーボードによる「Esc」キーでの閉鎖操作などもブラウザが標準でサポートするため、アクセシビリティの向上にも寄与する。

アンカー配置が解決する「位置決め」の課題

Popover単体では表示位置の制御が難しいが、ここにアンカー配置を組み合わせることで、特定のボタンの「すぐ隣」にポップオーバーを固定できるようになる。Chris Coyier氏は、この機能が従来の「計算に頼った配置」を過去のものにすると指摘している。

/* ボタンに名前を付ける */
.anchor-button {
  anchor-name: --my-anchor;
}

/* ポップオーバーをボタンの右側に配置 */
[popover] {
  position-anchor: --my-anchor;
  position-area: right;
}

アンカー配置には、画面端での自動反転(flip)機能も備わっている。例えば、画面の右端にボタンがある場合、ポップオーバーを自動的に左側に表示させるといった制御が、CSSの`position-try`プロパティだけで実現可能だ。これは、これまで「Popper.js」や「Floating UI」といった外部ライブラリが担っていた役割を、ブラウザがネイティブに引き受けることを意味している。

CSSの限界に挑む「DOOM」とブラウザの最新動向

CSSの限界に挑む「DOOM」とブラウザの最新動向

技術の進歩は、時に「実用性」を超えた驚きを提供してくれる。Niels Leenheer氏が公開した「CSS DOOM」は、その象徴的なプロジェクトだ。伝説的なシューティングゲーム『DOOM』のレンダリングを、JavaScriptではなくCSSの3D変換とクリップパスのみで再現している。

CSSのみで3D空間を構築する手法

Leenheer氏の解説によれば、ゲーム内のすべての壁や床は`div`要素で構成されており、それぞれに背景画像と3Dトランスフォーム(回転・移動)が適用されている。CSSには「移動するカメラ」という概念がないため、ユーザーの操作に合わせて「世界全体を逆方向に回転・移動させる」ことで、擬似的な一人称視点を実現しているという。

これは極端な例ではあるが、CSSの描画能力がいかに高度なレベルに達しているかを証明している。複雑な3D演出が必要なキャンペーンサイトなどにおいて、WebGL(Three.jsなど)を使わずにCSSだけで軽量な表現を行うヒントになるだろう。

ブラウザの更新サイクルと将来展望

ブラウザ側の進化も加速している。Chromeは2026年9月から、リリースサイクルを2週間おきに短縮することを発表した。これにより、新しいCSSプロパティがドラフト段階から安定版へと移行するまでの期間がさらに短くなる。Safari Technology Previewでも、カスタマイズ可能な`<select>`要素や、スクロール連動アニメーションの改善が進んでおり、Web制作の可能性は日々広がっている。

この記事のポイント

  • random()関数:CSS単体でランダムな数値を生成可能になり、デザインに自然なバラツキを与えられる。
  • clip-pathの進化:画像不要で「角折れ」などの複雑な形状をレスポンシブかつ軽量に実装できる。
  • 既存プロパティの活用:backdrop-filterやtabular-numsにより、UIの質感と可読性が大幅に向上する。
  • Popover & アンカー配置:外部JSライブラリなしで、高度なフローティングUIを構築できる時代になった。
  • ブラウザの高速進化:リリースの短サイクル化により、最新機能を実務に投入できるまでの時間が短縮されている。

出典

  • CSS-Tricks「What’s !important #7: random(), Folded Corners, Anchored Container Queries, and More」(2026年3月16日)
海田 洋祐

・ 複数業界における17年間のデジタルビジネス開発経験 ・ ウェブサイト開発のためのHTML、PHP、CSS、Java等の実用的知識 ・ 15ヶ国語対応の多言語SaaSの開発経験 ・ 17年間にも及ぶ、Eコマース長期運営経験 ・ 幅広い業界でのSEO最適化の豊富な経験

メッセージを残す