cssでグラデーションをつける
今まで li要素などにグラデーションをつけるには小さいグラデーション画像を作って background-image に設定していたけど、cssでもグラデーションを付けられることがわかったのでやってみる。
cssの方が画像読み込みの時間が省略できるし、画像読み込み時のぱらぱらした遅延描画がなくなるのがいい。最初からグラデーションされた画面を表示できる。
- 変更前。ちっちゃい画像をリピートで背景に設定していた
background-image: url("/img/todo/doing_gra.jpg"); background-position: center bottom; background-repeat: repeat;
- 変更後。様々なブラウザへの対応を書かないといけないけれど、画像はいらなくなる。
/* For WebKit (Safari, Google Chrome etc) */ background: -webkit-gradient(linear, left top, left bottom, from(#e0f0f6), to(#90c0c6)); /* For Mozilla/Gecko (Firefox etc) */ background: -moz-linear-gradient(top, #e0f0f6, #90c0c6); /* For Internet Explorer 5.5 - 7 */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#e0f0f6, endColorstr=#90c0c6); /* For Internet Explorer 8 */ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFe0f0f6, endColorstr=#FF90c0c6)";
最大のメリットは、li要素が縦に長くなった場合に画像の場合は縦方向へのリピート表示でグラデーションが段々になってみっともなくなるけれど、cssではいくら伸ばしてもグラデーションを維持してくれる。こういう些細な表示って使う側のモチベーションに多少影響するから結構重要だと思った。
ただ、IE6 での表示がうまくいかない。なぜだろう‥。
参考
- CSSでグラデーションを実現する方法、主要ブラウザ全対応