CSS機能CSS random()で紙吹雪を降らせる
Schalk Neethlingは実験的な random() 関数を使い、JavaScriptなしで50要素の紙吹雪フィールドを実装しています。Safari 26.2+ と Chrome 148+(enable-experimental-web-platform-features フラグ必須)で利用可能で、2026年7月13日時点でFirefoxは未対応です。核心的な概念は ランダムキャッシュ名で、オプションの <dashed-ident>・要素・ドキュメントで構成されるタプルです。これにより値はペイントごとのサイコロではなく決定論的な参照となり、ページリロード時のみ紙吹雪が再配置されスタイル再計算中は位置が保持される理由が説明されます。未登録のカスタムプロパティは random() テキストを格納し各 var() 置換箇所で評価するため、プロパティが2回読まれると明示的な名前がなければ異なる値が生成されます。移植可能なフォールバックパターンはデフォルト値と :nth-child ルールを @layer fallback に格納し、非レイヤーの @supports ブロックがレイヤー優先順位で常に勝つようにします。Safariは @property で登録されたカスタムプロパティ内の random() を無視し、これはChromiumとの相違点として著者がリアルタイムで文書化しています。
Read Articlearrow_forward Video · CSS機能18:31
offset-pathのおかげでCSSが久しぶりに楽しくなった
Kevin PowellはCSS DayでのEric Meyerの発表から発見した offset-path: border-box テクニックを使い、ボタンにウィットあるきらめき装飾を実装しています。SVGパスなしで要素自身の境界に沿ってオブジェクトをアニメーションできることを示しています。絶対配置された <span> に offset-path: border-box を設定すると境界上に配置され、offset-distance(例: 80%)をアニメーションするとborder-radiusに沿って完全に移動します。offset-rotate: 0deg は移動中も装飾を直立させます。星形装飾は rotate でレイヤーされた擬似要素で作り、filter: blur(2px) でぼかし、@keyframes のopacityランプ(0% → 20%–80% 不透明 → 100% 透明)でライフサイクルを与えます。--deco-timing・--deco-color・--end-offset・--speed-variation といったカスタムプロパティが制御を一元化し、5つ以上の装飾がスケール・色(oklch() 相対カラー)・移動距離・速度を個別に設定できます。アニメーションとトランジションは :hover / :focus-visible にスコープする必要があり、各インタラクション時に offset-distance が常に起点にリセットされます。
AI_INFOGRAPHICWATCH_VIDEOarrow_forwardVideo · クリエイティブコーディング74:41
シェーダー入門 – 初心者向け JavaScript & p5.js コース
インストラクターの Pat Verra(freeCodeCamp)は p5.js v2のWebGLモード を使った4部構成の初心者向けGLSLシリーズを進め、GPU上で完全にレンダリングされるアニメーションフラクタルハートで締めくくっています。核心的な洞察はフラグメントシェーダーがフレームごとにピクセルごとに1回実行されるという点です。800×600キャンバスでは48万回、1080pでは200万回以上実行され、各呼び出しは自分の gl_FragCoord 位置と uTime・uResolution のようなCPU提供の uniform 値しか知らない隔離された環境で動作します。コースでは fract() によるドメイン繰り返し(ループなしで4×4グリッドをタイリング)、形状検出のための符号付き距離関数(Inigo QuilezのSDF 2Dライブラリから円・ハート・角丸ボックス)、逆距離グロー公式(0.05 / d で光の減衰をモデル化)、豊かな多色グラデーションのためのコサインパレット色関数、そしてフラクタルの深さを生み出す for ループによるUV再マッピング累積を教えています。高DPI画面で gl_FragCoord とキャンバス寸法の1:1比率を維持するには pixelDensity(1) の呼び出しが必須で、省略すると描画がずれます。
AI_INFOGRAPHICWATCH_VIDEOarrow_forwardArticle · エコシステムREAD TIME: 3m
What's !important #15: 境界認識CSS、時間ベースCSS、フルブリードCSS ほか | CSS-Tricks
CSS-Tricks第15号は2週間分の充実した内容をまとめています。Preethi Samの view() ベースの境界認識CSSはJavaScriptなしでスクロール範囲エフェクトを生成し、Sophie Kooninの時間ベースデザインはTemporal APIと color-mix() を組み合わせてmacOSスタイルの動的テーマを実現します。David Bushellのフルブリード修正はコンテナクエリ単位を使い、オーバーフローなしでネストされたラッパーから脱出します。Chrome 150はSafariとFirefoxにまだない機能を出荷しました。flex-wrap: balance・text-fit・named-feature()・focusgroup・アニメーション可能な zoom が含まれます。AccentColor と AccentColorText はChrome 150でBaselineを達成し、background-clip: border-area と polygon() の角丸はChromeに追加されましたがFirefoxは未対応です。Manuel Matuzovićはグリッドレーンレイアウト(旧メーソンリー)がまだアクセシブルでないと指摘し、reading-flow による修正が提案されましたが大規模テストはまだです。
READ_FULL_LOGarrow_forwardArticle · CSS機能READ TIME: 7m
CSS SubgridでFIFA対戦表レイアウトを再現する
Ahmad Shadeedは各ラウンドを別々の兄弟要素に人工的に分割したFIFAワールドカップトーナメント表UIを解析し、grid-template-columns と grid-template-rows の両軸へのCSS subgrid を使って意味論的にネストされたHTMLで再実装しています。各 .round は grid-column: 1 / -1 と grid-row: 1 / -1 で親グリッド全体にまたがり、display: grid; grid-template-columns: subgrid; grid-template-rows: subgrid で同じトラックを再公開します。これにより .start と .end の子要素がそれぞれ grid-column: 1 と grid-column: -2 に自己配置できます。試合ペアの垂直センタリングは各ハーフ列に display: flex; flex-direction: column、各試合コンテナに flex: 1 を適用してスペースを均等分配し、ラウンド間のコネクタラインを中央揃えにします。レスポンシブ動作では grid-template-columns: repeat(4, 1fr) で狭い幅においてラウンドを単一列に折りたたみます。 この記事はレイアウトのみに焦点を当て、アニメーションとホバーエフェクトは明示的に除外しています。
READ_FULL_LOGarrow_forwardArticle · クリエイティブコーディングREAD TIME: 33m
Trionn のアーキテクチャ: GSAP、Three.js、Lenis、Web Audio の連携 | Codrops
このCodropsのケーススタディは、Trionn スタジオチームが4ヶ月かけてアニメーション・WebGL・オーディオを単一の統合システムとして実装した受賞歴(FWA・GSAP・CSS Design Awards)のあるポートフォリオサイトのアーキテクチャを公開しています。GSAP + @gsap/reactは ScrollTrigger でページ遷移とスクロール駆動シーケンスを制御します。単一の正規化された scrollProgressRef(0–1)が371枚のWebPフレーム・グリフパーティクル爆発・サービスカードの曲線パスアニメーション・カラーパレット切り替えを競合なく統括します。Three.jsは共有レンダーループを直接制御するためReact Three Fiberを使わずに採用し、ホバー検出はシンボルの実際の3Dジオメトリへのレイキャスティングで行い、カードの角丸は透過PNGではなく符号付き距離関数(SDF)フラグメントシェーダーで生成しています。371枚のWebPフレームは requestIdleCallback で20枚ずつバッチロードして img.decode() で前処理し、ギャラリーのWebGLシーンはビューに入る前に明示的にウォームアップ — シェーダーコンパイル、テクスチャアップロード — しています。フッターのプラック可能なギターストリングワードマークとヒーローのホバービープ音を含む全サウンドエフェクトは、録音済みファイルでなくオシレーター・ビブラートLFO・フィードバックディレイを使った Web Audio API でランタイム合成されています。
READ_FULL_LOGarrow_forwardArticle · CSS機能READ TIME: 8m
見落とされがちな機能: Highlight API、text-indent、font-family: math | utilitybend
Brecht De Ruyteは派手な機能に隠れて注目されにくい3つのCSS Baseline機能を取り上げています。CSS Custom Highlight APIはChrome 105・Safari 17.2・Firefox 111から利用可能で、従来のDOM分割アプローチを CSS.highlights.set() と ::highlight() 擬似要素に置き換えます。ブラウザはペイントフェーズに介入してグリフの真下に着色した矩形を直接描画し、レイアウトフェーズを完全にスキップしてリフローを排除します。text-indent キーワードの hanging と each-line は Chrome 146とともに2026年3月にBaselineを達成(SafariとFirefoxは先行実装):hanging は参考文献スタイルのインデントをネイティブに実装し、each-line はすべての <br> 改行後にインデントを適用します。font-family: math とネイティブMathMLタグ(<math>・<mfrac>・<msub>)は、ブラウザにSTIXやLatin Modern Mathのような数学レイアウトフォントを読み込むよう指示し、外部JavaScriptライブラリなしにスクリーンリーダーでアクセシブルな数式出力を可能にします。両機能とも Chrome 109とともに2023年にBaseline を達成しています。
READ_FULL_LOGarrow_forwardsummarizeDigest_Summary
今週のCSS & スタイリング号の目玉は、新しい random() 関数です。Schalk Neethlingの28分間の深掘り記事は、ランダムキャッシュ名モデル・プログレッシブエンハンスメントの落とし穴・フォールバックアーキテクチャで @supports not より @layer が優れる理由を網羅した決定版ガイドです。Safari 26.2 と Chrome 148(フラグ)で出荷済みですが、2026年7月時点でFirefoxはサポートしていません。
Ahmad Shadeedは両軸への subgrid 適用でFIFAトーナメント対戦表問題を解決する方法を示しています。DOM構造を変えずに子要素が親グリッドトラックに参加でき、align-items: center と flex: 1 でマッチコネクターをピクセル単位で揃えます。Kevin Powellの動画は offset-path: border-box の可能性を再発見させてくれます。SVGパス不要で offset-distance をアニメーションするだけで、ボタンにウィットあるきらめきエフェクトを実現できます。
Brecht De Ruyteは静かにBaselineに収まった3つの機能を紹介しています。DOM変更なしでテキストをハイライトする CSS Custom Highlight API、2026年3月にBaselineを達成した text-indent: hanging / each-line、そしてアクセシブルなMathMLのための font-family: math です。CSS-Tricksニュースレターは、Chrome 150で出荷された flex-wrap: balance・text-fit・named-feature() をまとめていますが、いずれもSafariとFirefoxは未対応です。
クリエイティブコーディング面では、Trionn事例紹介が4ヶ月にわたる意欲的なアーキテクチャを公開しています。GSAP + ScrollTriggerで371フレームのWebPスクラビングを駆動し、Three.jsレイキャスティングでアニメーション中のジオメトリのホバーを検出し、フラグメントシェーダーで手続き的なフォグと角丸を実装し、Web Audio APIで全サウンドをランタイム合成しています。freeCodeCampのシェーダーコースはGLSLの頂点/フラグメント基礎からドメイン繰り返し・fract()ベースのタイリング・GPU上で完結するフラクタルハートまで初学者を導きます。
Key Takeaways- CSS
random() はSafari 26.2とChrome 148(フラグ)で出荷済みですがFirefoxは未対応です。ランダムキャッシュ名モデルにより値は要素・プロパティ・ドキュメントをキーとする決定論的な参照であり、明示的な <dashed-ident> とフォールバックへの @layer 使用がポータブルかつ仕様に準拠したパターンです。 - 両軸に
subgrid を適用すると、DOMをフラット化せずに入れ子要素が親グリッドトラックに参加でき、複雑なトーナメント表や複数列の整列が可能になります。内側コンテナに flex: 1 を組み合わせると、ラウンド間の縦方向の位置合わせが精密になります。 offset-path: border-box を使えば、要素自身の境界に沿ってオブジェクトをアニメーションする際にSVGパスが不要になります。offset-distance をアニメーションし、offset-rotate で向きを制御することで、JavaScriptなしに装飾的なモーションエフェクトを作れます。