2026年10月14日時点で、自分が通常設定で確かめた範囲では、CSSのrandom()が動いたのはSafari 26.5.2だけでした。
Chrome 152では動きませんでした。
自分のサイトの肉球スタンプに入れて、ブラウザごとの違いを確かめた記録です。
🎥 この記事の内容は動画でも解説しています。
非対応のブラウザでは、random()を書いた宣言が無視されて、元の見た目に戻ります。
なので、なくても困らない装飾に限って使うのが前提です。
出典では、Chromium 148以降は実験機能のフラグ付きで動き、Firefoxは未対応とされています。
random()でできること
CSSの値を、要素ごとにランダムに決める関数です。
MDNの書き方はこうです。
random(最小値, 最大値)
random(最小値, 最大値, きざみ)
たとえばrotate: random(-16deg, 16deg)と書くと、同じクラスを付けた要素でも、角度が要素ごとに違う値になります。
きざみを付ければ、random(20px, 120px, 20px)のように20pxおきの値だけになります。
デモ付きの解説は、ICS MEDIAの記事がわかりやすいです。
対応ブラウザを、自分の環境で確かめた
MDNでは、まだBaselineではない実験的な機能として載っています。
なので、自分の手元で確かめました。
| ブラウザ | 結果 | 確かめ方 |
|---|---|---|
| Chrome 152(既定の設定) | 動かない | CSS.supports('order', 'random(1, 2)')がfalse。random()を書いた高さが無効になった |
| Safari 26.5.2(Mac) | 動いた | カードごとに肉球の向きと位置が違って見えた(画面収録) |
| Chromium 148以降(実験機能のフラグ付き) | 動くとされる | Polypaneの記事による情報。自分では未確認 |
| Firefox | 未対応とされる | 同じ記事による情報。自分では未確認 |
下2行は、Polypaneの記事(2026年6月24日付)から拾いました。
同じ記事には、Safari 26.2以降でも一部のデモは正しく動かないとも書かれています。
自分が確かめたのは、Chrome 152の通常設定が「動かない」ことと、Safari 26.5.2で肉球が動いたことまでです。
肉球スタンプに入れた2行
このサイトの記事カードには、PCでホバーすると肉球がバンッと押されるスタンプがあります。
全カードで同じ角度だったので、向きと位置をカードごとにばらしてみました。
.c-card__paw {
/* 従来の固定表示(非対応ブラウザはこのまま) */
transform: translate(-50%, -50%) scale(2.4) rotate(-8deg);
/* 対応ブラウザだけ、カードごとにばらす */
rotate: random(-16deg, 16deg);
translate: random(-7%, 7%) random(-7%, 7%);
}
アニメーションはtransformで動かしているので、別プロパティのrotateとtranslateに書けば、今のアニメは触らずに足せます。
非対応ブラウザでは、この2行が無効になるだけです。
なので@supportsで囲まなくても、表示は壊れません。
Safariで記事一覧を開くと、実際に動きます。
Chromeで見ると、全部同じ角度のままです。
Sassで書いたらビルドが落ちた
このテーマはSassで書いているので、最初は上の通りにrandom(-16deg, 16deg)と書きました。
そうしたら、ビルドがエラーで止まりました。
原因は、Sassにもrandom()という組み込み関数があることです。
Sassが先に自分の関数だと解釈して、引数の形が合わずに落ちました。
CSSの関数としてそのまま出力したいので、unquote()で文字列として渡します。
/* SCSS */
.c-card__paw {
rotate: unquote("random(-16deg, 16deg)");
translate: unquote("random(-7%, 7%) random(-7%, 7%)");
}
/* ビルド後のCSS */
.c-card__paw {
rotate: random(-16deg, 16deg);
translate: random(-7%, 7%) random(-7%, 7%);
}
これで、出力されたCSSにはrandom()がそのまま入ります。
使う場所の線引き
- なくても成立する演出だけにする(非対応ブラウザでは、固定の見た目に戻るだけ)
- 記事の並び順や、重要なボタンの位置・色には使わない(ICS MEDIAの記事も、読みづらさや誤操作につながるとして注意している)
- 値は、要素が表示されている間は固定される(ホバーのたびに変わるわけではない)
自分は、肉球スタンプのような、あってもなくてもいい動きから入れました。
入れる前に、非対応のブラウザで固定の見た目に戻ることと、Safariで動くことを、実機で見て確かめています。
