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

Anchor Positioning入門 — 2026年 第28週 CSS・スタイリング

CSS architecture, utility frameworks, and animation performance

calendar_todaysummarizeWeek 28-2026
レイアウト

Anchor Positioning入門

CSS Anchor Positioning APIは、anchor-nameposition-anchorプロパティを使ってツールチップやドロップダウンなどのフローティング要素を任意のアンカー要素に紐付け、JavaScriptベースの位置決めロジックを置き換えます。position-areaプロパティはアンカー周囲の3x3グリッドの概念でターゲットを配置し、position-try-fallbacksはビューポートの空きが不足した際にツールチップを自動的に反対側へ切り替えます。Level 2仕様はanchored container queries(container-type: anchored)を導入しており、2026年7月時点ではChromiumのみ対応で、アクティブなフォールバック位置に基づいてCSS側でキャレット方向を変更できます。flip-blockキーワードはクロスブラウザの垂直反転ショートカットを提供し、方向性マージンも自動でミラーリングします。フォールバック戦略としてはOddbirdポリフィルと@supports機能クエリによる段階的デグラデーションがあります。

Anchor Positioning入門
Read Articlearrow_forward
Video · アニメーション

CSSで「何もない状態」からAnimation可能に

このCoding2GOの動画は、dialogやReactの条件付きレンダリングコンポーネントなど、以前のCSS状態を持たない要素のトランジションに最初のフレームの起点を提供するCSSルール@starting-styleを解説します。@starting-styleがないと、dialogは開く際に既にopen属性セレクタと一致してしまい、ブラウザには遷移元となる「前」の状態がありません。解決策は@starting-style内でopacity: 0scale: 0.8を宣言し、ブラウザがそれらを要素の初期値として扱うよう指示することです。dialogの場合、displayoverlayなどのdiscreteプロパティもallow-discreteとともにtransitionリストに追加する必要があり、フェードアウトが完了するまで要素がレンダリング状態を維持します。この動画はそのパターンを::backdrop疑似要素やReactのリストレンダリングにまで拡張し、すべてのモーションを@media (prefers-reduced-motion: reduce)で囲むことを最後に呼びかけます。

AI_INFOGRAPHIC
CSSで「何もない状態」からAnimation可能に — infographicWATCH_VIDEOarrow_forward
Article · アニメーションREAD TIME: 6m

Ease In、Ease Out、その間のすべて

この記事はcubic-bezier()イージングを、デザイナーがFigmaなどのベクターツールで既に使っているベジェハンドルの仕組みと結びつけてわかりやすく説明します。cubic-bezier(x1, y1, x2, y2)4つの数値は2つのコントロールハンドルを表し、x値は時間(01に制限)、y値は進捗度を示し、この範囲を超えてオーバーシュートや巻き戻し効果を生み出すことができます。CSSキーワードプリセット5種類を正確なcubic-bezier値にマッピングし、ease-outcubic-bezier(0, 0, 0.58, 1)であることを示します。入場にはease-out、退場にはease-in、表示位置間の移動にはease-in-outというわかりやすいルールを提示します。単一のベジェ弧でモデル化できない物理ベースのバウンスには、CSS linear()で本物のスプリング方程式をエンコードできます。

READ_FULL_LOGarrow_forward
Article · タイポグラフィREAD TIME: 11m

印刷Pageのように組版する

元プリントデザイナーが執筆したこの記事は、JavaScriptを使わずにエディトリアルタイポグラフィをウェブに実現するCSS制御技術6種類を紹介します。流動的なタイプスケールはclamp()rem + vwの優先値を組み合わせ、ビューポートに追従しながらユーザーのフォント設定も尊重するよう構成します。text-wrap: balanceはヘッドラインの不揃いな行(Chromiumで最大6行まで)を防ぎ、text-wrap: prettyは本文末尾の数行だけ調整してオーファン単語を修正します。initial-letterはネイティブのドロップキャップを提供し(Firefox未対応、グレースフルデグラデーション)、font-optical-sizing: autoはレンダリングサイズからopszバリアブルフォント軸を自動駆動します。hanging-punctuation: firstは先頭引用符をマージンに送り出して光学的整列を実現します(現在Safari専用)。6つのプロパティすべてのChrome・Firefox・Safari対応表も掲載されています。

READ_FULL_LOGarrow_forward
Article · カラーREAD TIME: 5m

JavaScriptなしでDark Mode Toggleを作る

