今回は、高解像度の画像を拡大表示する方法について詳しく解説します。特に、jQueryを使った「Retina Effect」を利用して、画像の一部を虫眼鏡で拡大表示する方法をご紹介します。
高解像度の画像を用意し、その一部を虫眼鏡で拡大表示することで、細部まで鮮明に確認できるようになります。この方法は、製品画像や詳細な情報を提供する際に非常に有効です。では、さっそく始めましょう。
必要なファイルの準備
まず、必要なファイルを準備します。
- 高解像度の画像(例: webpage.png)
- jQueryライブラリ
- スクリプトファイル(例: script.js)
- スタイルシート(例: style.css)
これらのファイルをプロジェクトに追加しておきましょう。
CSSの記述
このCSSコードでは、ページ全体のスタイルと、虫眼鏡効果のスタイルを設定しています。
<style type="text/css" media="all">
<!--
body{
margin:0;
padding:0;
}
h1{
text-align:center;
font-size:18px;
font-weight:bold;
padding:10px 0;
line-height:1.4em;
text-align:center;
}
.clWrap{
width:750px;
margin:0 auto;
}
#iphone{
/* The iphone frame div */
width:499px;
height:283px;
position:relative;
margin:0 auto;
}
#webpage{
/* Contains the webpage screenshot */
width:499px;
height:283px;
}
#retina{
/* The Retina effect */
background:url('img/webpage.png') no-repeat center center white;
border:2px solid white;
/* Positioned absolutely, so we can move it around */
position:absolute;
height:180px;
width:180px;
/* Hidden by default */
display:none;
/* A blank cursor, notice the default fallback */
cursor:url('img/blank.cur'),default;
/* CSS3 Box Shadow */
-moz-box-shadow:0 0 5px #777, 0 0 10px #aaa inset;
-webkit-box-shadow:0 0 5px #777;
box-shadow:0 0 5px #777, 0 0 10px #aaa inset;
/* CSS3 rounded corners */
-moz-border-radius:90px;
-webkit-border-radius:90px;
border-radius:90px;
}
#retina.chrome{
/* A special chrome version of the cursor */
cursor:url('img/blank_google_chrome.cur'),default;
}
#main{
/* The main div */
margin:0 auto;
position:relative;
width:750px;
padding-top:100px;
}
-->
</style>
JavaScriptの記述
jquery.min.js(1.8.3)、script.jsファイルを読み込みます。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="script.js"></script>
script.jsファイルの記述は以下の通りです。このJavaScriptコードでは、画像の上にマウスを移動した際に、虫眼鏡効果を適用するための処理を実装しています。
虫眼鏡で拡大表示する画像エリアに対してmousemove、mouseleave、mouseenter処理の記述です。
$(document).ready(function(){
/* This code is executed on the document ready event */
var left = 0,
top = 0,
sizes = { retina: { width:190, height:190 }, webpage:{ width:500, height:283 } },
webpage = $('#webpage'),
offset = { left: webpage.offset().left, top: webpage.offset().top },
retina = $('#retina');
if(navigator.userAgent.indexOf('Chrome')!=-1)
{
/* Applying a special chrome curosor,
as it fails to render completely blank curosrs. */
retina.addClass('chrome');
}
webpage.mousemove(function(e){
left = (e.pageX-offset.left);
top = (e.pageY-offset.top);
if(retina.is(':not(:animated):hidden')){
/* Fixes a bug where the retina div is not shown */
webpage.trigger('mouseenter');
}
if(left<0 || top<0 || left > sizes.webpage.width || top > sizes.webpage.height)
{
/* If we are out of the bondaries of the
webpage screenshot, hide the retina div */
if(!retina.is(':animated')){
webpage.trigger('mouseleave');
}
return false;
}
/* Moving the retina div with the mouse
(and scrolling the background) */
retina.css({
left : left - sizes.retina.width/2,
top : top - sizes.retina.height/2,
backgroundPosition : '-'+(1.6*left)+'px -'+(1.35*top)+'px'
});
}).mouseleave(function(){
retina.stop(true,true).fadeOut('fast');
}).mouseenter(function(){
retina.stop(true,true).fadeIn('fast');
});
});
HTMLの記述
HTMLファイルを作成します。以下のような構造にします。
このHTMLコードでは、clWrapというクラスを持つdiv要素の中に、画像と虫眼鏡効果を表示するための構造を配置しています。
<div class="clWrap">
<h1>解像度の高い画像の一部を虫眼鏡で拡大して表示します。</h1>
<div id="main">
<div id="iphone">
<div id="webpage">
<img src="img/webpage.png" width="499" height="283" alt="BLINDER HIDDEN: WEBエンジニアの隠れたファインプレー" title="BLINDER HIDDEN: WEBエンジニアの隠れたファインプレー" />
<div id="retina"></div>
</div>
</div>
</div><!--/main-->
</div><!--/clWrap-->
画像の一部を虫眼鏡で拡大した様に表示するデモページ
デモページはこちらから確認できます。
画像の一部を虫眼鏡で拡大した様に表示するデモ
ソース元:Apple-like Retina Effect With jQuery | Tutorialzine
ソース元:Apple-like Retina Effect With jQuery | Tutorialzine
まとめ
これで、高解像度の画像を虫眼鏡で拡大表示する方法の解説は終了です。この技術を使うことで、ユーザーに詳細な情報を提供し、よりインタラクティブなウェブ体験を実現することができます。
この方法は特に製品ページや詳細なデザインを表示する場合に非常に有効です。ぜひ、自分のプロジェクトに取り入れてみてください。
※流用される場合は自己責任でお願いします。
デモページタグ内のGoogleアナリティクスタグは流用しないで下さい。