terminal
Weekly Digest // STYLING — Week 18-2026
paletteWeekly Report

Scroll-driven Animation — 2026年 第18週 CSS・スタイリング

CSS architecture, utility frameworks, and animation performance

calendar_todaysummarizeWeek 18-2026
アニメーション

Scroll-driven Animation

Josh W. ComeauCSS Animation Timeline API を実践的に詳しく解説します。このAPIは @keyframes の進行を時間ではなくスクロール位置に対応付けます。animation-timeline: view() を使うと要素がビューポートを通過する間にキーフレームが適用され、animation-timeline: scroll() はページ全体のスクロールを追跡します。animation-range プロパティの cover・contain・entry・exit 値でアニメーションの開始と終了タイミングを細かく制御でき、animation-range-startanimation-range-end でパーセント指定も可能です。さらに view-timelinetimeline-scope を使い、ある要素のスクロール位置で別要素のアニメーションを制御する「リンクタイムライン」も紹介しており、名前付きタイムラインのスコープ制限という注意点も解説しています。

Scroll-driven Animation
Read Articlearrow_forward
Video · レイアウト

便利なCSS Layout Patternとさらに引き上げる楽しい方法

Kevin Powell3つの実用的な CSS レイアウトパターンと2つのボーナスビジュアルテクニックを解説します。まず grid-auto-flow: columngrid-auto-columns で横スクロールオーバーフローを構築し、scroll-snap-type: x mandatoryscroll-snap-align: center でカードのスナップを実現します。次に repeat(auto-fit, minmax(min(100%, 300px), 1fr)) のオートグリッドパターンを詳しく説明し、小さなコンテナで起きるオーバーフローの問題と解決法を紹介します。3つ目はサイドバーコンポーネントに container-type: inline-size を宣言し @container500px以上の時に3カラムグリッドへ切り替えるコンテナクエリの活用例です。ボーナスとして、チケット風カードコーナー用の corner-shape: scoop プロパティと、animation-timeline: view() を使った横スクロールビューポートでカードをスケール・フェードする scroll-driven animation を紹介しています。

AI_INFOGRAPHIC
便利なCSS Layout Patternとさらに引き上げる楽しい方法 — infographicWATCH_VIDEOarrow_forward
Article · CSSテクニックREAD TIME: 7m

100% CSS:repeat(--n, anything)

CSS の grid repeat() を汎用化してほしいというコミュニティの要望に触発され、著者は JavaScript を一切使わずモダン CSS だけで カスタム --repeat() 関数を実装しました。この手法は calc()round(down) を使って10進数の繰り返し回数を8ビットの2進数に変換し、カスタムプロパティで2の累乗単位のセットを生成することで最大255回の繰り返しをサポートします。最終的な出力は新しい if(style(--bitN = 1): ...; else: ;) の条件構文で組み立てられ、未使用の累乗変数は計算しない短絡評価で動作します。contenttext-shadowfilter drop-shadow()shape() の線分繰り返しなど多様な活用例を示しており、npm パッケージとしても公開されています。

READ_FULL_LOGarrow_forward
Article · ストリーミングUIREAD TIME: 17m

Streaming Content向けのStable Interface Design

Joas Pambou は、ストリーミング UI の3つの核心的な問題 — スクロールの横取り・レイアウトシフト・過剰なレンダリング頻度 — を特定し、それぞれに対する具体的な JavaScript と CSS の解決策を提示します。スクロール制御では 60px の閾値を持つ userScrolled フラグでユーザーの意図的なスクロールと小さなレイアウト変化を区別し、ユーザーが意図的に上にスクロールしたときだけ自動スクロールを停止します。レイアウトの安定性は、トークンごとに innerHTML を消去・再構築する代わりにライブテキストノードに文字を直接追記することで、レイアウト再計算とカーソルのちらつきを両方排除します。レンダリング頻度は受信文字をバッファに蓄積し requestAnimationFrame ごとに一括フラッシュする方式で削減します。さらにストリームのキャンセル処理・再試行 UX・aria-live リージョン・:focus-visible キーボードナビゲーション・タイプライタアニメーション向け prefers-reduced-motion 対応も解説しています。

READ_FULL_LOGarrow_forward
Article · カラーREAD TIME: 6m

CSSでGenerative Colorを作る

この記事では、oklch() CSS 関数と相対カラー構文を使って、単一の hex 値から11段階のカラーパレットを生成する方法を紹介します。相対カラーの from キーワードは任意の hex を lightness(l)・chroma(c)・hue(h)に変換し、それを calc() で調整できます。極端な明度での彩度の過剰を防ぐため、calc(0.08 * (c / .2)) のような式で各ステップの chroma を比率調整します。オプションの --chroma CSS 変数を使えば、ソースの hex を変えずにパレットの鮮やかさを手動で上書きできます。著者はこのアプローチを使い、サイト全体の配色システムをわずか6つの hex コードだけで管理しています。

