8ステップで完成!CSS3で「斜めのストライプ」を作る方法

各ブラウザのCSS3の実装も進み、最近では画像を使わずにサイト上のブロックの背景をCSSだけでデザインすることが増えてきていると思います。特にスマホサイトなどではできるだけ画像を使わずに容量をおさえておきたいということから、その傾向が強いと思います。

今回は背景パターンとしてよく使われる「斜めストライプ」をCSSのみで作る方法についてまとめてみようと思います。

サンプル

今回は以下のような「斜めのストライプ」の背景パターンのCSSでの作り方を、8つのステップにわけて解説していきたいと思います。

まず、前準備として以下のようにdiv要素を作っておきます。このdiv要素に対してCSSを指定していきます。

<div id="div2269"></div>

それから、斜めストライプを作成する上で必要なCSSは、「linear-gradient()関数」「background-sizeプロパティ」となります。事前にご確認ください。

ステップ1 ストライプを表示する領域を作る

まずストライプを表示させるための領域を確保します。ここでは以下のように幅、高さ、ボーダーを指定しています

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
}
</style>

ブラウザでの表示結果は以下のようになります。

ステップ2 グラデーションを指定する

ステップ1で確保した領域に対して、linear-gradient()関数を使ってグラデーションをかけます。ストライプは2色のボーダーでできているので、使用したい2色を選んでグラデーションを作ります。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  /* 上⇒下への白からピンクに変わっていくグラデーションを指定 */
  background-image: linear-gradient(#fff, #ffc0cb);
}
</style>

ブラウザでの表示結果は以下のようになります。

ステップ3 上半分のグラデーションをなくす

白からピンクに変わっていくグラデーションの上半分を白のみで表示させるようにします。linear-gradient()関数の引数に指定した#fffの後にスペースを開けて50%と指定すると、上から50%までの領域は白のみで表示されるようになります。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  /* #fffの後にスペースを開けて50%と指定 */
  background-image: linear-gradient(#fff 50%, #ffc0cb);
}
</style>

ブラウザでの表示結果は以下のようになります。

ステップ4 下半分のグラデーションをなくす

上半分のグラデーションをなくしたら、今度は下半分をピンクのみで表示させるようにします。linear-gradient()関数の引数「#fff 50%, #ffc0cb」の間に「#ffc0cb 50%」を挿入します。そうすることで2色のボーダーが表示されるようになります。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  /* 「#fff 50%, #ffc0cb」の間に「#ffc0cb 50%」を挿入 */
  background-image: linear-gradient(#fff 50%, #ffc0cb 50%, #ffc0cb);
}
</style>

