CSSのurl()に改ざん検知やCORSの指定を書けるようになった新機能

つくば市のホームページ制作会社

ウェブサイトで外部の画像やフォントを読み込むとき、CSSでは長らくurl()にファイルの場所を書くだけでした。別ドメインからの取得方法や、ファイルが途中で差し替えられていないかの検証といった細かい挙動は、HTML側の属性やサーバー設定に任せるしかありませんでした。読み込みの見た目はCSSで書けるのに、読み込み方の安全面はCSSの外にある、という状態が続いていたわけです。Chrome 150(2026年6月30日公開)で、このurl()に読み込み方法そのものを書き足せる仕組みが正式に使えるようになりました。

url()の後ろに指定を書き足す

新しく加わったのは、url()の中でファイルのURLに続けて指定を書けるという書き方です。CORSの取得モードを決めるcross-origin()、ファイルの中身を検証するintegrity()、参照元の送り方を決めるreferrer-policy()の三つが用意されました。いずれもCSSの値に関する仕様で定められたもので、HTMLの属性でできていたことをスタイルシート側に持ち込む位置づけです。

たとえばbackground-image: url("photo.png" cross-origin(anonymous))と書けば、その画像はCORSの匿名モードで取得されます。これまでこうした制御はHTMLの<img><link>の属性でしか指定できず、CSSの中で完結させることはできませんでした。対象は画像だけでなく、フォント、SVGの参照、@importで読み込む別のスタイルシートにも同じ指定が使えます。装飾のためにCSSから直接読み込んでいたファイルほど、恩恵を受けやすい場所だと言えます。

ファイルの改ざんを検知する

三つの中でも制作の現場で注目したいのがintegrity()です。これはHTMLのSubresource Integrity(サブリソース完全性)と同じ考え方で、あらかじめ計算しておいたファイルのハッシュ値を書いておき、実際に取得したファイルのハッシュと一致するかを確認します。ハッシュはSHA-256やSHA-384といったアルゴリズムで求めた値を指定する形で、HTMLのintegrity属性と同じ書式です。一致しなければブラウザはそのファイルを読み込まず、表示にも使いません。

CDNに置いたフォントや、外部サービスから配信される装飾用ファイルが、配信元で差し替えられていないかを検証できるということです。Chromeはこのintegrity()を実際に照合しており、ハッシュが合わないファイルの描画をブロックします。共有のCDNを使う中小企業のサイトでも、想定していないファイルが紛れ込むリスクを一段下げられます。フォントを更新したときはハッシュも合わせて書き直す運用になるため、更新の手順に一つ手間が増える点だけは頭に入れておきたいところです。

CORSと参照元の指定

cross-origin()は別ドメインのファイルを取得するときのモードを指定します。フォントのように、そもそもCORSの許可がないと読み込めない種類のファイルもあり、これまではHTML側で気をつける必要がありました。referrer-policy()はファイルを取りに行くときに送る参照元情報の範囲を決めるもので、どのページから読み込んだかという情報を外部に渡しすぎないよう調整できます。いずれもこれまでHTMLの属性やHTTPヘッダーで設定していた項目を、スタイルシート側に寄せられるのが利点です。読み込みに関わる設定が一か所にまとまるぶん、後から見直すときの見通しもよくなります。

取り入れるときに見ておきたいところ

ブラウザ対応には差があります。Chrome 150は三つとも扱えますが、Safariはcross-origin()referrer-policy()を先行して実装した一方で、integrity()にはまだ対応していないとされています。改ざん検知を前提に組む場合は、対応していないブラウザではその検証が効かないことを踏まえて設計する必要があります。

この書き方は既存のCSSに追記する形で使えるため、対応ブラウザでは効き、非対応ブラウザでは従来どおり読み込まれるという形に収まります。まずは重要なフォントや外部の装飾ファイルなど、差し替えられると影響が大きい部分から試すのが現実的です。外部ファイルへの依存が多いサイトほど、少しずつ取り入れておく価値のある機能だと言えそうです。

命名規則に頼らずCSSの適用範囲を限定できる@scopeが全ブラウザ対応

つくば市のホームページ制作会社

CSSを書いていて、あるコンポーネントに当てたはずのスタイルが思わぬ場所まで波及してしまった経験は、制作に携わる人なら一度はあるはずです。ページ全体に効くというCSSの性質は便利な反面、扱う要素が増えるほど管理を難しくします。この課題に正面から向き合う@scopeという仕組みが、Firefox 146の対応で主要ブラウザに出そろい、Baselineの新しく使える機能に加わりました。

これまでのCSS管理が抱えていた悩み

ウェブサイトのスタイルは、原則としてページ全体に対して効きます。あるボタンの色を変えたつもりが、別の場所にある似た要素まで巻き込んでしまう。ページ数が少ないうちは目視で追えますが、扱う画面が増え、複数人で長く運用するようになると、どこに何が効いているのかを把握しきれなくなっていきます。

こうした事故を避けるため、制作現場では長らく命名規則という工夫が使われてきました。BEMのように、クラス名へ役割や階層を細かく書き込む方式です。名前が重複しなければスタイルも衝突しない、という考え方で、多くの現場を支えてきた実績があります。

