JS图片loading及放大查看效果(兼容IE,FF)

< script  language ="JavaScript" >
<!--
var  smallX  =   150 // 缩略图宽度
var  bigX  =   600 // 预览窗大小,可以任意设置
var  bigY  =   450 ;
var  srcX  =   - 1 // 原图大小,可以任意设置. 如有一个为-1将使用图片原始大小
var  srcY  =   - 1 ;
var  border  =   5 // 边框
var  smallY,viewX,viewY,bl,isIE,vX,vY;
window.onload
= function  (){   // 初始化数据
head.innerHTML = " 图片已载入 " ;
isIE
= window.event ? 1 : 0 // 由于IE和FF对盒模型解释的差异,获取浏览器标记以便修正差异
if  (srcX ==- 1   ||  srcY ==- 1 ){srcX = bigpic.width;srcY = bigpic.height;}  //  如果有一个为-1,则使用原图大小
else {bigpic.width = srcX;bigpic.height = srcY;}
smallY
= srcY * smallX / srcX;  // 按比例计算出缩略图的高
viewX = bigX / srcX * smallX;  // 计算缩略图的预览窗口大小
viewY = bigY / srcY * smallY;
bl
= srcX / smallX;  // 得到缩放比例
smallpic.width = smallX;  // 初始化实例属性
smallpic.height = smallY;
smallbox.style.borderWidth
= border;
smallbox.style.width
= smallpic.offsetWidth + border * 2 * isIE;  // (+border*2*isIE),如果是IE就加上2倍边框以修正模型差异,FF无变化
smallbox.style.height = smallpic.offsetHeight + border * 2 * isIE;  // 以下的isIE同理,修正ie盒模型bug
bigbox.style.borderWidth = border;
bigbox.style.width
= bigX + border * 2 * isIE;
bigbox.style.height
= bigY + border * 2 * isIE;
view.style.left
= smallbox.offsetLeft  +  border;
view.style.top
= smallbox.offsetTop  +  border;
view.style.width
= viewX -   ! isIE * 3 + 1 ;
view.style.height
= viewY -   ! isIE * 3 + 1 ;
}
function  move(e){
var  e  =  window.event ? window.event:e;  // 得到IE或FF的event
if  ( ! isIE){vX = e.pageX - border - smallbox.offsetLeft;  // 分别在FF与IE下获得相对坐标
vY = e.pageY - border - smallbox.offsetTop}
else {vX = e.offsetX;vY = e.offsetY}
vX
+=- viewX / 2 // 得到缩略图的预览窗位置
vY +=- viewY / 2 ;
if  (vX  <   0 ) vX  =   0 // 边界判断,不能超出缩略图的范围
if  (vY  <   0 ) vY  =   0 ;
if  (vX  >  smallX  -  viewX) vX  =  smallX  -  viewX;
if  (vY  >  smallY  -  viewY) vY  =  smallY  -  viewY;
bigpico.style.marginLeft 
=   -  vX  *  bl;  // 刷新预览窗口
bigpico.style.marginTop  =   -  vY  *  bl;
view.style.left 
=  vX  +  smallbox.offsetLeft  +  border;  // 刷新缩略图中预览窗口
view.style.top  =  vY  +  smallbox.offsetTop  +  border;
}
// -->
</ script >
< style  type ="text/css" >
<!--
*
{ padding : 0 ; margin : 0 }
body
{ background : black }
img
{ display : block ; }
#smallbox
{ border : 1px green solid ; float : left ; width : 0 ; height : 0 ; overflow : hidden ; font-size : 0px }
#bigbox
{ border : 1px green solid ; width : 0px ; height : 0px ; float : left ; overflow : hidden ; font-size : 0px }
#view
{ border : 1px silver solid ; width : 0px ; height : 0px ; position : absolute ; font-size : 0px }
#head
{ text-align : center ; line-height : 40px ; font : bold 16px/40px ; color : lime }
//-->
</ style >
< div  id ="head" > 图片loading... </ div >
< div  id ="smallbox" > <!-- 缩略图窗口// -->
< img  id ="smallpic"  src ="http://images2.wowchina.com/images_wow/download/wallpapers/2007/7/9/49455.jpg"  border ="0"  onmousemove ="move(event)" >
</ div >
< div  id ="bigbox" > <!-- 预览窗口// --> < div  id ="bigpico" > <!-- 大图片容器// -->
< img  id ="bigpic"  src ="http://images2.wowchina.com/images_wow/download/wallpapers/2007/7/9/49457.jpg"  border ="0" >
</ div ></ div >
< div  id ="view"  onmousemove ="if (!isIE) move(event)" ></ div > <!-- 缩略图上的预览窗// -->
 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一把编程的菜刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值