javascript放大镜效果

JS实现放大镜效果

首先我们先设想一下放大镜效果

1、当鼠标进入小盒子的时候,把大图片显示出来

2、当指定移动区域的时候,显示当前放大区域(放大效果)

3、鼠标移除我们让它消失

一、实现页面布局HTML+CSS

二、实现放大镜的功能js

下面来看代码,让你思路变清晰

<!DOCTYPE html><html>    <head>        <meta charset="utf-8" />        <title>放大镜</title>        <style>            #box{                width:  350px;                height: 350px;                margin: 100px 0 0 100px;                position: relative;            }               #small_box{                width:100%;                height: 100%;                border:1px solid #ccc;                position: relative;            }                   #mask{                height: 100px;                width: 100px;

                left: 0px;                top: 0px;                position: absolute;                display: none;                cursor: move;            }               #big_box{                height: 600px;                width: 600px;                border: 1px solid #ccc;                overflow: hidden;                top:0px;                left: 360px;                position: absolute;                display: none;            }               </style>    </head>    <body>        <div id="box">            <div id="small_box">                <img src="img/pic01.jpg" />                <span id="mask"></span>            </div>            <div id="big_box">                <img src="img/pic001.jpg" style="position: absolute;"/>            </div>        </div>

        <script>            window.onload = function(){                //1.获取需要的元素                var box = document.getElementById("box");                var small_box = document.getElementById("small_box");                var big_box = document.getElementById("big_box");                var mask = document.getElementById("mask");                var big_img = big_box.children[0];

                //2.鼠标移入小盒子事件                small_box.onmouseover = function(){                    //2.1鼠标移入,显示放大镜和大图片                    big_box.style.display = ‘block‘;                    mask.style.display = ‘block‘;

                    //2.2移动鼠标的同时移动放大镜,获取鼠标的移动事件                    small_box.onmousemove = function(event){                        // //获取鼠标的坐标点X  Y                        var pointX = event.clientX - box.offsetLeft - mask.offsetHeight*0.5;                        var pointY = event.clientY - box.offsetTop - mask.offsetWidth*0.5;

                        //做边界的校验                        if(pointX<0){//当鼠标的坐标点X小于0的时候我们让它等于0,目的是让它不出去                            pointX = 0;                        }else if(pointX>small_box.offsetWidth-mask.offsetWidth){//当鼠标的坐标点大于(小盒子事件源宽度-指针区域事件源的宽度)时,我们就让它等于那个宽度,防止不出界。                            pointX = small_box.offsetWidth-mask.offsetWidth;                        }

                        if(pointY<0){                            pointY = 0;                        }else if(pointY>small_box.offsetHeight-mask.offsetHeight){                            pointY = small_box.offsetHeight-mask.offsetHeight;                        }

                        //移动mask                        mask.style.left = pointX + ‘px‘;                        mask.style.top = pointY + ‘px‘;

                        //移动大图                        //小盒子中移动的距离:大盒子中移动的距离 = 小盒子的宽度:大盒子的宽度                        //大盒子中移动的距离 = 小盒子中移动的距离/(小盒子的宽度:大盒子的宽度);                        big_img.style.left = -pointX/(small_box.offsetWidth/big_box.offsetWidth)+‘px‘;                        big_img.style.top = -       pointY/(small_box.offsetHeight/big_box.offsetHeight)+‘px‘;                    }                }

    //3.鼠标移除小盒子事件    small_box.onmouseout = function(){    //2.1鼠标移入,显示放大镜和大图片    big_box.style.display = ‘none‘;    mask.style.display = ‘none‘;    }    }    </script>    </body></html>?

注意

移动大图

小盒子中移动的距离:大盒子中移动的距离 = 小盒子的宽度:大盒子的宽度大盒子中移动的距离 = 小盒子中移动的距离/(小盒子的宽度:大盒子的宽度);

big_img.style.left = -pointX/(small_box.offsetWidth/big_box.offsetWidth)+‘px‘;                        big_img.style.top = -       pointY/(small_box.offsetHeight/big_box.offsetHeight)+‘px‘;

里面的减号指的是方向,方向为反方向,这样才能可以实现你所预想的结果,你可以试一下没有减号的效果你就知道是什么样的了

其它不懂的地方欢迎留言

 

原文地址:https://www.cnblogs.com/hushengbin789/p/bin12544946122.html

时间: 2024-11-08 22:44:33

javascript放大镜效果的相关文章

JavaScript之放大镜效果

在网上也浏览过许多关于JavaScript放大镜效果的文章,有的代码解释得些隐晦难懂,看的我头有点晕晕的╮(╯﹏╰)╭,我的心情是这样的: 吐槽完了,我们动动小鼠标,当鼠标经过下面这张美女图片时就实现放大效果: 这个放大效果引用了MagicZoom.css

JavaScript之放大镜效果2

在放大图片效果的同时,我们怎么原图和放大窗体增加间隔呢? 我们只需应用一个table就行了: 源码上: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" con

javascript html 鼠标放大镜效果

1.鼠标放大镜效果 鼠标放大镜效果,将鼠标移入到左图片,则可以在其右边看到放大的图片,且鼠标移动滑块的大小即为右图显示图片.实际效果如下图所示: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style media="screen"> #little_image { width: 400px

Javascript:实操---放大镜效果(2)

CSS部分<style type="text/css">/* body{    padding: 10px;} */#minWrap{    width: 350px;    height: 350px;    border: 1px solid #ccc;    position: relative;}    #slider{    height: 175px;    width: 175px;    background-color: yellow;    opacit

Javascript:实操---放大镜效果

CSS部分<style type="text/css">/* body{    padding: 10px;} */#minWrap{    width: 350px;    height: 350px;    border: 1px solid #ccc;    position: relative;}    #slider{    height: 175px;    width: 175px;    background-color: yellow;    opacit

前端JS电商放大镜效果

前端JS电商放大镜效果: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>26-电商放大镜</title> <style type="text/css"> *{ padding: 0; margin: 0; } #left{ padding: 0; margin: 0; w

淘宝-京东放大镜效果

效果 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>放大镜效果</title> 6 <style type="text/css"> 7 #div1 { 8 width: 180px; 9 height: 180px; 10 position: relative; 11 } 12 #div1

原生JS实现简单的淘宝放大镜效果

大家经常去淘宝买东西会发现,淘宝上的放大镜效果挺有意思的,这里简单的实现了下,代码中的图片地址 亲们可以自行更换; <!DOCTYPE html> <html> <head> <title>放大镜</title> <meta charset="utf-8" /> <style type="text/css"> *{ margin: 0; padding: 0; } body{ hei

jquery放大镜效果

<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-wid