ただ、この方法はクラス名が長くなりがちで、書き手によって命名の揺れも生まれます。CSSの設計を保つために、人間の側が規律を守り続ける必要がありました。過去にはShadow DOMのように構造ごと分離する手段もありましたが、導入のハードルは低くありません。@scopeは、この範囲を区切るという役割を、CSSの標準機能そのもので肩代わりしようという発想です。

@scopeが実際にどう書けるのか

基本の形はシンプルです。適用範囲の起点となる要素を指定し、その内側だけにスタイルを効かせます。たとえば@scope (.card) { img { border-radius: 8px; } }と書けば、.cardの内側にある画像だけに角丸が当たります。同じimgでも、カードの外にある画像には影響しません。セレクタを.card imgのように長く連ねなくても、範囲を宣言するだけで意図が伝わります。どの要素にどのスタイルが効くのかが宣言の形からそのまま読み取れるため、後から見返したときの分かりやすさにもつながります。

この範囲の起点を、スコープの上限と呼びます。範囲の中で使える:scopeという擬似クラスは、その起点そのものを指し示すものです。囲った領域全体の背景や余白をまとめて整えたいときなど、起点の要素自体にスタイルを当てたい場面で役立ちます。

下限を決めて入れ子の穴をつくる

@scopeのもう一つの特徴は、範囲の下限も指定できる点です。起点と終点の二つを書くと、その間にある要素だけが対象になります。@scope (.card) to (.card__body) { ... }のように書けば、.cardから.card__bodyの手前までが範囲になります。

カードの中にさらに別のコンポーネントが入れ子になっている場面を思い浮かべてください。外側のカード用のスタイルが、内側に置いた小さな部品まで無用に踏み込んでしまうと、見た目が崩れます。下限を切っておけば、その内側は範囲の外として扱われ、影響を受けません。中央に穴が空いたドーナツになぞらえて、ドーナツスコープと呼ばれることもあります。ニュース一覧の中に埋め込みカードが混ざるような、実際のサイトでよくある構造で効いてくる機能です。

制作現場で使うときに知っておきたいこと

便利な一方で、優先度の扱いには注意が必要です。@scopeで囲んでも、セレクタ自体の詳細度が下がるわけではありません。範囲を絞ったから既存のスタイルに必ず勝てる、とは限らない点は押さえておきたいところです。既存のCSSと併用するときは、どちらが優先されるかを確かめながら進めると安全です。

もう一つ、範囲内で複数の起点が競合したときは、DOM上でより近い起点のスタイルが優先されます。この近さによる判定は従来のCSSにない考え方なので、頭で覚えるより、小さなサンプルで実際に挙動を確かめておくほうが早く馴染めます。

命名規則や大掛かりな設計手法に頼らずに、必要な範囲だけへスタイルを届けられる。少人数で長く手を入れていく中小企業のサイトほど、この素直さは効いてきます。既存のCSSをいきなり書き換える必要はありません。まずは新しく作るコンポーネントの一部で、小さく試すところから始めてみてはいかがでしょうか。

文字を箱の幅にぴったり収めるCSSの新しいプロパティ

つくば市のホームページ制作会社

見出しやキャッチコピーの文字を、置いた箱の幅ぴったりに収めたい。制作の現場では誰もが一度は悩む場面だが、これまではJavaScriptで幅を測って調整したり、文字数を数えてフォントサイズを手で決めたりと、面倒な手当てが必要だった。専用の小さなライブラリを読み込んで文字を伸縮させたり、どうしても揃わない箇所はテキストを画像にして逃げたりと、割り切りを迫られることも多かった。この地味な悩みに、CSSだけで答える新しいプロパティが登場した。

Chromeの開発者向けドキュメントによると、2026年6月30日に安定版となったChrome 150で text-fit プロパティが使えるようになった。テキストノードのフォントサイズを、それを包む箱の幅に合わせて自動で拡大縮小してくれる仕組みだという。文字が短ければ大きく、長ければ小さく、箱の横幅を埋めるようにブラウザ側が調整する。開発者が文字数を数えて刻む必要も、スクリプトで幅を測る必要もなくなるというわけだ。

可変長のテキストで効いてくる

この機能が生きるのは、入る文字の長さが事前に読めない場面だ。CMSで運用しているサイトの見出し、商品名やキャンペーン名のように毎回長さが変わるテキスト、複数言語で文字量が大きく違うページ。こうした箇所でフォントサイズを一定に保つと、短い文字はスカスカに見え、長い文字ははみ出してしまう。text-fit を当てておけば、どんな文字数でも横幅が揃い、ページ全体の見た目が安定する。

似たことを狙う手段として、これまでは clamp() やビューポート単位でフォントサイズを画面幅に連動させる書き方が使われてきた。ただしそれらはあくまで画面の広さに比例させるもので、実際に入っている文字の量には反応しない。text-fit は箱に収まる文字そのものを見て縮尺を決める点が違い、狙いがより素直だ。中小企業のサイトでも、トップのヒーロー見出しやバナーのコピーは案件ごとに長さがまちまちで、運用の途中で文言が差し替わると崩れやすい。ブラウザが幅に合わせてくれるなら、こうした崩れの心配が減り、入稿の自由度も上がる。

