日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS图片放大查看效果!

發(fā)布時(shí)間:2023/12/9 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS图片放大查看效果! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
http://bbs.blueidea.com/thread-2812683-1-1.html

http://bbs.blueidea.com/thread-2814846-1-1.html

應(yīng)用效果

<!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.0?Transitional//EN">
<html>
<head>
<title>Javascript?Images?zoom-out?view?sample.?Brought?to?you?by?斬夢人.天天?
QQ:22062019
</title>
<script?language="JavaScript">
<!--
var?dshowW=450;?//默認(rèn)預(yù)覽圖寬度(可由小圖的showW,showH動(dòng)態(tài)指定)
var?dshowH=300;?//默認(rèn)預(yù)覽圖高度
var?bborder=1;?//大圖邊框
var?sborder=1;?//小圖邊框
var?vborder=1;?//小預(yù)覽圖邊框
var?bigW,bigH,smallW,smallH,showW,showH,viewW,viewH;//大圖,小圖,預(yù)覽窗,小預(yù)覽窗
var?nview,nflag,picstatus,tempo,abox,zoomX,zoomY;
//初始化
window.onload=function?init(){
????isIE
=window.event?1:0;
????picshow.style.borderWidth
=bborder;
????picshow.style.width
=dshowW;
????picshow.style.height
=dshowH;
????bpic.style.display
="";
????abox
=document.body.getElementsByTagName("div");?//初始化所有小圖
????for?(n=0;n<abox.length;n++)
????????
if?(abox[n].className=="picbox"){
????????????
var?o=abox[n];
????????????
var?view=getview(o);
????????????
var?img=getimg(o);
????????????view.style.borderWidth
=vborder;
????????????o.style.borderWidth
=sborder;
????????????o.style.width
=img.width+sborder*2*isIE;
????????????o.style.height
=img.height+sborder*2*isIE;
????????????o.setAttribute(
"pid",n);?//小圖標(biāo)記,主鍵唯一
????????????if?(o.getAttribute("show")=="show")?loadpic(o);
????????????o.onmouseout
=function?(){setTimeout(nview.style.visibility='hidden');}
????????}

}

//載入圖片
function?loadpic(o){?
????
var?view=getview(o);
????
var?img=getimg(o);
????bpic.style.display
="none";
????nview
=view;?//標(biāo)記活動(dòng)小預(yù)覽窗
????nflag=o.getAttribute("pid");?//當(dāng)前圖片標(biāo)記,用來判斷切換圖片
????//改變預(yù)覽窗大小
????if?(img.getAttribute("showW")!=null)?showW=parseInt(img.getAttribute("showW"));
????
else?showW=dshowW;
????
if?(img.getAttribute("showH")!=null)?showH=parseInt(img.getAttribute("showH"));
????
else?showH=dshowH;
????picshow.style.width
=showW+isIE*bborder*2;
????picshow.style.height
=showH+isIE*bborder*2;
????loading.style.marginTop
=(showH-loading.offsetHeight)/2;
????if?(img.getAttribute("dLeft"))?bpic.style.marginLeft=-parseInt(img.getAttribute("dLeft"));
????
if?(img.getAttribute("dTop"))?bpic.style.marginTop=-parseInt(img.getAttribute("dTop"));
????picstatus
="loading";
????tempo
=o;
????bpic.src
=img.lowsrc;
}

//圖片載入完成
function?loaddone(o){
????bpic.style.display
="block";
????
var?view=getview(o);
????
var?img=getimg(o);
????smallW
=img.width;?//改變小圖,小預(yù)覽窗大小
????smallH=img.height;
????bigW
=bpic.width;
????bigH
=bpic.height;
????
if?(showW>bigW){//如果預(yù)覽圖比大圖大,則等于大圖
????????showW=bigW;
????????picshow.style.width
=showW+isIE*bborder*2;
????}

????
if?(showH>bigH){
????????showH
=bigH;
????????picshow.style.height
=showH+isIE*bborder*2;
????}

????zoomX
=bigW/smallW;
????zoomY=bigH/smallH;
????viewW=showW*smallW/bigW;
????viewH=showH*smallH/bigH;
????nview.style.width=viewW-vborder*2*!isIE;
????nview.style.height
=viewH-vborder*2*!isIE;
????nview.style.display
="block";?
????img.style.top
=-nview.offsetHeight;
????
if?(!nview.style.left)?nview.style.left=0;
????
if?(!nview.style.top)?nview.style.top=0;
????picstatus
="done"
}

