2014.12.26
画像がキラッと光るやり方はいくつかあります。
最も多く使うのはマウスオーバー時に光るやりかたでしょうか。
本日はページを開いた瞬間からずっと画像をキラッとさせるやり方のご紹介です。
実装!!
とまぁ、これのみ。
光らせる用にjQueryを利用してもいませんし、光用の画像を制作しているわけでもありません。
Only CSSです。
で、知っている方には申し訳ないですが、これなんで同じようなcssを繰り返しているの?
という方に。
これはいろんなブラウザに対応させましょうということです。
CSS3は各ブラウザにより若干記述が異なる為、このような少し面倒くさいことになってしまいます。
制作者にとっていつの時代もこのブラウザ固有の動き・仕様というのはやっかいなものです。
簡単に説明すると、変更部分は キラッとさせたいURL と、reflection-imgに対するCSSの width と height (ただこれは光らせることに関係あるわけではなく、画像をどこに配置するかだけの問題)
あとは width や position 、 -webkit-animation で 光のスピードや大きさを変更できます。
色々試してみてくださいね。
最も多く使うのはマウスオーバー時に光るやりかたでしょうか。
本日はページを開いた瞬間からずっと画像をキラッとさせるやり方のご紹介です。
CSSのみ、jQueryも光用の画像も使いません。
まずはサンプル
実装!!
HTMLはこんな感じ。いたってシンプル。
1 2 3 4 |
<div class="reflection-img"> <img src=画像.jpg"> <div class="reflection"></div> </div> |
CSSはこんな感じ。position指定です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
.reflection-img{ width :510px; height :350px; position :relative; overflow :hidden; } .reflection { height :100%; width :30px; position :absolute; top :-180px; left :0; background-color: #fff; opacity :0; transform: rotate(45deg); animation: reflection 2s ease-in-out infinite; -webkit-transform: rotate(45deg); -webkit-animation: reflection 2s ease-in-out infinite; -moz-transform: rotate(45deg); -moz-animation: reflection 2s ease-in-out infinite; -ms-transform: rotate(45deg); -ms-animation: reflection 2s ease-in-out infinite; -o-transform: rotate(45deg); -o-animation: reflection 2s ease-in-out infinite; } @keyframes reflection { 0% { transform: scale(0) rotate(45deg); opacity: 0; } 80% { transform: scale(0) rotate(45deg); opacity: 0.5; } 81% { transform: scale(4) rotate(45deg); opacity: 1; } 100% { transform: scale(50) rotate(45deg); opacity: 0; } } @-webkit-keyframes reflection { 0% { -webkit-transform: scale(0) rotate(45deg); opacity: 0; } 80% { -webkit-transform: scale(0) rotate(45deg); opacity: 0.5; } 81% { -webkit-transform: scale(4) rotate(45deg); opacity: 1; } 100% { -webkit-transform: scale(50) rotate(45deg); opacity: 0; } } @-moz-keyframes reflection { 0% { -moz-transform: scale(0) rotate(45deg); opacity: 0; } 80% { -moz-transform: scale(0) rotate(45deg); opacity: 0.5; } 81% { -moz-transform: scale(4) rotate(45deg); opacity: 1; } 100% { -moz-transform: scale(50) rotate(45deg); opacity: 0; } } @-ms-keyframes reflection { 0% { -ms-transform: scale(0) rotate(45deg); opacity: 0; } 80% { -ms-transform: scale(0) rotate(45deg); opacity: 0.5; } 81% { -ms-transform: scale(4) rotate(45deg); opacity: 1; } 100% { -ms-transform: scale(50) rotate(45deg); opacity: 0; } } @-o-keyframes reflection { 0% { -o-transform: scale(0) rotate(45deg); opacity: 0; } 80% { -o-transform: scale(0) rotate(45deg); opacity: 0.5; } 81% { -o-transform: scale(4) rotate(45deg); opacity: 1; } 100% { -o-transform: scale(50) rotate(45deg); opacity: 0; } } |
とまぁ、これのみ。
光らせる用にjQueryを利用してもいませんし、光用の画像を制作しているわけでもありません。
Only CSSです。
で、知っている方には申し訳ないですが、これなんで同じようなcssを繰り返しているの?
という方に。
これはいろんなブラウザに対応させましょうということです。
CSS3は各ブラウザにより若干記述が異なる為、このような少し面倒くさいことになってしまいます。
制作者にとっていつの時代もこのブラウザ固有の動き・仕様というのはやっかいなものです。
簡単に説明すると、変更部分は キラッとさせたいURL と、reflection-imgに対するCSSの width と height (ただこれは光らせることに関係あるわけではなく、画像をどこに配置するかだけの問題)
あとは width や position 、 -webkit-animation で 光のスピードや大きさを変更できます。
色々試してみてくださいね。