ただし今のところ対応しているのはChromeが先行している段階で、ほかのブラウザはこれからだ。すぐに全環境で頼るのではなく、対応していないブラウザでは通常のフォントサイズで表示されるよう土台を整えたうえで、対応環境だけ恩恵を受ける形で足すのが現実的だろう。導入する際も、極端に長い文言を入れたときに文字が小さくなりすぎて読みにくくならないか、想定される最大の長さで一度確認しておくと安心だ。閲覧者の環境によって見え方が変わる機能なので、主要な組み合わせでざっと表示を見ておく手間はかけておきたい。長らくJavaScriptに任せていた処理が、また一つ標準機能に取り込まれていく流れの一つとして覚えておきたい。

グリッドとフレックスの隙間を線で飾るCSSの新機能

つくば市のホームページ制作会社

ウェブサイトのレイアウトをグリッドやフレックスボックスで組んだあと、要素と要素のあいだに区切り線を入れたくなる場面は多い。カード一覧の列のあいだに細い罫線を引く、料金表のセルを線で仕切る、といった演出だ。ところがこれまでのCSSには、こうした隙間そのものに線を引く手段が用意されていなかった。Chrome と Edge の149で使えるようになった gap decorations は、その長年の空白を埋める機能になる。

これまでは擬似要素や枠線で工夫していた

グリッドやフレックスボックスの gap プロパティは、要素のあいだに余白を作れるが、その余白に色や線を付けることはできない。そのため制作現場では、各セルに border を付けて重なりを調整したり、::before や ::after の擬似要素で線を描いたり、背景にグラデーションを敷いて線に見せかけたりといった回り道をしてきた。

どの方法も、セルの数が変わったり折り返しが起きたりすると崩れやすい。線を引きたいだけなのに、レイアウトの計算まで巻き込んでしまうのが悩みどころだった。gap decorations は、この作業を余白側の仕事として切り出してくれる。

column-rule と row-rule で隙間に線を引く

マルチカラムレイアウトには以前から column-rule というプロパティがあり、段組みの段のあいだに線を引けた。新機能は、この column-rule をグリッドとフレックスボックスでも使えるように広げ、さらに横方向の隙間を担当する row-rule を新たに加えたものだ。

書き方は border とよく似ている。線の太さ、線種、色をそれぞれ column-rule-width、column-rule-style、column-rule-color で指定し、まとめて column-rule として一行で書くこともできる。row-rule も同じ構成だ。

.cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  column-rule: 1px solid #ccc;
  row-rule: 1px solid #ccc;
}

大事なのは、これらの線が純粋に見た目だけの装飾で、余白の幅やレイアウトには一切影響しない点だ。線を足しても要素の位置がずれないので、あとから飾りを差し込む使い方に向いている。

フレックスボックスで要素が複数行に折り返すレイアウトでも、行と行のあいだに row-rule の線がきれいに収まる。列数や行数が中身に応じて変わる動的なレイアウトほど、擬似要素で線を管理する手間から解放される効果は大きい。

repeat()で線のパターンを作る

column-rule-width などには、グリッドのトラック指定でおなじみの repeat() が使える。これを使うと、隙間ごとに太さや色を変えたパターンを短い記述で作れる。たとえば数独の盤面のように、細い線を並べつつ何本かおきに太い線を挟む、といった表現だ。

column-rule-width: repeat(2, 1px) 4px repeat(2, 1px) 4px repeat(2, 1px);

線の位置を隙間の中央から少しずらす column-rule-inset のようなプロパティや、どの隙間に線を引くかを選ぶ仕組みも用意されている。縦の線と横の線が交わる交点の見せ方も細かく制御でき、交点で線を途切れさせるか、そのまま突き抜けさせるか、描画の重なり順をどうするかまで指定できる。単なる区切り線にとどまらず、表やカレンダー、価格表といった格子状のデザインを、擬似要素なしで組み立てられるようになる。

使えるブラウザと取り入れ方

gap decorations が正式に使えるのは、いまのところ Chrome と Edge の149からで、2026年6月に登場した。ほかのブラウザではまだ対応が追いついていないため、現時点では装飾の上乗せとして使うのが無難だ。

幸い、この機能は線を描くだけでレイアウトを動かさない。対応していないブラウザでは線が表示されないだけで、要素の並びや余白は保たれる。つまり、線があれば少し見やすく、なくても困らない、という段階的な取り入れ方ができる。地方の制作現場でも、まずは社内サイトや実験的なページで感触を確かめてから、対応ブラウザの広がりに合わせて本番へ持ち込むのが手堅い進め方になるだろう。

CSSだけで条件分岐や連番を扱えるようになった新しい関数たち

つくば市のホームページ制作会社

これまでCSSでは表現しきれず、JavaScriptやSassのような前処理ツールに任せてきた処理がいくつもありました。要素が並びの中で何番目かを数えたり、条件によって値を出し分けたりといった、いわば「ロジック」にあたる部分です。ここ最近、その領域をCSSの標準機能として扱えるようにする新しい関数がブラウザに入り始めています。中小企業サイトの制作でも、外部ライブラリを一つ減らせる余地が広がってきました。今回はそうした関数を並べて紹介します。

並びの順番を数える sibling-index() と sibling-count()

sibling-index() はその要素が兄弟要素の中で何番目かを返し、sibling-count() は兄弟要素の総数を返します。これまで各要素に少しずつ違う値を割り当てるには、:nth-child() を項目の数だけ書き並べるか、JavaScriptで番号を振るしかありませんでした。

