画像エフェクト(加工)
reflection.js


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="reflection.js"></script>
<title>Reflection.js Testsuite</title>
<style type="text/css">
body{margin:0px;}
table tr td{padding-right:4px; vertical-align:top}
div img.reflected{margin-bottom:-30px; z-index:2; position:relative}
</style>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><img src="1.jpg" class="reflect" alt="" /></td>
<td><img src="2.jpg" class="reflect rheight40" alt="" /></td>
</tr>
</table>
</body>
</html>




画像に鏡面効果を与えるJavascript。
imgにclassを設定するだけで実現でき、スクリプトも5KBと軽快。
透過具合もclassで結構繊細に調整できる。
上記タブからダウンロード。
Click→Download the latest version, Reflection.js v2.0.
<script type="text/javascript" src="reflection.js"></script>
ヘッダーにスクリプトを読み込ませる。
これでセットアップ完了。
<img src="example.jpg" class="reflect" alt="" />
基本的にはこの形。<img>にreflectをクラス定義する。
透過の調整は、以下のようにクラスを追加する。
<img src="example.jpg" class="reflect rheight20" alt="" />
追加クラスの詳細は以下の通り。
rheight20~80の間のクラスを設定する。(1単位で刻める)
<img src="example.jpg" class="reflect rheight20" alt="" />
<img src="example.jpg" class="reflect rheight35" alt="" />
<img src="example.jpg" class="reflect rheight56" alt="" />
<img src="example.jpg" class="reflect rheight80" alt="" />
ropacity20~80の間のクラスを設定する。(1単位で刻める)
<img src="example.jpg" class="reflect ropacity20" alt="" />
<img src="example.jpg" class="reflect ropacity30" alt="" />
<img src="example.jpg" class="reflect ropacity55" alt="" />
<img src="example.jpg" class="reflect ropacity80" alt="" />
これで鏡面効果を実現することができる。
imgにクラスを設定するだけで実現するスクリプトだが、
ブラウザ上では以下のようにimgタグが書き換えられる。
<div style="width: 300px; height: 242px;" class="rheight20"> <img style="vertical-align: bottom;" src="example.jpg" class="reflected" alt=""> <canvas width="300" height="40" style="height: 40px; width: 300px;"></canvas> </div>
divで囲まれて、canvas部分に鏡面効果が描写されている。
imgにstyleで直接CSSのプロパティを書き込むと、囲っているdivに反映される。
なので、imgにmarginとかborderとか設定したい場合は、「div img.reflected」とでも定義しておく。
ちなみに、border設定すると、鏡面画像とずれるので、その場合は、margin-leftとかでマイナス設定して調整したりもできる。
さらにリアルに「鏡面」を表現するなら、imgタグをmargin-bottomでマイナスにして、鏡面画像を少し食い込ませるのもいいかもしれない。
その場合は、imgにpositionとz-indexの設定を忘れずに。
でないと鏡面画像がかぶってしまう。
鏡面加工を画像ソフトで編集するのは別に難しくないけど、数が多いとやっぱり大変だ。
スクリプトで設定しておけば、あとで変更したりするのも楽だし便利。
短縮できるところは短縮してかないと、運営は大変だしね。
SolidStateEverydayでご紹介しているAjax,Javascript等のスクリプトをご利用になる場合は、必ず製作元のサイトで使用ライセンスを確認してください。ご利用は自己責任でお願い致します。