首页 > 编程 > JavaScript > 正文

jQuery实现的放大镜效果示例

2019-11-20 09:01:19
字体:
来源:转载
供稿:网友

本文实例讲述了jQuery实现的放大镜效果。分享给大家供大家参考,具体如下:

zoom.css:

*{  padding: 0;  margin: 0;}li{  list-style-type: none;}.zoom{  margin: 50px;  position: relative;}.zoomMiddle{  border: 1px solid #ccc;  width: 300px;  height: 300px;  margin-bottom: 3px;  position: relative;}.zoomMiddle img{  width: 300px;  height: 300px;}.mask{  width: 100px;  height: 100px;  background: #abcdef;  opacity:0.4;  position: absolute;  left: 0;  top: 0;  display: none;}.zoomSmall{  -overflow: hidden;  width: 302px;  height: 54px;}.zoomSmall span{  float: left;  height: 52px;  line-height: 52px;  width: 10px;  text-align: center;  border: 1px solid #ccc;  cursor: pointer;}.zoomSmall span.disable{  cursor: default;  background: #ccc;}.wrapSmallImg{  float: left;  height: 54px;  width: 232px;  /*background: #f00;*/  position: relative;  overflow: hidden;}.wrapSmallImg ul{  width: 348px;  /*background: #f00;*/  position: absolute;  left: 0;  top: 0;}.wrapSmallImg ul li{  float: left;  width: 50px;  height: 50px;  border: 2px solid #ccc;  margin: 0 2px;  _display: inline;  cursor: pointer;}.wrapSmallImg ul li.current{  border: 2px solid orange;}.wrapSmallImg ul li img{  width: 50px;  height: 50px;}.zoomLarge{  width: 350px;  height: 350px;  border: 1px solid #ccc;  position: absolute;  top: 0;  left: 320px;  overflow: hidden;  display:none;}.zoomLarge img{  width: 600px;  height:600px;  position: absolute;  left: 0;  top: 0;}

zoom.html:

<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>放大镜</title><link rel="stylesheet" href="zoom.css"></head><body><input type="text" name="" id=""><div class="zoom">  <div class="zoomMiddle">    <img src="1.jpg" alt="">    <div class="mask"></div>  </div>  <div class="zoomSmall">    <span class="left disable"><</span>    <div class="wrapSmallImg">      <ul>        <li class="current"><img src="1.jpg" alt=""></li>        <li><img src="2.jpg" alt=""></li>        <li><img src="3.jpg" alt=""></li>        <li><img src="4.jpg" alt=""></li>        <li><img src="5.jpg" alt=""></li>        <li><img src="6.jpg" alt=""></li>      </ul>    </div>    <span class="right">></span>  </div>  <div class="zoomLarge"><img src="1.jpg" alt=""></div></div><script src="jquery.js"></script><script src="zoom.js"></script></body></html>

zoom.js:

$(function(){  var smallImgLi = $('.wrapSmallImg ul li');  var smallImgLiLength = smallImgLi.size();  var smallImgLiWidth = smallImgLi.outerWidth(true);  var smallImgUl = $('.wrapSmallImg ul');  var leftBtn = $('span.left');  var rightBtn = $('span.right');  var now = 0;  var zoomMiddleDiv = $('.zoomMiddle');  smallImgLi.mouseover(function(){    $(this).addClass('current').siblings().removeClass('current');    var thisSrc = $(this).children('img').attr('src');    $('.zoomMiddle img').attr('src',thisSrc);    $('.zoomLarge img').attr('src',thisSrc);  });  rightBtn.click(function(){    //当now=2的时候,我们不希望再让他滚动了    leftBtn.removeClass('disable');    if(now>=smallImgLiLength-4){      $(this).addClass('disable');      now = smallImgLiLength-4;    }else{      now++;      smallImgUl.animate({'left':-now*smallImgLiWidth},300);    }  });  leftBtn.click(function(){    if(now==0){      now=0;    }else{      now--;      smallImgUl.animate({'left':'+='+smallImgLiWidth},300);    }  });  zoomMiddleDiv.mousemove(function(e){    $('.mask').show();    $('.zoomLarge').show();    zoomMiddleDivOffset = zoomMiddleDiv.offset();    var x = e.pageX - zoomMiddleDivOffset.left - $('.mask').width()/2;    var y = e.pageY - zoomMiddleDivOffset.top - $('.mask').height()/2;    if(x<=0){      x=0;    }else if(x>=zoomMiddleDiv.width()-$('.mask').width()){      x = zoomMiddleDiv.width()-$('.mask').width();    }    if(y<=0){      y=0;    }else if(y>=zoomMiddleDiv.height()-$('.mask').height()){      y = zoomMiddleDiv.height()-$('.mask').height();    }    var percentageX = x/(zoomMiddleDiv.width()-$('.mask').width());    var percentageY = y/(zoomMiddleDiv.height()-$('.mask').height());    $('.zoomLarge img').css({      left:-percentageX*(600-$('.zoomLarge').width()),      top:-percentageY*(600-$('.zoomLarge').height())    });    $('input').val(percentageX+','+percentageY)    $('.mask').css({      'left':x+'px',      'top':y+'px'    });  });  zoomMiddleDiv.mouseout(function(){    $('.mask').hide();    $('.zoomLarge').hide();  });});

效果图如下:

更多关于jQuery相关内容感兴趣的读者可查看本站专题:《jQuery常用插件及用法总结》、《jquery中Ajax用法总结》、《jQuery表格(table)操作技巧汇总》、《jQuery拖拽特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常见经典特效汇总》、《jQuery动画与特效用法总结》及《jquery选择器用法总结

希望本文所述对大家jQuery程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表