通常これまでは、1px のボーダーのグラデーションを実現する際、背景画像を用意して[background-image]プロパティを利用するのが一般的な方法でした。
しかしレスポンシヴ・デザインやスマートフォン対応のWebサイトの構築などにより、この方法では相応しくないケースが多くなってきました。
何か他の方法を探して代替しなければなりません。
さて。ここでブレイクスルー。
今回は[CSS3]のテクニックの1つとして、ボーダーのグラデーションを、画像を使わずに CSS のみで表現する方法をご紹介します。
まずはサンプルをご覧ください。
綺麗なグラデーションになっていますね。
ボーダー・グラデーション:サンプル
HTML の記述は以下のように。
<div id="sample"> <p>このボックスの枠(border)を、CSS3 のテクニックを使ってグラデーション化させます。</p> </div>
そして[CSS]での指定はこちらになります。
#sample { width:100%; height:100%; border-left:1px solid #ff0000; border-right:1px solid #0000ff; } #sample:before, #sample:after { content:""; display:block; height:1px; width:100%; background:-webkit-gradient(linear, left top, right bottom, from(#f00), to(#00f)); background:-moz-linear-gradient(left, #f00, #00f); background:linear-gradient(left, #f00, #00f); }
今のところ、CSS で[border]というプロパティにグラデーションをかける方法はありませんから、実際には[background]プロパティを利用して実装することになります。
今回のケースでは、疑似要素[:before]と[:after]に、height:1px;
を指定して、その背景としてグラデーションを施すことによってボーダーを実現しています。
ちょっとしたテクニックですが、この方法を駆使することでレスポンシブ・デザインでも対応できるうえ、画像を使わないのでよりパフォーマンスの高いサイトを作ることが可能になります。
余計なタグを挿入して HTML を汚すこともありませんし、応用すれば様々な表現も可能になります。
覚えておいて損はないですね。
ボーダー・グラデーション:サンプル