olidStateEveryday - Ajax,javascript,UIサンプルとチュートリアル -

Ajax,Javascriptサンプル、画像表示系の設置方法

  1. Home>
  2. 画像表示>
  3. 画像エフェクト(加工)>
  4. 画像を鏡面加工(imgにclass設定するだけ)

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

画像を鏡面加工(imgにclass設定するだけ)

スポンサードリンク
  • del.icio.us に登録
  • ライブドアクリップに追加
  • Google Bookmarks に追加
  • はてなブックマークに追加
  • Yahoo!ブックマークに登録
<!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.

<head>~</head>

<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等のスクリプトをご利用になる場合は、必ず製作元のサイトで使用ライセンスを確認してください。ご利用は自己責任でお願い致します。

結局、エックスサーバーなんですよね。