放大镜操作

放大镜 jq 操作一

//html:内容 图片最好是等比例 图片未上传
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>放大镜</title>
    <link rel="stylesheet" href="css/style.css"/>
</head>
<body>
    <div class="box">
        <div class="smallPic">
            <div class="float"></div>
            <img src="img/simg.jpg" alt="">
        </div>

        <div class="bigPic">
            <img src="img/bimg.jpg" alt="">
        </div>

    </div>
    <script src="js/jquery-1.10.2.js"></script>
    <script src="js/changBig.js"></script>
</body>
</html>

//css样式
*{
margin:0;
padding: 0;
}
.box{
margin: 100px auto;
width: 900px;
position: relative;
}
.smallPic{
width: 400px;
height: 400px;
background: #abcdef;
border: 5px solid #ccc;
float: left;
position:relative;
left:0;
top:0;
}
.smallPic img{

width: 400px;
height: 400px;

}
.float{
width: 100px;
height: 100px;
position: absolute;
left: 0;
top:0;
border: 2px solid yellow;
display: none;
background: rgba(255,255,255,0.3);

}
.bigPic{
width: 400px;
height: 400px;
position: absolute;
left:450px;

overflow: hidden;
display: none;

}
.bigPic img{
position: absolute;

}
//jq代码;

var changBig = {

dom:{},

init:function(){
    this.initDom();
    this.bindEvent();
},

initDom:function(){
    var dom = this.dom;
        dom.float    = $('.float');
        dom.smallPic = $('.smallPic');
        dom.bigPic   =$('.bigPic');

},
bindEvent:function(){
    var dom =this.dom;
        //hover() 分别指定鼠标移入、移出元素时的事件处理函数。
        dom.smallPic.hover(function(){
            dom.float.show();
            dom.bigPic.show();
        },function(){
            dom.float.hide();
            dom.bigPic.hide();
        });
        //mousemove事件 一定要在图片的父元素上,否则容易出现移动不畅的情况
        dom.smallPic.mousemove(function(e){
            dom.disx = e.clientX;
            dom.disy = e.clientY;
            //浮动块的高度 跟宽度
            var floatW = dom.float.outerWidth();
            var floatH = dom.float.outerHeight();
            //移动位置 鼠标的位置
            var left = dom.disx - (dom.smallPic.find('img').offset().left + floatW/2)
            var top  = dom.disy - (dom.smallPic.find('img').offset().top + floatH/2)
            //判断右 和下出界所用
            var x = dom.smallPic.find('img').width()-floatW;
            var y = dom.smallPic.find('img').height()-floatH;
            if(left < 0){
                left = 0;
            }

            if(left > x){
                left = x;
            }
            if(top < 0){
                top = 0;
            }
            if(top > y){
                top = y;
            }
            //比例计算 是当前的left值与小块可移动的距离比值
            var percentX = left / x;
            var percentY = top / y;
            //大块可移动的距离 * 每次的比例
            dom.left = percentX *(dom.bigPic.find('img').width() - dom.bigPic.width());
            dom.top = percentY *(dom.bigPic.find('img').height() - dom.bigPic.height());

            dom.float.css({'left':left,'top':top});
            dom.bigPic.find('img').css({'left':-dom.left,'top':-dom.top});
        });
}

};

$(function(){
changBig.init();
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值