HAYATASTIC
DESIGN.

DESIGN & DEVELOPMENT NOTES

CSSのrandom()で、カードの装飾だけ実装してみた

CSSのrandom()で、小さな飾りを変えてみました。固定値と比べられるデモと動画を見ながら、僕ならどこに使うか、未対応の環境でどう見せるかを考えます。

CSSのrandom()で、カードの装飾だけ実装してみたのアイキャッチ

カードの端に小さな飾りを置くとき、少しずつ位置をずらしたくなること、ありますよね。全部同じだと整いすぎるけど、一つずつ指定するのもちょっと手間です。

CSSのrandom()で、こういう小さなばらつきを作れたら面白そうだなと思ってます。今回は、カードの下にある飾りだけ実装してみました。

僕はまず、文字やカードのレイアウトは固定したままにしています。変えるのは余白の中の飾りだけ。左を固定値、右をランダムにして、違いを見比べられるようにしました。

まずは、右側の飾りを変えてみる

下のデモで「もう一度配置する」を押すと、右側の飾りが変わります。左側はそのままなので、どこが変わったか分かりやすいと思います。

「固定値に切り替える」を押すと、左右が同じ配置に。もう一度押すと、ランダムな表示に戻ります。

CodePenでデモとコードを見る

操作の流れを、約12秒の動画にもまとめました。再配置を2回、固定値へ切り替え、ランダムに戻す順です。字幕付き・無音なので、そのまま再生できます。

変えるのは、位置・大きさ・傾き・透明度

ランダムにしているのは、横位置、縦位置、大きさ、傾き、透明度の5つです。色と形は、あらかじめ決めておきました。

left: random(3%, 91%);
top: random(8%, 72%);
width: random(8px, 24px);
rotate: random(-30deg, 30deg);
opacity: random(.5, 1);

例えばwidth: random(8px, 24px)なら、8〜24pxの範囲で大きさが決まります。ほかの指定も同じように、変えてよい範囲を先に決めています。

どこにでも置けるようにすると、文字と重なるかもしれません。今回は文字の下に装飾用の領域を作り、その中だけで位置を変えるようにしました。読んでほしいところは動かさず、飾りの方に少し遊びを持たせる感じです。

ボタンの操作には、JavaScriptも使ってます

位置や大きさの乱数を作るのはCSSですが、デモ全体がCSSだけでできているわけではありません。

「もう一度配置する」を押したときに装飾の要素を作り直す処理と、固定値への切り替えにはJavaScriptを使っています。Math.random()で数値を作ってCSSへ渡す形ではなく、値を決める部分をrandom()に任せています。

自動で動き続けるアニメーションにはしていません。ボタンを押したときだけ配置が変わる、小さな比較デモです。外部ライブラリも使っていません。

対応していない環境では、固定値で表示する

新しい指定を試すときは、使えない環境でどう見えるかも考えておきたいです。

今回は飾りごとの固定値を先に用意し、@supportsで使う指定に対応しているかを確認してから、右側だけランダムな値で上書きしています。対応していないブラウザでは、固定配置のまま表示する設計です。

Chrome 156の環境で、ボタンを押すと配置が変わることを確認しました。ほかのブラウザは今回の確認範囲には含めていないので、実際の制作に使うなら、対象の環境でも確認してからにしたいです。

僕なら、余白の小さな飾りから使ってみる

イベントの告知やポートフォリオ、キャンペーンページの背景など。きっちりそろえるより、少しばらつきがあった方が合いそうな場面で試せそうです。

ただ、見出しやボタンの場所まで変わると、読む人は困りますよね。今回のように、伝える内容と操作する場所は決めたまま、飾りの範囲だけ変えるくらいが使いやすそうだなと思いました。

デモにはHTML・CSS・JavaScriptも載せています。まずは再配置と固定値の切り替えを、見比べてみてください😊

固定値とCSS random()の比較デモを見る

参考にした資料