您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax |

JavaScript实现简易放大镜最全代码解析(ES5)

51自学网 2022-05-02 21:31:59
  javascript

本文实例为大家分享了JavaScript实现简易放大镜的具体代码,供大家参考,具体内容如下

完整代码:

<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>ES5放大镜</title>    <style>        .box {            width: 170px;            height: 180px;            margin: 100px 200px;            border: 1px solid #ccc;            position: relative;        }        .small {            position: relative;        }        .big {            width: 300px;            height: 320px;            position: absolute;            top: 30px;            left: 220px;            overflow: hidden;            border: 1px solid #ccc;            display: none;        }        .mask {            width: 100px;            height: 100px;            background: rgba(255,255,0,0.3);            position: absolute;            top: 0;            left: 0;            cursor: move;            display: none;        }        .big img{            position: absolute;            left: 0;            top: 0;        }    </style></head><body>    <div class="box" id="box">        <div class="small">            <img src="img/shirt_1.jpg" alt="picture"/>            <div class="mask"></div>        </div>        <div class="big">            <img src="img/shirt_1_big.jpg" alt="picture"/>        </div>    </div></body><script> var box = document.getElementById('box'); var small = box.children[0];//放小图的盒子 var big = box.children[1];//放大图的盒子 var mask = small.children[1];//半透明鼠标移动跟随盒子 var bigImage = big.children[0];//大图片 small.onmouseover = function(event){     big.style.display = 'block';     mask.style.display = 'block'; } small.onmouseout = function(){     big.style.display = 'none';     mask.style.display = 'none'; } //移动事件,注意mask的定位相对的是samll small.onmousemove = function(event){     var event = event || window.event;//事件对象     // console.log(this.offsetLeft);//0,注意offsetLeft返回距离是一个带有定位的父级的左侧距离     var x = event.clientX-this.offsetParent.offsetLeft-mask.offsetWidth/2;//此处不能用small的offsetLeft,用obj的offsetLeft     var y = event.clientY-this.offsetParent.offsetTop-mask.offsetHeight/2;     //限制半透明盒子出界     if(x < 0){         x = 0;     }else if(x > small.offsetWidth - mask.offsetWidth){         x = small.offsetWidth - mask.offsetWidth;     }     if( y < 0){         y = 0;     }else if( y > small.offsetHeight - mask.offsetHeight){         y = small.offsetHeight - mask.offsetHeight;     }     mask.style.left = x + "px";     mask.style.top = y +"px";     //大图片放大     bigImage.style.left = -x*big.offsetWidth/small.offsetWidth + 'px';     bigImage.style.top = -y*big.offsetHeight/small.offsetHeight + 'px';     //big.offsetWidth/small.offsetWidth是放大倍数     //因为小图鼠标下移,大图上移,故用负数 }</script></html>

图片:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持wanshiok.com。


vuex结合session存储数据解决页面刷新数据丢失问题
Ajax 文件上传进度监听之upload.onprogress案例详解
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1