CSSのグラデーションを応用してストライプ柄や文字の下にマーカーを作る

 CSSのグラデーションの機能を、うまく応用させると、CSSだけでストライプやマーカーを表現する事ができます。
画像を使わなくても表現できるので、コードを直すだけで様々な変更ができ、とても便利です。
今回のサンプルは、CSSのグラデーションの機能を使って作ります。
グラデーションの基本的な使い方は、以下のページより確認してください。

CSSでグラデーションを使う

1.CSSのグラデーションを使って、ボーダーを作る

まずは、ボーダーの作り方から説明します。
HTMLを用意します。

<div class="gra"></div>

CSSで大きさを決めます。

CSS
.gra{
width:200px;
height:200px;
}

1-1.グラデーションを設定する

まずは、普通に縦向きのグラデーションを作ってみます。
CSS
.gra{
〜省略〜
background-image : linear-gradient(to top, red, blue);
}




この様になります。

1-2.色を、任意の場所で一気に変更する

グラデーションの位置を工夫する事で、赤から青への段階的なグラデーションではなく、赤と青の二色が、一気に変更する様にする事ができます。
具体的には、今回のサンプルの場合、二色の色の変更点を、同じにします。
わかりやすい様に、以下の様に50%で指定します。

CSS
.gra{
〜省略〜
background-image : linear-gradient(to top, red 50%, blue 50%);
}

色の変更点を同じにする事で、グラデーションではなくパキっと色が変わります。



1-3.背景の大きさを変更する

background-sizeプロパティで、画像の大きさを変えます。
この時、わかりやすいように、background-repeatプロパティをno-repeatに指定しておきます。(後ほどその設定は消します。)
CSS
.gra{
〜省略〜
background-size:50px 50px;
background-repeat:no-repeat;
}

横幅と高さが、50pxずつの四角形が、div(200px - 200px)の中にある状態になります。


この様に、background-sizeを指定すると、通常の表示領域(今回の場合、200px - 200pxの四角形)よりも小さい大きさの背景画像(今回の場合、赤と青のボーダー)を表示させる事ができます。
この状態で、background-repeatを通常のrepeat状態に戻します。

CSS
.gra{
〜省略〜
background-size:50px 50px;
/* background-repeat:no-repeat; */
}

以下の様に表示されます。


これで、ボーダーの完成です。
あとは、色や大きさを好みに合わせて変えていきます。
又、色の指定は、透明(transparent)を指定することもできます。
例)
背景の片方を透明にして、線分を20%にして、大きさを20pxに指定

.gra {
    width: 200px;
    height: 200px;
    background-image: linear-gradient(to top, #f77237 20%, transparent 20%);
    background-size: 20px 20px;
}


向きをto leftもしくは、to rightに変えれば、ストライプになります。

1-4.【応用】斜めのストライプ

同じ考え方で、斜めのパターンをグラデーションで作成する事が可能です。
ただし、全ての大きさでできるわけではなく、background-sizeの大きさによってはずれてしまう場合もあります。

.gra {
    width: 200px;
    height: 200px;
    background-image: linear-gradient(45deg, #f77237 25%, transparent 25%, transparent 50%, #f77237 50%, #f77237 75%, transparent 75%);
    background-size: 35px 35px;
}



以上の様に表示されます。
斜めに、グラデーションを指定します。
例えば、background-sizeを、30px 30px に指定すると、うまく繰り返されず、エッジがかなり目立ってしまいます。エッジの目立たないサイズで作成してください。



2.CSSで、マーカーを引いた様なデザインを作る

次に、テキストにマーカーを引いた様なデザインを作ります。
HTMLを準備します。

 <p>文字の中で、<span class="marker">マーカー</span>を引いた感じにする。</p>

上記のコードのspanタグの箇所にマーカーを引いた様なデザインにしていきます。

クラスmarkerに、縦方向にグラデーションを指定する。

.marker {
    background-image: linear-gradient(to top, #f77237 25%, transparent 25%);
}


これだけで完成。
後は、色を変えたり線分を調整するなどして、好きな大きさと色に指定できる。

また、javascriptやCSSのアニメーションを使用して、background-sizeのx方向の大きさを、0から100%に指定すれば、マーカーが引かれている様なアニメーションにする事も出来る。

CSSのグラデーションを応用すると、以上の様な事が出来るので、覚えておくと良いでしょう。