この二つを calc() と組み合わせると、リストの各項目に段階的な遅延を与えるアニメーションが一行で書けます。たとえば animation-delay: calc(sibling-index() * 0.08s) と書けば、項目が5個でも500個でも同じ記述で順番にずれて動きます。ナビゲーションのメニューやカードの一覧を、順に浮かび上がらせるといった演出が、余分なマークアップなしで表現できるわけです。

遅延だけでなく、要素の位置に応じた大きさや透明度の調整、リストへの連番の割り当てなど、数式で表せる装飾なら幅広く応用できます。項目の増減があっても記述を書き直さずに済むため、更新頻度の高いお知らせ一覧や商品の並びといった、中身が動くコンテンツと相性がよい機能です。

値そのものを出し分ける if() 関数

if() は、スタイルクエリやメディアクエリ、機能クエリの結果に応じて、プロパティの値そのものを分岐させる関数です。これまで同じことをするには、状態ごとにクラスを付け替えたり、カスタムプロパティを何段も重ねて条件を組み立てたりする必要がありました。

if() を使うと、たとえばカスタムプロパティの値を見て背景色を切り替える、といった書き分けが一つのプロパティの中で完結します。分岐のたびにセレクタを増やさずに済むため、コンポーネントのスタイルが見通しよく保てます。テーマの切り替えやボタンの種類ごとの装飾など、これまで冗長になりがちだった部分を短く書ける関数です。

たとえば明るい配色と暗い配色を切り替えるサイトで、ボタンや枠線の色を状態に合わせて出し分ける、といった使い方が考えられます。従来はそのためにクラス名の組み合わせが増えていきがちでしたが、値の分岐を一箇所にまとめられると、後から見返したときの読みやすさが変わってきます。

導入時に押さえておきたいブラウザ対応

便利な一方で、対応状況にはまだ差があります。sibling-index() と sibling-count() はChromeが先行して対応し、Safariも追随、Firefoxは実装が進んでいる段階です。if() はさらに新しく、現時点ではChromiumを基盤とするブラウザが中心で、SafariやFirefoxはこれからという位置づけです。

つまり、いますぐ全ての利用者に届く機能とは言い切れません。本番のサイトでは @supports で対応ブラウザを見分け、未対応の環境には従来どおりの書き方を残しておくのが安全です。長くウェブ制作に携わってきた立場からも、こうした新機能は「安全な既定値を先に書き、その上に重ねる」という進め方を勧めたいところです。派手さはありませんが、この順序を守ることで、新しい表現を取り入れつつ表示崩れを避けられます。手元の小さなコンポーネントから試して、感触を確かめてみるのがよさそうです。

背景に応じて文字色を自動で選ぶCSS関数、読みやすさを支える新しい仕組み

つくば市のホームページ制作会社

ボタンや見出しの背景色を決めたあと、その上に載せる文字を黒にするか白にするかで迷った経験は、制作に関わる人なら一度はあるはずです。背景が濃ければ白、淡ければ黒と感覚で選んでいくものの、配色のパターンが増えるほど組み合わせの管理は地味に重くなります。この「背景に対して読みやすい文字色を選ぶ」という判断を、CSSだけで自動化するcontrast-color()という関数が、主要ブラウザにようやく出そろいました。

背景色から文字色を自動で決める関数

contrast-color()は、引数に渡した色に対して黒と白のどちらがより高いコントラストになるかを判定し、読みやすいほうを返す関数です。色を指定できる場所であればどこでも使えるので、文字色の指定に組み込めば背景色に応じて自動的に切り替わります。

書き方はとてもシンプルで、背景にブランド色を変数で渡しているなら、文字色は次のように一行で済みます。

background-color: var(–brand); color: contrast-color(var(–brand));

判定にはWCAGのコントラスト比の考え方が使われており、読みやすさの最低限を機械的に満たしやすくなります。Chrome 147、Firefox 146、Safari 26と三つのブラウザエンジンが2026年に対応し、安全に使える機能をまとめたBaselineでも新たに利用可能の段階に入りました。ブラウザ間の挙動をそろえるInterop 2026の対象にも含まれており、どの環境でも同じ結果になることが期待できます。

これまでの配色対応との違い

ブラウザが標準で対応する前から、読みやすい文字色を得る方法はいくつかありました。JavaScriptのライブラリで表示時にコントラスト比を計算して色を当てる、Sassの関数であらかじめ対になる色を生成しておく、あるいは単純に人の目で一つずつ黒と白を決めておく、といった具合です。

どれも動きはしますが、手間と保守の負担は残ります。表示時に計算する方法は画面が出るまでにわずかな処理を挟みますし、ビルド時に色を固定する方法は背景色を変えるたびに対の色も作り直すことになります。手作業の指定は、ライトモードとダークモードで色の組を二重に持つことになりがちです。contrast-color()はこの判断をブラウザ側に任せるため、背景色を一か所変えれば文字色もそのまま追従します。

制作現場で効く場面

恩恵が分かりやすいのは、背景色が一定しない場面です。ブランド色をボタンに使うコンポーネントなら、色だけ差し替えれば文字の見やすさは自動で保たれます。ホバーで背景を明るくする演出を入れた場合も、必要に応じて文字色が白から黒へ切り替わります。

