CSSでノイズ効果を作る方法!初心者向け詳細解説とサンプルコードあり

CSSでノイズ効果を作る方法についての画像CSS
この記事は約9分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

CSSはウェブデザインに欠かせない言語の1つです。

中でも、ノイズ効果は人気の高い演出方法の1つで、テクスチャを表現する際に使われます。

本記事では、CSSでノイズ効果を作る方法を初心者向けに詳しく解説します。

さらに、問題点や対処法、応用例についても触れます。

サンプルコードも提供するので、ぜひ参考にしてみてください。

●ノイズ効果とは?

ノイズ効果とは、粗さやざらつきを表現するために用いられる演出方法です。

テクスチャや背景に使われることが多く、ウェブデザインにおいては、レトロやヴィンテージなどのデザインによく使われます。

ノイズ効果を表現するためには、CSSに専用のプロパティが用意されています。

●ノイズ効果の作り方

ノイズ効果を作るためには、次のようなCSSプロパティを使います。

background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"%3E%3Cdefs%3E%3Cpattern id="pattern-noise" x="0" y="0" width="200" height="200" patternUnits="userSpaceOnUse"%3E%3Crect fill="%23ffffff" width="200" height="200" /%3E%3Cpath stroke="%23000000" stroke-opacity=".1" d="M -1,1 l 2,-2 M 0,200 l 200,-200 M 198,201 l 2,-2" /%3E%3C/path%3E%3C/pattern%3E%3C/defs%3E%3Crect fill="url(%23pattern-noise)" width="100%" height="100%" /%3E%3C/svg%3E');

上記のコードは、ノイズ効果を作るための最もシンプルな方法です。

まず、background-imageプロパティで、data URIスキームを使ってSVG画像を読み込みます。

このSVG画像は、<pattern>要素で定義されたテクスチャパターンを表現しています。

SVG画像には、単純な直線パスが描かれており、これによりノイズ効果が表現されます。

fill属性でパターンの色を指定し、widthおよびheight属性でパターンのサイズを指定します。

最後に、rect要素でSVG画像を表示する領域を指定します。

このコードをHTMLの<body>タグ内に置くと、背景にノイズ効果が表示されます。

<body style="background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"%3E%3Cdefs%3E%3Cpattern id="pattern-noise" x="0" y="0" width="200" height="200" patternUnits="userSpaceOnUse"%3E%3Crect fill="%23ffffff" width="200" height="200" /%3E%3Cpath stroke="%23000000" stroke-opacity=".1" d="M -1,1 l 2,-2 M 0,200 l 200,-200 M 198,201 l 2,-2" /%3E%3C/path%3E%3C/pattern%3E%3C/defs%3E%3Crect fill="url(%23pattern-noise)" width="100%" height="100%" /%3E%3C/svg%3E')">
  <h1>ノイズ効果の例</h1>
  <p>ここに本文を書きます。</p>
</body>

この例では、<body>タグのstyle属性で、background-imageプロパティに上記のコードを指定しています。

この方法は、最も簡単な方法の1つですが、SVG画像を読み込むために多くの文字列を記述する必要があるため、見た目が煩雑になります。

●ノイズ効果の応用例

ノイズ効果は、さまざまな応用例があります。

ここでは、代表的な2つの応用例について紹介します。

【例1:ノイズ効果を使ったボーダーの作成】

ノイズ効果を使って、ボーダーを作成することができます。

次のCSSコードを使用すると、ノイズ効果のボーダーを設定することができます。

