自制放大镜效果的jq插件

基于jquery的放大镜效果实现


  • 首先在html页面引入jquery和提前建好的插件文件
	<script src="js/jquery.js"></script>
	<script src="js/jq_放大镜.js"></script>
  • html的结构是这样的
	<div class="data-l">
          <div class="mirror mirror-white">

          </div>
          <div class="mirror mirror-black">

          </div>
 	</div>

data-l是放置图片的大框
mrrior-white是鼠标移入图片时出现的跟随框
mirror-black时鼠标移入图片区域时右侧出现的放大显示的图片框

  • css样式如下
#d-data .data-l {
    position: relative;
     }
     #d-data .data-l .mirror{
      position: absolute;width:100px;height:100px;border-radius: 12px;display: none;
       }
       #d-data .data-l .mirror-white{
         background:rgba(255,255,255,.5);
         }
         #d-data .data-l .mirror-black{
          background:#000;left:370px;overflow:hidden;width:150px;height:150px;
          }
          #d-data .data-l .mirror-black img{
            position: absolute;width:600px;
            }
    #d-data .data-l img {
      width: 360px; border-radius: 12px;}
  • 设置好预想的样式后书写的js代码如下
//放大镜效果
    $('.data-l').hover(function(e){
        $('.mirror-black').show();
        $('.mirror-white').css({
            display:'block'
        });
        $('html').on('mousemove',function(e){
            let x=e.pageX-$('.mirror-white').width()/2-$('.data-l').offset().left;
            let y=e.pageY-$('.mirror-white').width()/2-$('.data-l').offset().top;
            if(x<=0){
                x=0;
            }
            if(x>=$('.data-l').width()-$('.mirror-white').width()){
                x=$('.data-l').width()-$('.mirror-white').width();
            }
            if(y<=0){
                y=0;
            }
            if(y>=$('.data-l').height()-$('.mirror-white').width()){
                y=$('.data-l').height()-$('.mirror-white').width();
            }
            $('.mirror-white').css({
                left:x+'px',
                top:y+'px',
            });
            $('.mirror-black').children('img').css({
                left:-5*x/3+'px',  //此处的5/3为600/360,也就是右边小框内的图片大小比左边显示的图片大小
                top:-5*y/3+'px'
            })
        });
    },function(){
        $('.mirror-black').hide();
        $('.mirror-white').css({
            display:'none'
        });
        $('html').off('mousemove');
    });
  • 最后效果如下
    在这里插入图片描述
    总的来说使用jq写放大镜插件还是要比原生js写方便不少
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值