ライトとダークの切り替えとも相性がよく、prefers-color-schemeで背景の変数だけを入れ替えれば、文字色の組を別々に書く必要がなくなります。color-mix()などで動的に作り出した色にも追従するため、配色をプログラム的に生成する設計とも噛み合います。デザインシステムのように色をトークンとして一元管理する作り方とも相性がよく、土台の色を一つ変えるだけで関連する文字色がまとめて整うため、配色の調整にかかる手数を減らせます。

地方の中小企業サイトやCMSでは、色の設定を制作者以外が触る場面も少なくありません。管理画面でテーマ色を選ぶと文字色まで適切に決まる、という作りにしておけば、運用する人がコントラスト比を意識しなくても読みにくい配色になりにくくなります。納品後の更新で配色が崩れるリスクを下げられる点は、長く運用するサイトほど効いてきます。

使う前に知っておきたい制約

便利な一方で、現時点の仕様には割り切りもあります。返すのは黒か白のどちらかだけで、中間調の背景に対しては必ずしも最適な結果にならないことがあります。判定の方式を選べる拡張的な書き方も一部ブラウザで試験的に使えるものの、Baselineの範囲ではまだ標準化されていません。

そのため、重要なボタンや本文など可読性が要になる箇所は、自動任せにせず実際の表示で確かめる姿勢は残しておきたいところです。とはいえ、配色の土台を機械的に整える層として置いておく価値は十分にあります。これまで手で管理してきたコントラストの一部を、ようやくCSSそのものに預けられるようになったという意味で、地味ながら実務に効く一歩だと言えます。

View Transitions APIが変えるウェブ制作現場、全ブラウザ対応でページ遷移の新時代

つくば市のホームページ制作会社

長年、ウェブサイトでのページ移動といえば、一瞬でコンテンツが切り替わる「ブラウザのデフォルト動作」が当たり前でした。一方で、モバイルアプリのようなスムーズな画面遷移への憧れから、多くの制作者がJavaScriptライブラリを駆使してアニメーションを実装してきました。2026年現在、View Transitions APIは Chrome 111以降、Edge 111以降、Safari 18以降、Firefox 144以降と主要ブラウザでサポートが完了し、この長い課題に対する答えが提示されました。

クロスドキュメント遷移が実現する制作現場の変化

2026年の最大の転換点は、クロスドキュメント(ページ間)View Transitionsの安定サポート完了です。これにより、index.htmlからcontact.htmlへの移動をJavaScriptなしで、ブラウザネイティブの機能でアニメーション化できるようになりました。従来のSingle Page Application(SPA)でしか実現できなかった滑らかな遷移が、通常のマルチページサイトでも可能になったことで、制作手法そのものが変わりつつあります。

クロスドキュメント遷移の実装は驚くほどシンプルで、JavaScriptは不要。両方のページのCSSに@view-transitionルールを記述するだけでページ間遷移がアニメーション化されます。この簡潔さが、小規模な制作現場でも気軽に導入できる理由となっています。重厚なフレームワークやライブラリを導入することなく、静的サイトでも高品質なユーザー体験を提供できるようになりました。

実際の事例として、デジタルアートマーケットプレイスのArtNodeでは、グリッド表示の絵画から詳細ページへの遷移にクロスドキュメント遷移を適用し、400msの遷移でバウンス率が22%低下したという報告があります。ユーザーが「ギャラリー内にいる」感覚を維持できることが、エンゲージメント向上につながっている例です。

技術的仕組みとパフォーマンスへの影響

View Transitions APIの仕組みは、ブラウザが現在のページのスクリーンショットを撮影し、DOMを更新した後に新しい状態のスクリーンショットを撮影、その2つの間をCSSアニメーションで補間するというものです。この処理はGPU加速によって実行され、GSAPなどのライブラリと比較してオーバーヘッドは最小限。ベンチマークでは、ローエンドデバイスで2〜3倍高速に感じられる結果が報告されています。

パフォーマンス面では、遷移アニメーションがコンテンツの読み込み時間をマスクする効果があります。実際の処理速度が変わらなくても、アニメーションによってサイトが高速に感じられるという知覚パフォーマンスの向上が期待できます。これは特に、コンテンツが重い企業サイトや商品カタログサイトで威力を発揮します。

ただし注意すべき点もあります。遷移時間は500ms以下に抑えることが推奨され、ブラウザがスナップショットをメモリに保持するため、長時間の遷移は避けるべきとされています。実用的には200〜400msが適切な範囲とされており、この範囲であれば快適さとパフォーマンスのバランスが取れます。

実装における具体的な設計パターン

基本的なクロスドキュメント遷移は、両ページのCSSに次のような記述を追加するだけで実現できます:

@view-transition { navigation: auto; }

真の威力を発揮するのは、特定の要素に名前を付けて個別にアニメーションさせる場面です。商品カードから詳細ページへの遷移では、view-transition-nameプロパティで同じ名前を付けることで、ブラウザが自動的に位置、サイズ、透明度を補間してくれます。

たとえば商品一覧ページで「.product-card { view-transition-name: product-1; }」と設定し、詳細ページでも同じ商品画像に「.product-detail img { view-transition-name: product-1; }」を指定すると、カードが詳細ページの画像へと滑らかに変形する動きが実現します。この手法は、ECサイトやポートフォリオサイトで特に効果的です。

