美文网首页
放大镜效果

放大镜效果

作者: 成长储存罐 | 来源:发表于2019-08-26 14:56 被阅读0次

<style>

    *{

        margin:0;

        padding:0;

    }

body{

    width: 960px;

    margin: 40px auto;

}

/*必须有定位,move才能根据他进行定位,后面才能固定滑块的位置*/

#small{

    width: 350px;

    height: 450px;

    border:1px solid green;

    position: absolute;

    overflow: hidden;

}

/*设置图片宽度为整个div宽度*/

#small img{

            width: 100%;

            height: 100%;

        }

/*设置左浮动*/

div{

    float:left;

}

/*move块要设置绝对定位,这样才能不占用文档流,不被遮挡*/

#move{

  width: 100px;

  height: 100px;

  position: absolute;

  top:0px;

  left:0px;

  background-color: black;

  display: none;

  opacity:0.4;

}

#look_girl{

    position: absolute;

    left:0px;

    top:0px;

}

/*讲解的时候要去掉overflow,演示全图*/

#big{

    border:1px solid red;

    width: 340px;

    height:340px;

    overflow: hidden;

    display: none;

    position: absolute;

}

</style>

<body>

    <div id="small">

      <img src="./images1/2.jpg" />

      <p id="move"></p>

    </div>

    <div id="big">

        <img src="./images1/2.jpg" id="look_girl" />

    </div>

</body>

<script>

//1获取节点

var small = document.getElementById('small');

var move  = document.getElementById('move');

var big  = document.getElementById('big');

var look_girl = document.getElementById('look_girl');

small.onmousemove = function(e){

    //绑定事件

    var e = event ||window.event

    // console.log(1)

    //获取鼠标的位置

    var moveX = e.clientX;

    var moveY = e.clientY;

    // console.log(moveX,moveY)

    //获取鼠标在透明框中间点的的位置

    var moveLeft = moveX-small.offsetLeft-move.offsetWidth/2;

    var moveTop  = moveY-small.offsetTop-move.offsetHeight/2;

    // console.log(moveLeft,moveTop)

    //判断透明框是否小于左边的边界最小距离

    if(moveLeft<0) moveLeft=0;

    if(moveTop<0) moveTop=0;

    //声明一个变量接收可以移动的距离,

    var enLeft = small.offsetWidth-move.offsetWidth;

    var enTop = small.offsetHeight-move.offsetHeight;

    //判断透明框最大的移动距离,如果超过就让它等于最大距离

    if(moveLeft>enLeft) moveLeft=enLeft;

    if(moveTop>enTop)  moveTop=enTop;

    //让放大的图片在左边显示

    big.style.left = small.offsetLeft+small.offsetWidth+'px';

    big.style.top = small.offsetTop+'px'

    //定义大图的位置

    var big_X = moveLeft/(small.offsetWidth-move.offsetWidth)*(big.offsetWidth-look_girl.offsetWidth);

    var big_Y = moveTop/(small.offsetHeight-move.offsetHeight)*(big.offsetHeight-look_girl.offsetHeight);

    //把大图的位置赋值

    look_girl.style.left=big_X+'px'

    look_girl.style.top=big_Y+'px'

    move.style.left = moveLeft+'px';

    move.style.top = moveTop+'px'

    move.style.display = 'block'

    big.style.display = 'block'

}

</script>

相关文章

  • iOS放大镜效果实现-ASMagnifierManger

    ASMagnifierManger 放大镜效果。可更改放大倍数和放大镜大小 特点介绍 放大镜效果 放大镜形状自定义...

  • 放大镜效果

    写在最前面:一定要注意设置样式的时候大图片和小图片的width,height是有比例关系的;废话不多说,直接放效果...

  • 放大镜效果

    基本原理,左边有一个盛放图片的容器,里面有哥哥小的遮罩用来提示把那一部分展示到右边的大的展示放大之后的图片的部分左...

  • 放大镜效果

    商城中常用的图片放大效果 简书会自动上传外链图片,所以这里代码里面img标签里面对应的换两个地址【@换成.】,ht...

  • 放大镜效果

    *{ margin:0; padding:0; } body{ width: 960p...

  • 放大镜效果

  • 放大镜效果

    核心原理1、鼠标经过遮罩层显示,离开隐藏;2、移动鼠标遮罩层跟随,鼠标超出大盒子后遮罩层不跟随出框;3、移动遮罩层...

  • 十.放大镜效果的demo

    详情页放大镜效果收录 Javascript HTML CSS

  • js 放大镜效果

    *{ margin:0; padding:0;} box{ pos...

  • JS 放大镜效果

    效果在这里!!~ CSS样式 HTML 布局 js部分~ 转载请注明出处喔~

网友评论

      本文标题:放大镜效果

      本文链接:https://www.haomeiwen.com/subject/ywarectx.html