ここがひとつポイントとなるところだと思うので、少々詳しく説明しておきます。「background-image: linear-gradient(#fff 50%, #ffc0cb 50%, #ffc0cb);」という指定をしていますが、このように指定すると上から下に向かって以下のように表示されるようになります。

  • 0% ⇒ 50%:白で表示
  • 50% ⇒ 50%:白からピンクへのグラデーション(実質表示なし)
  • 50% ⇒ 100%:ピンクで表示

ブラウザでの表示結果は以下のようになります。

ステップ5 ボーダーを斜めにする

2色のボーダーが出来上がったところで、今度はその2色のボーダーを斜めに表示させるようにします。ここでは-45度傾けていますが、linear-gradient()関数の引数の一番前に「-45deg」と角度を指定すると、グラデーション(ここではすでにグラデーションではなくなっていますが)を-45度傾けることができます。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  /* linear-gradient()関数の引数の一番前に「-45deg」と指定 */
  background-image:
    linear-gradient(-45deg, #fff 50%, #ffc0cb 50%, #ffc0cb);
}
</style>

ブラウザでの表示結果は以下のようになります。

ステップ6 ボーダーの領域を細かく分割する

ここのステップは、説明がわかりやすくなるために入れています。「background-sizeプロパテ」ィを使うと背景画像のサイズを指定することができます。ここでは、ひとまず幅50px、高さ50pxで指定し、「150px × 150px」の領域を9分割しています。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  background-image:
    linear-gradient(-45deg, #fff 50%, #ffc0cb 50%, #ffc0cb);
  /* 幅50px、高さ50pxで背景画像のサイズを指定 */
  background-size: 50px 50px;
}
</style>

ブラウザでの表示結果は以下のようになります。だいぶ斜めストライプっぽくなってきました。

ステップ7 ストライプを作る

最後の難関となります。上記で9分割したそれぞれのパーツを以下のように4つのボーダーが入るようにしていきます。ステップ3とステップ4では半分ずつ色をわけましたが、今度は半分で分けた部分をさらに半分ずつ色をわけるようにします。これを並べる事で斜めのストライプが出来上がります。

こちらもステップ3とステップ4と同じように以下のように「linear-gradient()関数」を使ってボーダーを作っていきます。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  /* -45度斜めから25%、50%、75%、100%と
    ボーダーが交互に色違いとなるように指定 */
  background-image: linear-gradient(
    -45deg,
    #fff 25%,
    #ffc0cb 25%, #ffc0cb 50%,
    #fff 50%, #fff 75%,
    #ffc0cb 75%, #ffc0cb
  );
  background-size: 50px 50px;
}
</style>

ここも複雑でわかりにくいと思うので、少々詳しく説明しておきます。「background-image:linear-gradient(-45deg, #fff 25%, #ffc0cb 25%, #ffc0cb 50%, #fff 50%, #fff 75%, #ffc0cb 75%, #ffc0cb);」という指定をしていますが、このように指定すると右下(-45度)から左上に向かって以下のように表示されるようになります。

  • 0% ⇒ 25%:白で表示
  • 25% ⇒ 25%:白からピンクへのグラデーション(実質表示なし)
  • 25% ⇒ 50%:ピンクで表示
  • 50% ⇒ 50%:ピンクから白へのグラデーション(実質表示なし)
  • 50% ⇒ 75%:白で表示
  • 75% ⇒ 75%:白からピンクへのグラデーション(実質表示なし)
  • 75% ⇒ 100%:ピンクで表示

ブラウザでの表示結果は以下のようになります。これで斜めのストライプが出来上がりました。

ステップ8 ストライプのサイズの調整

最後に出来上がったストライプのサイズをbackground-sizeで指定します。ステップ6と同じです。細かく分割すれば、それだけ細いストライプになっていきます。ここでは幅8px、高さ8pxの背景サイズにして、幅150px、高さ150pxの領域に対して約351分割させています。

<style>
#div2269 {
  width: 150px;
  height: 150px;
  border: 1px solid #000;
  background-image: linear-gradient(
    -45deg,
    #fff 25%,
    #ffc0cb 25%, #ffc0cb 50%,
    #fff 50%, #fff 75%,
    #ffc0cb 75%, #ffc0cb
  );
  /* 幅8px、高さ8pxで背景画像のサイズを指定 */
  background-size: 8px 8px;
}
</style>

ブラウザでの表示結果は以下のようになります。


以上で、「斜めのストライプ」の出来上がりです。けっこうlinear-gradient()関数の指定のところが複雑ではありますが、ステップ踏んで見ていくと理解しやすくなると思います。そして一回理解してしまえば、もう問題なくいろんなタイプのストライプを作ることができると思います。

今回はクロスブラウザーは考えずに説明しているので、特にSafariやIEではうまく表示されないと思います。上記でも紹介した以下のサイトを参考に適宜プレフィックスなどをつけて対応してみてください。

コメント一覧

  1. ピンバック: 6ステップで完成!CSS3で「千鳥格子」を作る方法 | mae's blog

     

  2. ピンバック: CSS3のrepeating-linear-gradient関数を使うと簡単に「ストライプ」が作れる | mae's blog

     

  • 必須

コメント