現時点での制約として、クロスドキュメント遷移はChrome系ブラウザでのみサポートされており、FirefoxとSafariでは@view-transitionルールが無視される状況です。ただし、この場合は通常のページ遷移にフォールバックされるため、サイト機能に支障は出ません。プログレッシブエンハンスメントの考え方で、対応ブラウザには向上した体験を、未対応ブラウザには従来どおりの体験を提供できます。

制作現場での導入判断と注意点

View Transitions APIの導入にあたっては、アクセシビリティへの配慮が欠かせません。prefers-reduced-motionメディアクエリに対応し、動きを制限したいユーザーには遷移を無効化する実装が求められます。技術的な美しさとユーザビリティのバランスを取ることが、実用的なサイト制作では重要です。

実装時の注意点として、同じview-transition-nameを持つ要素が複数表示されると遷移がスキップされる仕様があります。動的なコンテンツを扱う場合は、要素IDを使った一意な名前付けが必要です。また、長時間のJavaScript処理があるとスナップショット取得が遅延するため、DOM更新処理の最適化も重要になります。

地方の制作現場や中小企業のサイトでは、重厚なフレームワークを避けたいケースも多く、このネイティブAPIの登場は大きな選択肢となります。WordPressのような既存CMSでも、テーマファイルにCSS一行を追加するだけで導入できるため、運用中のサイトへの適用も現実的です。

2026年のウェブでは、ユーザーはネイティブアプリ並みの品質を期待するようになっています。View Transitions APIの全ブラウザサポート完了により、ブラウザが直接処理するハードウェア加速された遷移を最小限のコードで実装できる環境が整いました。技術選択の幅が広がった今、制作者にとってはユーザー体験の品質向上に集中できる良い時代と言えるでしょう。

Chrome 146のスクロールトリガーアニメーション、制作現場のJavaScript依存を減らす新機能

つくば市のホームページ制作会社

Chrome 146でスクロールトリガーアニメーション機能が正式に追加され、スクロール位置に基づいてアニメーションの再生、停止、リセットを制御できるようになりました。この機能により、これまでJavaScriptで煩雑に処理していたスクロール連動エフェクトを、純粋なCSSで宣言的に記述できるようになります。

ウェブページでは、特定のスクロール位置に到達したときにアニメーションを開始するのが一般的なパターンです。従来、開発者はJavaScriptを使って要素がスクロールコンテナのビューポート内にあるかどうかを手動で検出し、対応するアニメーション(要素をビューにスライドインさせるなど)を開始していました。

この新機能では、多くの用途が宣言的に提供される情報に依存していることに注目し、CSSでそうしたインタラクションを宣言的に作成できるようになっています。これにより、ブラウザがインタラクションをワーカースレッドにオフロードできるようになります。つまり、メインスレッドをブロックすることなく、滑らかなスクロールアニメーションが実現されます。

基本的な設定は従来のCSSアニメーションから始まります。例えば、0.35秒で実行され、ページロード後に自動的にトリガーされるアニメーションがあったとしましょう。これをスクロールベースに変更するには、新しい`animation-trigger`CSSプロパティを使用します。

スクロールトリガーアニメーションでは、スクロール進行タイムラインまたはビュー進行タイムラインをソースとする「タイムライントリガー」を使用します。タイムライントリガーを定義するには、`timeline-trigger`プロパティ(または関連するロングハンド)を使用し、例えばビュータイムラインをソースとするトリガーを作成できます。

この技術は、制作現場で重宝されているIntersectionObserverやスクロールイベントリスナーを使った実装を代替できる可能性があります。CSSスクロールアニメーションはメインJavaScriptスレッドではなくコンポジタースレッドで実行されるため、スクロールイベント中のアニメーションのジャンクを防ぎ、Intersection Observer のポーリングを不要にしてCPU使用率を削減します。

Chrome 146ベータ版は2026年2月11日にWindows、Mac、Linux、ChromeOS、Android向けにリリースされ、安定版は3月に提供予定となっています。現在はChrome系ブラウザのみの対応ですが、パフォーマンスとメンテナンスの面から考えると、制作現場にとって待望の機能と言えるでしょう。従来のJavaScriptによる実装と比較して、宣言的なCSS記述によってよりシンプルで高性能なスクロール連動エフェクトが実現できるようになりました。

WordPress協働機能とCSS統合が変える制作現場、2026年の技術転換点

つくば市のホームページ制作会社

ウェブ制作の基盤が大きく変わる2026年。WordPressの協働機能強化と、CSS機能の全ブラウザ対応完了が重なったことで、制作現場は従来のJavaScriptライブラリ依存から、ブラウザネイティブ機能を活用する新しい開発手法へと転換している。この動きは技術面だけでなく、制作効率とサイトパフォーマンスの両面で大きな変化をもたらしている。

WordPress Phase 3の本格展開による協働環境の革新

WordPress 6.9のリリースで始まったPhase 3では、協働機能の優先度を最高位に置いた開発フェーズが制作現場のワークフローを根本的に変えつつある。ブロックレベルのコメント機能、コンテンツ管理における表示・非表示切り替え機能、ダッシュボード全体で使えるコマンドパレットといった新機能により、複数人での制作作業が劇的に効率化された。

特に注目すべきは、従来のWordPressの制作フローにおける課題解決である。記事のドラフトをダウンロードしてWordで校正し、曖昧なフィードバックをメールで返すという煩雑なプロセスから、WordPress内で直接段落を指定してコメントを残せる仕組みへと変わった。クライアントとの制作プロセスにおいて、修正指示の精度が大幅に向上している。