//移動(dòng)事件
function?move(e,o,flag){?//flag,對象來源標(biāo)記,FF下view的定位需要
????o=isIE?o.parentElement:o.parentNode;
????
if?(o.getAttribute("pid")!=nflag){?//判斷是否切換了圖片
????????nview.style.visibility="hidden";?
????????loadpic(o);?
//載入新圖片
????}

????
if?(picstatus="done"){?//如果大圖載入完畢
????????if?(nview.style.visibility="hidden")?nview.style.visibility="visible";
????????
var?e=isIE?window.event:e;
????????
if?(isIE==0){?//分別獲取FF或IE的view位置
????????????if?(flag==1){?//由于o的來源不同,使用不同的算法定位
????????????????vX=e.layerX+parseInt(nview.style.left)-nview.offsetWidth/2-vborder;
????????????????vY=e.layerY+parseInt(nview.style.top)-nview.offsetHeight/2-vborder;
????????????}
else{
????????????????vX
=e.layerX-nview.offsetWidth/2-vborder;
????????????????vY=e.layerY-nview.offsetHeight/2-vborder;
????????????}

????????}

????????
else{
????????????vX
=e.offsetX-nview.offsetWidth/2;
????????????vY=e.offsetY-nview.offsetHeight/2;
????????}
?
????????
if?(vX?<?0)?vX?=?0;?//邊界判斷,不能超出縮略圖的范圍
????????if?(vY?<?0)?vY?=?0;
????????
if?(vX?>?smallW-viewW)?{vX=smallW-viewW;mX=bigW-showW}else{mX=vX?*?zoomX;}
????????
if?(vY?>?smallH-viewH)?{vY=smallH-viewH;mY=bigH-showH}else{mY=vY?*?zoomY;}
????????nview.style.left
=vX;
????????nview.style.top
=vY;
????????bpic.style.marginLeft?
=?-?mX;?//刷新預(yù)覽窗口
????????bpic.style.marginTop?=?-?mY;
????}

}

//得到view
function?getview(o){
????
var?arr=o.getElementsByTagName("div");
????
var?n;
????
for?(n=0;n<arr.length;n++)
????????
if?(arr[n].className="view")?return?arr[n];
}

//得到img
function?getimg(o){
????
var?arr=o.getElementsByTagName("img");
????
var?n;
????
for?(n=0;n<arr.length;n++)
????????
if?(arr[n].className="spic")?return?arr[n];
}

