亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

jQuery chili圖片遠(yuǎn)處放大插件

 更新時(shí)間:2009年11月30日 21:59:42   作者:  
為了讓本地圖片、遠(yuǎn)程圖片、過小的圖片都適應(yīng)此插件,有很多細(xì)節(jié)問題要處理。

為了讓本地圖片、遠(yuǎn)程圖片、過小的圖片都適應(yīng)此插件,有很多細(xì)節(jié)問題要處理。

首先定義結(jié)構(gòu):
 
<div class="imgMagnifierWrap"> 
<div class="overlay"><!--覆蓋層,鼠標(biāo)的感應(yīng)區(qū)域,位于小圖上最方--></div> 
<div class="tipboxHover"><!--小圖上方的懸停提示方框--></div> 
<div class="imgOriginal"><!--裝載大圖的容器,絕對定位<img src="bigOne.jpg" /><!--前景大圖,絕對定位--></div> 
</div> 
 
 
<!--樣式--> 
<style type="text/css"> 
.imgMagnifierWrap *{position:absolute;background:#fff;} 
.imgMagnifierWrap .tipboxHover{width:80px; height:60px; filter:alpha(opacity=30);opacity:.3;display:none;} 
.imgMagnifierWrap .imgOriginal{display:none;z-index:9999;overflow:hidden; width:400px; height:400px; 
    background-color:#cdf; background-repeat:no-repeat; text-align:center;border:1px solid #555; } 
.imgMagnifierWrap .overlay{cursor:crosshair;filter:alpha(opacity=0);opacity:0;} 
<style> 
然后考慮圖片預(yù)加載:
 
$.imgPreloader=function(url,eventLists){ 
var img=new Image(); 
var $img=$(img); 
img.src=url; 
$.each(eventLists,function(type,fn){ 
$img.bind(type,fn); 
}); 
$img.trigger(img.complete?'load':'begin'); 
return $img; 
}; 
再計(jì)算感應(yīng)區(qū)域:
小圖所處感應(yīng)區(qū)域四邊各減去指示方框各四邊的1/2大小的矩形,在此之外的區(qū)域則顯示到大圖邊界:
 
var borderLeft =thumbInfo.left+tipboxInfo.width/2; 
var ratioX=(mouseInfo.x-borderLeft)/(thumbInfo.width-tipboxInfo.width); 
用大圖用做背景圖片引發(fā)的問題:
用隱藏的前景圖片預(yù)加載,load事件判斷時(shí)機(jī),ie,chrome正常,ff請求了兩次圖片,圖片未緩存;
換一種方式,不預(yù)載大圖。改成直接在大圖位置用覆蓋層做“l(fā)oading”后,chrome下表現(xiàn)為漸進(jìn)加載圖片,非chrome是直接顯示,略有遺憾。
最終結(jié)果,把大圖用做前景圖片:
優(yōu)勢在于,大圖的load和error事件都可以正常工作:
 
$.imgPreloader($anchor.attr('href'),{ 
load:function(){ 
isImageReady=true; 
$o.empty().append(this); 
setTimeout(autoFitPicture,0); 
}, 
begin:function(){ 
$o.text('loading...'); 
}, 
error:function(){ 
isImageReady=true; 
$o.text('invalid picture!'); 
} 
}); 

大圖預(yù)載的load事件和小圖mousemove事件不同步的解決辦法:實(shí)時(shí)存儲鼠標(biāo)坐標(biāo),把提示方框定位和大圖定位的方法分離。

 
  //鼠標(biāo)位置存儲 
var mouseInfo={x:0,y:0}; 
//指示框定位 
var setTipboxPosition=function(e){ 
mouseInfo.x=e.pageX; 
mouseInfo.y=e.pageY; 
$tipbox.css({ 
top:mouseInfo.y<thumbInfo.width/2+thumbInfo.top 
?Math.max(mouseInfo.y-tipboxInfo.height/2,thumbInfo.top) 
:Math.min(mouseInfo.y-tipboxInfo.height/2,thumbInfo.top+thumbInfo.height-tipboxInfo.height), 
left:mouseInfo.x<thumbInfo.width/2+thumbInfo.left 
?Math.max(mouseInfo.x-tipboxInfo.width/2,thumbInfo.left) 
:Math.min(mouseInfo.x-tipboxInfo.width/2,thumbInfo.left+thumbInfo.width-tipboxInfo.width) 
});   
setImgPosition(); 
}; 

隨便一提,如果有一種瀏覽器,也許會很幸運(yùn)。
演示代碼
打包下載 http://chabaoo.cn/jiaoben/22866.html

相關(guān)文章

最新評論