また、2026年は3回のメジャーリリースを予定しており、従来の年2回体制からの復帰によって機能追加のペースが加速している。WordPress 7.0はWordCamp Asiaのコントリビューターデーでライブリリースされる予定で、コミュニティとの連携をより重視する方向性が明確になっている。

CSSネイティブ機能の全ブラウザ対応完了がもたらす制作手法の転換

2026年の制作現場において最も重要な変化は、長年JavaScriptライブラリが担っていた機能が、CSSネイティブ機能として全ブラウザで利用可能になったことである。ブラウザが、かつてライブラリが必要だった機能を吸収している現状では、CSS機能に移行された機能は解釈型JavaScriptではなくネイティブコードで動作するため高速化し、バンドルサイズへの影響もゼロとなる。

具体的には、ドロップダウンメニュー、オートコンプリート、コンテキストメニュー、通知バブルなど、かつて200行以上のJavaScriptが必要だった位置決めロジックが、4行のCSSに集約される状況になっている。CSSアンカーポジショニングによって、従来はPopper.jsやFloating UIといったライブラリが必要だった要素配置が、ブラウザネイティブで実現できるようになった。

さらに、appearance: base-select機能により、リッチでアニメーション付きのドロップダウンを作成しながら、本質的には本物の<select>要素を維持できるため、カスタマイズと内蔵アクセシビリティ機能の両立が実現している。これは制作現場にとって、デザイン性と利用しやすさの両方を追求できる重要な転換点となっている。

Interop 2026によるブラウザ統一とアクセシビリティ向上

Interop 2026は、Apple、Google、Igalia、Microsoft、Mozillaなどブラウザレンダリングエンジンに実質的な貢献を行う企業の代表チームによって運営され、ウェブ制作者とエンドユーザーにとって高優先度の機能の相互運用性向上を目的としている。

今年のInterop 2026では、contrast-color()のような機能により視覚障害者が利用しやすいウェブサイト作成が容易になり、スクロール動作の標準化により運動障害を持つユーザーにとって一貫した体験が保証される。標準化プロセスにおけるアクセシビリティの優先により、よりインクルーシブなウェブが促進されている。

2026年3月には、多くの強力な機能が相互運用性の閾値を超えてBaseline新規利用可能となった一方、大量の確立されたツールが広く利用可能なマイルストーンに到達した。このペースは、ウェブプラットフォームの急速な進歩を示している。制作現場では、ポリフィル依存度が減少し、ネイティブブラウザサポートに焦点を当てることで、ページロード時間の短縮とクリーンなコードベースの実現につながっている。

Chrome 147による開発体験の革新とDevTools機能拡張

Chrome 147では、制作現場の開発効率に直結する機能が多数導入された。element.startViewTransition()が任意のHTML要素で利用可能となり、要素がトランジション用のスコープを確立することで、トランジション疑似要素が祖先のクリップと変換の影響を受け、別々の要素での複数のトランジションが同時実行可能になっている。

Chrome 147のDevToolsでは、コンソールとソースパネルでのコード提案機能が完全なコード生成まで拡張された。必要なロジックを説明する自然言語コメント(例:「すべてのimg要素を巡回して有効なalt属性をチェック」)を入力し、Cmd+i(Mac)またはCtrl+i(Windows/Linux)を押すことで生成を開始できる。

また、DevToolsが圧縮されたボディを自動デコードして、可読性のあるコンテンツをPayloadの下に直接表示し、リクエスト一覧にTransfer Sizeの情報を含めることで、より効率的な開発とデバッグが可能になっている。これらの機能により、制作現場でのトラブルシューティング時間が大幅に短縮されている。

コンテナクエリによるコンポーネント設計の根本的変化

従来のレスポンシブデザインは主にビューポートサイズに紐付いたメディアクエリに依存していたが、コンポーネントが異なるコンテキストやレイアウトで再利用される際に破綻し、追加のJavaScriptや複雑なCSSハック無しには個別適応できなかった。コンテナクエリは、コンポーネントが自身のサイズに応じて反応することを可能にし、UIを真にモジュラーで適応可能にすることで、この問題を解決している。

制作現場では、この変化により単一コンポーネントを複数のレイアウトコンテキストで再利用する際の設計アプローチが根本的に変わった。従来は各コンテキスト用の個別クラス設定が必要だったものが、コンテナクエリにより自動的に適応するコンポーネント設計が可能になっている。

特に、WordPressのブロックエディタにおいては、同じブロックが狭いサイドバーと広いメインコンテンツエリアで異なる表示を自動的に提供できるようになり、制作者のメンテナンス負荷が大幅に軽減されている。これは制作効率だけでなく、エンドユーザーの編集体験向上にも直結している。

実践的な移行戦略と制作現場への影響

この技術転換において、制作チームが直面する課題は実装レベルから戦略レベルまで多岐にわたる。最大の変化は、単一の構文機能ではなく、CSSがより多くのレイアウトロジック、状態認識スタイリング、インターフェースの美しさを自力で処理するという事実である。これは、チームのアーキテクチャ計画の仕方を変え、「モダンフロントエンド」の実際の意味を変えている。