//-->
</script>
<style?type="text/css">
<!--
*
{}{padding:0;margin:0}
body
{}{color:white;background:black;font:bold?12px/18px?tahoma;color:white;}
#picshow
{}{border:1px?red?solid;width:200;height:150;overflow:hidden;margin:0?auto}/**//*width,height隨便定義,為了第一次顯示時(shí)能看見loading*/
#bpic
{}{display:none}
#loading
{}{font:bold?22px/30px?tahoma;color:white;}
#loading?img
{}{vertical-align:middle;position:relative}
#loading?.text
{}{font:bold?12px/20px?tahoma;color:white;}
.picbox
{}{border:1px?green?dashed;overflow:hidden;float:left;width:0;height:0;text-align:left}/**//*注意:overflow:hidden;text-align:left不可更改,如果在IE的表格中定位會出問題*/
.spic
{}{position:relative;}/**//*position:relative不可更改*/
.view
{}{border:1px?silver?solid;z-index:100;font-size:1px;position:relative;visibility:hidden;display:none}/**//*position:relative;visibility:hidden;display:none不可更改*/
td
{}{text-align:center;height:60px;font-size:30px;margin:0?auto}
//-->
</style>
</head>
<body>
Some?text?here
<br>ok.|?您需要做的僅僅是加入picshow塊和picbox塊,設(shè)置必要參數(shù),剩下的就讓JS去做吧!?(移到小圖上看更多說明)
<table?cellpadding="0"?cellspacing="0"?border="2"?width="100%">
<tr>
????
<td>1</td>
????
<td>2</td>
????
<td>3</td>
</tr>
<tr>
????
<td?width="520"?align="center">
<div?id="picshow">
????
<img?id="bpic"?onload="loaddone(tempo)"/>
????
<div?id="loading">
????????
<img?src="http://www.whoj.net/images/loading.gif"?border="0"/>?Loading
????????
<div?class="text">Please?wait<br><br><br></div>
????
</div>
</div>
????
</td>
????
<td>
<div?class="picbox"?show="show"><!--設(shè)置show顯示默認(rèn)圖片-->
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b1.jpg"?src="http://www.whoj.net/images/s1.jpg"?onmousemove="move(event,this,0)"?dLeft="700"?dTop="300"?title="設(shè)置標(biāo)簽屬性show='show'顯示默認(rèn)圖片,設(shè)置dLeft,dTop定義默認(rèn)偏移量"/><!--src:小圖,lowsrc:大圖,showW/showH:可設(shè)置預(yù)覽窗大小-->
</div>
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b2.jpg"?src="http://www.whoj.net/images/s2.jpg"?onmousemove="move(event,this,0)"?showW="200"?showH="200"?title="可自定義預(yù)覽圖大小"/>
</div>
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b4.jpg"?src="http://www.whoj.net/images/s4.jpg"?width="302"?onmousemove="move(event,this,0)"?title="小圖可以按比例放大"/><!--這里可以重新設(shè)置小圖大小,盡量與大圖比例保持一致-->
</div>
????
</td>
????
<td>In?table
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b3.jpg"?src="http://www.whoj.net/images/s3.jpg"?width="60"?onmousemove="move(event,this,0)"?title="也可以按比例縮小"/>
</div>
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b3.jpg"?src="http://www.whoj.net/images/s3.jpg"?onmousemove="move(event,this,0)"?showW="500"?showH="200"?title="可以嵌套在table中"/>
</div>
????
</td>
</tr>
</table>
Out?of?table
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b2.jpg"?src="http://www.whoj.net/images/s2.jpg"?onmousemove="move(event,this,0)"?title="放在table外面也沒有問題"/>
</div>
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/s4.jpg"?src="http://www.whoj.net/images/s4.jpg"?onmousemove="move(event,this,0)"?showW="1000"?showH="1000"?title="showW='1000'?showH='1000',如果指定預(yù)覽圖比原圖大,則使用原圖大小"?/>
</div>
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b5.jpg"?src="http://www.whoj.net/images/s5.jpg"?onmousemove="move(event,this,0)"?showW="160"?showH="320"?title="代碼較上一版本健壯,能在IE,FF下穩(wěn)定工作,基本支持OP,歡迎大家?guī)椭鷾y試!"/>
</div>
<div?class="picbox">
????
<div?class="view"?onmousemove="if?(!isIE)?move(event,this,1)"></div>
????
<img?class="spic"?lowsrc="http://www.whoj.net/images/b5.jpg"?src="http://www.whoj.net/images/s5.jpg"?onmousemove="move(event,this,0)"?width="500"?height="112"?title="即使沒有按比例拉伸,也可以正常工作"/>
</div>
</body>
</html>

轉(zhuǎn)載于:https://www.cnblogs.com/CB/archive/2008/04/15/1154084.html

總結(jié)

以上是生活随笔為你收集整理的JS图片放大查看效果!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。