.border-noise {
  border: 1px solid;
  border-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"%3E%3Cdefs%3E%3Cpattern id="pattern-noise" x="0" y="0" width="200" height="200" patternUnits="userSpaceOnUse"%

このCSSコードでは、.border-noiseクラスにノイズ効果のボーダーを適用しています。

borderプロパティで、ボーダーの色や幅を指定し、border-imageプロパティで、ボーダーに使用するSVG画像を読み込んでいます。

ボーダーの幅は、最後の1で指定されています。

このコードをHTMLの<body>タグ内に置くと、次のようにノイズ効果のボーダーが表示されます。

<div class="border-noise">ノイズ効果のボーダー</div>

この例では、.border-noiseクラスを持つ<div>要素にボーダーが適用されています。

【例2:ノイズ効果を使った背景のアニメーション】

ノイズ効果を使って、背景にアニメーションを付けることができます。

次のCSSコードを使用すると、背景にノイズ効果のアニメーションを設定することができます。

.background-noise {
  background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200"%3E%3Cdefs%3E%3Cpattern id="pattern-noise" x="0" y="0" width="200" height="200" patternUnits="userSpaceOnUse"%3E%3Crect fill="%23ffffff" width="200" height="200" /%3E%3Cpath stroke="%23000000" stroke-opacity=".1" d="M -1,1 l 2,-2 M 0,200 l 200,-200 M 198,201 l 2,-2" /%3E%3C/path%3E%3C/pattern%3E%3C/defs%3E%3Crect fill="url(%23pattern-noise)" width="100%" height="100%" /%3E%3C/svg%3E');
  animation: noise 2s infinite linear alternate-reverse;
}

@keyframes noise {
  from {
    transform: translate(calc(-100% + 1px), calc(-100% + 1px));
  }
  to {
    transform: translate(0, 0);
  }
}

このCSSコードでは、.background-noiseクラスにノイズ効果のアニメーションを適用しています。

background-imageプロパティで、背景に使用するSVG画像を読み込み、animationプロパティで、アニメーションを設定しています。animationプロパティの値は、次の通りです。

  • noise:アニメーションの名前を指定します。
  • 2s:アニメーションの時間を指定します。
  • infinite:アニメーションを無限に繰り返します。
  • linear:アニメーションを等速で繰り返します。
  • alternate-reverse:アニメーションを交互に繰り返し、逆方向から始めます。

また、@keyframesルールで、アニメーションのキーフレームを定義しています。

fromtoキーワードで、アニメーションの開始と終了の状態を指定します。

transformプロパティで、SVG画像を移動させることにより、アニメーションを表現しています。

このコードをHTMLの<body>タグ内に置くと、次のように背景にノイズ効果のアニメーションが表示されます。

<body class="background-noise">
  <h1>ノイズ効果のアニメーション</h1>
  <p>ここに本文を書きます。</p>
</body>

この例では、<body>タグに.background-noiseクラスを指定し、背景にノイズ効果のアニメーションが適用されています。

●問題点と対処法

ノイズ効果を使う際には、下記の問題点に注意する必要があります。

  1. ノイズ効果のパターンが大きすぎる場合、ファイルサイズが大きくなることがある。
  2. ノイズ効果のパターンが密集しすぎる場合、見た目が悪くなることがある。
  3. ノイズ効果を使用すると、テキストが読みにくくなる場合がある。

これらの問題に対する対処法は、次の通りです。

  1. パターンのサイズを小さくすることで、ファイルサイズを減らすことができます。
    また、ノイズ効果を使用するページが重くなる場合は、画像の最適化や、CDNの使用などにより、ページの読み込み速度を改善することができます。
  2. パターンの密度を調整することで、見た目を改善することができます。
    また、単色の背景色を使用することで、ノイズ効果が強調されすぎず、見た目がスッキリする場合があります。
  3. テキストが読みにくくなる場合は、背景色やテキスト色を変更することで対処することができます。
    また、ノイズ効果を使用する領域を制限することで、テキストの読みやすさを確保することもできます。

まとめ

本記事では、CSSを使用したノイズ効果について、使い方、問題点と対処法、応用例を紹介しました。

ノイズ効果は、単調なデザインをアクセントを加えたい場合や、レトロな雰囲気を表現したい場合に有効な手段です。

しかし、使いすぎると見た目が悪くなったり、読みにくくなる場合があるため、適度な使用が求められます。