スマートな移行は段階的導入である。利益が明らかな部分から開始し、コードと複雑さの削減を測定してから拡張するという方針が推奨されている。これは、急激な技術導入よりも確実な効果測定を重視するアプローチである。

現在の制作現場では、WordPress Phase 3の協働機能と、CSSネイティブ機能の統合により、従来の「WordPressテーマ開発+JavaScriptライブラリ組み合わせ」から「WordPressブロックエディタ拡張+ブラウザネイティブ機能活用」への移行が加速している。この変化は、開発者の技術スタック選択だけでなく、クライアントワークでの提案内容やプロジェクト設計の根本的な見直しを促している。

2026年は、ウェブ制作における技術選択の基準が「できること」から「メンテナンス性」と「持続可能性」へとシフトする転換点となっている。制作現場全体に浸透するこの変化は、長期的にはより安定したウェブサイト運営と、制作コストの最適化につながると予想される。

CSS Subgridがもたらす制作現場の転換点、2026年の全ブラウザ対応完了で実現する新しいレイアウト設計

つくば市のホームページ制作会社

Web制作現場で長年課題となっていた複雑なグリッドレイアウトの制御が、ついに根本的な解決を迎えています。CSS Grid Subgridが2026年3月15日に正式なBaseline Widely Availableステータスを取得し、全ブラウザ対応完了により安全に本格運用できる環境が整いました。地方の制作現場から大規模サイトまで、これまでJavaScriptに頼らざるを得なかった入れ子グリッドの問題を、純粋なCSSで解決できる新時代が始まっています。

Subgridが実現する制作現場の変化

CSS Grid Subgridは、grid-template-columnsとgrid-template-rowsのためのsubgrid値として実装され、親グリッドの行・列の定義を子要素が継承できる仕組みです。入れ子グリッドが親のトラック定義を引き継ぎ、カード内コンテンツが共通のベースラインに揃うという、従来のCSSでは解決困難だった課題を解消します。

特に影響が大きいのは、line-clamp: 1やmin-height: 4remによる固定高さのハックが不要になることです。コンテンツの長さが異なるカード要素でも、Subgridを使えばコンテンツを切り詰めたり任意のピクセル値に固定することなく、自然な配置で統一感のあるレイアウトが実現できます。

制作効率の面では、複雑な入れ子レイアウトがJavaScriptではなくCSSだけで実現できるようになり、メンテナンス性と表現力が大幅に向上しています。

2026年のブラウザサポート状況

Subgridのブラウザサポートは段階的に進化し、Chrome 117以降、Edge 117以降、Firefox 71以降、Safari 16以降で対応が完了しています。実装の経緯を見ると、Firefox が2019年に先駆けて実装、Safari が2022年に追従、Chromium系は2023年9月という流れでした。

現在のグローバルサポート率は約97%に達し、2026年時点で本格的な本番運用に適したレベルです。残り3%のユーザーは主に古いブラウザを使用しており、モダンCSS機能全般をサポートしていない環境のため、@supportsでの段階的対応が推奨されています。

@supports (grid-template-rows: subgrid)による機能検出を使えば、Subgrid非対応ブラウザには従来のFlexboxやGrid Layoutでのフォールバックを提供できます。つくばのような地方都市でも、クライアントの環境を問わず安心してSubgridを活用したサイト設計が可能になっています。

実践的な活用パターンと設計手法

Subgridの典型的な活用場面は、画像・タイトル・説明・CTAで構成されるカード群で、タイトル長の違いがCTAの高さにばらつきを生むケースです。従来は固定高やJavaScriptでの高さ調整が必要でしたが、Subgridを適用すれば自然な配置で統一感を保てます。

実装ではgrid-template-columns: subgridやgrid-template-rows: subgridを子グリッドに設定し、親グリッドの列・行線と連携させます。片方の軸だけSubgridにして、もう片方は独自定義する組み合わせも可能で、柔軟な設計に対応できます。

注目すべきはSubgridが独自のgapを持てることです。親グリッドの間隔設定を継承しつつ、子グリッド内の行・列間隔は別途調整できるため、コンポーネント単位での微調整が効きます。

制作現場では、Chrome DevToolsのGrid表示機能でSubgridの構造を視覚的に確認できるため、デバッグやレイアウト検証の効率も上がっています。

Container Queriesとの組み合わせによる次世代レイアウト

Subgridの真価は、Container Queriesとの組み合わせで発揮されます。Grid・Container Queries・Subgridを併用することで、レイアウトライブラリへの依存度が年々低下している状況です。

Container Queriesによりコンポーネントが配置される祖先要素のサイズに応じたスタイリングが可能になり、Subgridと組み合わせることで真にコンテキストに応じたコンポーネント設計が実現できます。これは従来のビューポート基準のメディアクエリでは不可能だった、再利用性の高いコンポーネント開発を可能にします。

さらにCSS Anchor Positioningも2026年に各ブラウザで実装が進んでおり、ツールチップやポップオーバーの配置制御もJavaScript不要で実現できるようになっています。

制作現場においては、W3CのReliable Candidate Recommendationsにもsubgridが含まれ、子要素が親グリッドのトラックに参加する仕組みが正式に安定技術として認められたことで、中長期的な技術選択として安心して採用できる環境が整いました。CSS Grid Subgridは、Web制作における新しいスタンダードとして、2026年以降の制作現場を支える重要な技術になっています。