モダンCSSコードスニペット: もう2015年のようにCSSを書かない
(modern-css.com)- 古い CSSハック手法 と、それを置き換える 最新のネイティブCSS構文 を並べて比較して見せるコード集
- Grid, Flexbox, OKLCH color, container query, scroll-timeline などの最新標準を活用し、JavaScript 依存を減らす
- 色、レイアウト、アニメーション、セレクタ、タイポグラフィ、ワークフロー などのテーマ別に分かれており、各機能のモダンな代替案を提示
- 最新の CSS 標準によって JS、Sass、外部ライブラリへの依存を減らし、ブラウザのネイティブ機能 を最大限活用できる
1件のコメント
Hacker Newsの意見
2025年のCSSだなんて、まるで 2005年のようにインラインスタイル をHTMLに直接書こうと言っているようなものだ
Tailwindの話をしているのだが、結局はフォーマットと表現の分離を無視していることになる
HTMLが本当にコンテンツだけを担当し、CSSがスタイルだけを担当していたのなら、
.container-wrapper .container .container-innerのような div soup を作る必要もなかったはずだレイアウトを変えるたびにHTMLを修正しなければならない現実がその証拠だ
コンポーネント関連のコードが1か所にまとまっていて、ファイルを行ったり来たりする必要がない
レイアウトとスタイルは切り離せないUIの一部 だ
HTMLはコンテンツではなくレイアウトだ
たとえ関心の分離を信奉するとしても、HTMLとCSSは同じ表現レイヤーに属している
それらを分離できると信じるのは現実を直視していないのと同じだ
最近のCSSの主な改善点を挙げてみた
:has(...):is(...)— 以前は:not(:not(...))のような小細工を使わなければならなかった:where(...)—:is(...)に似ているが、セレクタの詳細度が0 なので複雑なセレクタを書くときに便利ほとんどのLLMはこの機能を知らない
AGENTS.mdに例を追加することを勧めるMDN Nesting Selectorの文書 を参考にするとよい
&セレクタを活用して 可読性と重複削減 を同時に得られるtext-box: trimだ20年間、デザイナーに大文字の上端揃えは不可能だと説明し続けていた時代が終わり、解放感がある
@layer機能がいちばん気に入っている例の一部は従来のやり方ならすべてのブラウザで動くが、新しいやり方はChrome/Edgeでしか動かない
こういう例を載せるのは Blink独占 を強めるので無責任だと思う
むしろ Mozillaの標準準拠不足 を指摘すべきだ
画面の端に要素を固定するのはやめるべきだ
一部のサイトでは 画面の半分以上を静的要素 が占めている
コンテンツはスクロールできるようにしておくのが自然だ
皮肉なことにそのサイトは ダークモード固定 で、
prefers-color-schemeを使っていない「創造的なCSSの例、いいね!」と思って見てみると、ブラウザ対応が40〜50%程度で現実的な制約がある
Chromiumの影響が過大であることのおかげではあるが、結果としては前向きだ
Interop 2025 参照
ブラウザベンダーはいつか 広範なサポート を実現するために、あらかじめ機能を追加している
Firefoxでは非対応と表示される例が、実際のデモでは普通に動いていて混乱する
もしかして polyfill が適用されているのだろうか
左下の緑色のパーセンテージは、その機能をサポートするブラウザ利用者の割合を意味している
半分以下のことも多い
結局のところ「modern CSS」というより「最新のChrome CSS」に近い
たとえば
sibling-index()はFirefoxではまだ動かないのに「widely available」と表示されている最近はTailwind、CSS-in-JS、Sass/SCSS、Vanilla CSSのどれを使うべきか迷う
チームに合うものを使えばいい
Tailwindが合うならそれでいいし、個人プロジェクトならインラインCSSでもいい、Sassに慣れているならそのままでよいし、
最新のCSSに全振りしたいなら それも素晴らしい選択 だ
Web開発を長くやりすぎたせいで、「昔ながらのやり方」と呼ばれている例でさえ 初めて見る機能 が多い
色の明るさ調整機能は初めて見た
以前はSassとCompassで実装していたが、ツールチェーンの保守 が面倒だった
今ではCSS自体で対応しているので、ずっと便利になった