Jakub T JankiewiczによるこのHTMLラジオ入力とCSS :has()疑似クラスを組み合わせたJavaScriptを使わないダークモードトグルの実装方法を解説します。:root:has(#mode_dark:checked)セレクタは親を認識する条件として機能し、ページ全体で--bg--fgのCSSカスタムプロパティの上書きをトリガーします。ラジオ入力はappearance: noneopacity: 0pointer-events: noneで視覚的に隠し、太陽と月の絵文字を持つラベルがクリック可能なUIを担います。@media (prefers-color-scheme: dark)クエリでシステム設定に合わせたデフォルト状態を設定し、手動のラジオ選択がそれを永続的に上書きします。EleventyのようなSSGツールや、AIクローラーや低帯域ユーザーにJavaScriptが届かない環境で特に有効です。

READ_FULL_LOGarrow_forward
Article · セレクターREAD TIME: 3m

CSSのWildcard

Remy Sharpは、CSSにはワイルドカード要素セレクタが存在しないため、rem-* { }のように接頭辞を共有するすべてのカスタム要素を対象とするルールを書けないと指摘します。現在使える回避策は[class^="btn-"](前方一致、壊れやすい)や[class*="btn"](含む、過剰に広い)などの属性セレクタのみで、どちらも要素タグ名には機能しません。同じ欠如はquerySelectorAllにも影響し、接頭辞でカスタム要素を初期化するには対象セレクタではなくDOM全体のスキャンが必要です。SharpはLea Veroupが2年以上前にCSSWGへこの問題を提起したが進展がないと述べ、CSS文法上この目的で*文字が使用可能かどうかも検討しています。

READ_FULL_LOGarrow_forward
Article · 3DアニメーションREAD TIME: 12m

Blender Camera PathとThree.js・GSAPでScroll-driven 3D Galleryを構築

Gaspard HeddeによるこのCodropsチュートリアルは、BlenderでBezier曲線を描いてカメラが追従するスクロール駆動の3Dギャラリーの構築方法を解説します。曲線はBlenderのZ-up座標系をThree.jsのY-up系に変換するPythonスクリプトを通じてJSONとして書き出します。Three.jsではCatmullRomCurve3で曲線を再構成し、曲線のローカル法線ベクトルから派生したランダムな横方向・奥行きオフセットで500枚の画像プレーンを配置します。GSAPquickToはカメラスムージング(power3.out1秒)と各プレーンのスケールアニメーション双方を担い、フレームあたり500個の新tween生成を回避します。近接ベースのフォーカスシステムはカメラに近づいた画像を最大14倍に拡大し、3乗の減衰(f cubed)で効果を局所化します。

READ_FULL_LOGarrow_forward
summarizeDigest_Summary

今週のCSSカバレッジはJavaScript依存を削減する新しいプラットフォーム機能に集中しました。CSS Anchor Positioning APIanchor-nameposition-anchorposition-areaを使ってツールチップやドロップダウンを任意のアンカー要素に正確に配置し、position-try-fallbacksがビューポートの端での自動反転を処理します。近く公開されるLevel 2仕様はCSSベースのキャレット方向制御のためのcontainer-type: anchoredを追加しますが、2026年7月時点ではChromiumのみの対応です。合わせて@starting-styleが長年のギャップを埋めます。dialogや条件付きレンダリングされたReactコンポーネントのような要素はこれまでCSSトランジションがアニメーションを開始する「前」の状態を持てませんでした。@starting-style内に初期値を宣言し、displayoverlayのようなdiscreteプロパティに対してtransitionリストにallow-discreteを追加することで、JavaScriptなしで滑らかな入退場アニメーションが実現します。

タイポグラフィも重点的に取り上げられました。clamp()ベースの流動的タイプスケール、見出しと本文の折り返しのためのtext-wrap: balancetext-wrap: pretty、ドロップキャップのためのinitial-letter、バリアブルフォントのopsz軸を制御するfont-optical-sizing: auto、光学的マージン整列のためのhanging-punctuation: first(現在Safari専用)という6つのCSS編集タイポグラフィ制御手法が紹介されました。cubic-bezier()イージングをCSSキーワードプリセット5種の正確な値とともに体系的に整理したガイドも公開され、入場にはease-out・退場にはease-in・画面内移動にはease-in-outという原則が示されました。単一のベジェ弧でモデル化できない物理ベースのバウンスにはCSS linear()でスプリング方程式をエンコードする方法も紹介されました。

ラジオ入力と:has()疑似クラスを組み合わせたJavaScriptなしのダークモードトグルも紹介されました。:root:has(#mode_dark:checked)を使ってカスタムプロパティ値を切り替える手法は、静的サイトやAIクローラーにも機能します。Remy SharpはCSSのワイルドカード要素セレクタの欠如 — rem-*要素を対象とするルールを書けない問題 — についての議論を提起し、Lea Verou2年前にCSSWGへ問題提起したにもかかわらずまだ進展がないことを指摘しました。

Key Takeaways
  • CSS Anchor Positioning(anchor-name、position-area、position-try-fallbacks)はフローティングUI配置の標準アプローチになりました。Level 2のcontainer-type: anchored機能は2026年7月時点でChromiumのみ対応です。
  • @starting-styleはdialogや条件付きレンダリング要素にCSSネイティブの入退場トランジションを実現します。display: noneの突然の切り替えを防ぐため、transitionプロパティにallow-discreteを組み合わせる必要があります。
  • clamp()流動スケール・text-wrap: balance/pretty・initial-letter・font-optical-sizing: auto・hanging-punctuation: firstの6つCSSプロパティを使えば、JavaScriptなしで印刷品質のタイポグラフィをウェブに実現できます。