前端必学——实现电商图片放大镜效果(附代码)

放大镜可以说是前端人必须学会的程序之一,今天的案例为大家展示一下怎么实现放大镜的效果!

  整个效果就是当鼠标放到展示图上的时候,会出现一个遮罩层以及弹出来一个框展示一个详情图,并且鼠标移动的时候详情图跟着移动,鼠标离开详情图消失。

<html>

<head>

<style>

#small{

    width: 500px;

    height: 312px;

    position: absolute;

    left: 20px;

    top: 20px;

}

#pic1{

    position: absolute;

    left: 0px;

    top: 0px;

}

#pic1 img{

    width: 100%;

    height: 100%;

}

#big{

    width: 200px;

    height: 200px;

    position: absolute;

    left: 550px;

    top: 50px;

    border: 1px solid blue;

    overflow: hidden;

}

#pic2{

    width: 1000px;

    height: 625px;

    position: absolute;

    left: 0;

    top: 0;

}

#pic2 img{

    width: 100%;

    height: 100%;

}

#mask{

    width: 100px;

    height: 100px;

    background: black;

    opacity: 0.3;/*让遮罩层看起来透明*/

    filter: alpha(opacity = 30);/*兼容不同的浏览器*/

    position: absolute;

    display: none;

}

</style>

<script>

window.onload = function(){//文档内容加载完之后再执行

    //当鼠标移入小图片,显示遮罩层和放大的区域

    $('small').onmouseenter = function(){

        $('mask').style.display = 'block';

        $('big').style.display='block';

    }

        //鼠标移出时,隐藏遮罩层和放大的区域

    $('small').onmouseleave = function(){

        $('mask').style.display='none';

        $('big').style.display="none";

    }

    //鼠标移动

    $('small').onmousemove = function(ev){

        var e = ev || window.event;

        //计算鼠标的位置,并让鼠标显示在遮罩层的中间

        var l = e.clientX - $('small').offsetLeft - 50;

        var t = e.clientY - $('small').offsetTop -50;

        //别让遮罩层移出图片

        if(l <= 0){

            l = 0;

        }

        if(l >= 500 - 100){

            l = 400;

        }

        if(t <= 0){

            t = 0;

        }

        if(t >= 312 - 100){

            t = 212;

        }

        //遮罩层的移动

        $('mask').style.left = l + 'px';

        $('mask').style.top = t + 'px';

        //通过遮罩层移动,来计算出放大后图片的显示区域

        $("pic2").style.left = -$("mask").offsetLeft * 2 + 'px';

        $("pic2").style.top = -$("mask").offsetTop * 2 + 'px';

    }

}

//为了更容容易的获取id

function $(id){

    return document.getElementById(id);

}

</script>

</head>

<div id="small">

    <div id="pic1">

        <img src="mm.jpg" alt="">

    </div>

    <div id="mask"></div>

</div>

<div id="big">

    <div id="pic2">

        <img src="mm.jpg" alt="">

    </div>

</div>

 

</html>

全部评论

相关推荐

群星之怒:1.照片可以换更好一点的,可以适量P图,带一些发型,遮住额头,最好穿的正式一点,可以适当P图。2.内容太少。建议添加的:求职意向(随着投递岗位动态更改);项目经历(内容太少了建议添加一些说明,技术栈:用到了什么技术,还有你是怎么实现的,比如如何确保数据传输稳定的,角色注册用到了什么技术等等。)项目经历是大头,没有实习是硬伤,如果项目经理不突出的话基本很难过简历筛。3.有些内容不必要,比如自我评价,校内实践。如果实践和工作无关千万别写,不如多丰富丰富项目。4.排版建议:建议排版是先基础信息,然后教育背景(要突出和工作相关的课程),然后专业技能(一定要简短,不要长篇大论,写你会什么,会的程度就可以),然后是项目经历(一定要详细,占整个简历一定要超过一半,甚至超过百分之70都可以)。最后如果有一部分空白的话可以填补上校内获得的专业相关的奖项,没有就写点校园经历和自我评价。5.技术一定要够硬,禁得住拷打。还有作息尽量保证正常,不要太焦虑。我24双非本科还是非科班,秋招春招各找了一段实习结果都没有转正,当时都想噶了,最后6月份在校的尾巴也找到一份工作干到现在,找工作有时很看运气的不要急着自我否定。 加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务