多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > web前端 > jquery > 圖像遠處放大功能 基于jQuery編寫

圖像遠處放大功能 基于jQuery編寫

來源:程序員人生   發布時間:2014-04-19 23:13:16 閱讀次數:3148次

為了讓本地圖片、遠程圖片、過小的圖片都適應此插件,有很多細節問題要處理。
首先定義結構:

<div class="imgMagnifierWrap">
<div class="overlay"><!--覆蓋層,鼠標的感應區域,位于小圖上最方--></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>

然后考慮圖片預加載:

$.imgploader=function(url,eventLists){
var img=new Image();
var $img=$(img);
img.src=url; title="liehuo.net"
$.each(eventLists,function(type,fn){
$img.bind(type,fn);
});
$img.trigger(img.complete?'load':'begin');
return $img;
};

再計算感應區域:
小圖所處感應區域四邊各減去指示方框各四邊的1/2大小的矩形,在此之外的區域則顯示到大圖邊界:

var borderLeft =thumbInfo.left+tipboxInfo.width/2;
var ratioX=(mouseInfo.x-borderLeft)/(thumbInfo.width-tipboxInfo.width);

用大圖用做背景圖片引發的問題:
用隱藏的前景圖片預加載,load事件判斷時機,ie,chrome正常,ff請求了兩次圖片,圖片未緩存;
換一種方式,不預載大圖。改成直接在大圖位置用覆蓋層做“loading”后,chrome下表現為漸進加載圖片,非chrome是直接顯示,略有遺憾。
最終結果,把大圖用做前景圖片:
優勢在于,大圖的load和error事件都可以正常工作:

$.imgploader($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!');
}
});

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

//鼠標位置存儲
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();
};

隨便一提,如果有一種瀏覽器,也許會很幸運。


提示:可修改后代碼再運行!

文章來自:http://www.cnblogs.com/ambar/

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 五月天基地 | 亚洲综合色自拍一区 | 久久久久视频精品网 | 一级毛片免费 | 新japanesevideo乱 新japanesevideo乱熟 | 亚洲国产成人91精品 | 爱爱欧美在线观看视频 | 国产中文字幕视频在线观看 | 国产精品毛片在线大全 | 最新亚洲精品国自产在线观看 | 亚洲精品免费视频 | 国产成人精品一区二区免费视频 | 爱爱视频日本 | 看黄色的网址 | 精品精品 | 中文字幕日本一本二本三区 | 欧美在线视频二区 | 自拍偷拍视频网站 | 欧美交性性 | 精品亚洲综合在线第一区 | 欧美一级毛片美99毛片 | 精品国产免费第一区二区三区日韩 | 性配久久久 | 最近免费中文字幕大全高清mv | 成年人免费看视频 | 波多野结衣手机在线视频 | 免费日韩毛片 | 国产高清av在线播放 | 亚洲成人黄色在线观看 | 男女激情视频网站 | 国产成人免费a在线资源 | 亚洲免费中文 | 成人免费久久精品国产片久久影院 | 伊人婷婷在线 | 国产成人一区二区三区在线播放 | 国产精品久久视频 | 亚洲成人天堂 | 亚洲福利三区 | 日韩免费一区二区三区在线 | 国产性老妇女做爰在线 | 中文字幕在线看视频一区二区三区 |