READ_FULL_LOGarrow_forward
Article · CSS単位READ TIME: 4m

知っておくべきModern CSS Unit:dvh、Container Query Unit、lh、cap

このガイドでは、ここ数年で主要ブラウザすべてに搭載された4種類の CSS 長さ単位を実践的に解説します。それぞれ pxrem% では解決できなかった問題を解消します。動的ビューポート単位 dvh は、100vh がアドレスバーを無視するモバイル Safari の長年のバグを修正し、全画面レイアウトには 100dvh が推奨デフォルトとなっています。cqwcqi などのコンテナクエリ単位は container-type で設定された最も近いコンテナを基準にサイズを決めるため、メディアクエリなしでコンポーネント単位のレスポンシブタイポグラフィが実現できます。lh 単位は要素の計算済み line-height に解決され、margin-block-start: 2lh のような縦方向のリズム管理が容易になります。さらに cap(大文字の高さ)・ic(CJK 表意文字の幅)・ex(x-height)でフォントメトリクスに正確に UI 要素を揃えることが可能です。

READ_FULL_LOGarrow_forward
Article · 3DエフェクトREAD TIME: 6m

HTML、CSS、少しのJavaScriptで3D Stageを再現

Nick Hazekamp が、CSS perspective と小さな JavaScript 傾きコントローラーを使ってリアルな3Dステージの錯視効果を作る手順を解説します。scene コンテナは perspective: 1000pxperspective-origin: 50% 36%transform-style: preserve-3d で共有3D空間を確立します。ステージ本体は rotateX(72deg) で傾けた矩形で、視覚的な重労働はほぼ CSS が担います。固定の background と translate3d() で移動した foreground レイヤーが3層構成を完成させます。難しいのは傾きが変わるたびに background と foreground の幅をステージの前後エッジに幾何学的に合わせることで、小さな JS 関数が getBoundingClientRect() と現在の perspective 値を読み取り、透視投影スケールの計算式で正しい射影幅を求め、CSS カスタムプロパティとして書き戻しています。

READ_FULL_LOGarrow_forward
summarizeDigest_Summary

今週のCSSは、主要ブラウザ全てで利用可能になったAPIの深掘りチュートリアルが注目を集めました。Josh W. Comeauanimation-timeline: view()animation-timeline: scroll()animation-range(cover・contain・entry・exit)・view-timelinetimeline-scopeによるリンクタイムラインまで、CSS Animation Timeline APIの全体像を網羅したガイドを発表しました。Kevin PowellはScrollテーマを拡張し、scroll-snap-type: x mandatoryによるカードスナップ、新しいcorner-shape: scoopプロパティによるチケット風カードコーナー、そしてcontainer-type: inline-size@containerを使ったコンテナクエリを紹介しました。

実験的な分野では、calc()round(down)10進数を8ビット2進数に変換し、新しいif(style(--bitN = 1): ...; else: ;)条件構文で組み立てる純粋CSS製の--repeat()関数が実装されました。JavaScriptなしでcontent・text-shadow・drop-shadowなどで最大255回の繰り返しが可能です。モダンCSS単位のガイドは、モバイルセーフな全画面レイアウトのためのdvh、コンポーネントスコープのレスポンシブタイポグラフィのためのcqw/cqi、縦方向のリズムのためのlh、フォントメトリクス揃えのためのcap/ic/exを強調しました。

さらに2本の記事が週を締めくくります。oklch()と相対カラー構文で単一のhexから11段階のパレットを生成するテクニックと、perspective: 1000pxrotateX(72deg)getBoundingClientRect()による透視投影スケール計算でCSS 3Dステージ錯視を作る手法です。

Key Takeaways
  • CSS Animation Timeline API(animation-timeline: view()・scroll()・animation-range)はscroll-driven animationの標準として確立し、Josh W. Comeau のガイドが決定的なリファレンスとなっています。
  • calc()・round(down)・新しいif(style())条件構文を活用した純粋CSS製--repeat()関数で、text-shadowやdrop-shadowなどのプロパティでJavaScriptゼロで最大255回の繰り返しが実現します。
  • dvhはモバイルセーフな全画面レイアウトで100vhを置き換え、cqw/cqiはコンポーネントスコープのレスポンシブタイポグラフィを実現し、oklch()の相対カラーで単一のhexから11段階のパレットを生成できます。