zoukankan      html  css  js  c++  java
  • js购物时的放大镜效果

    首先需要两张一样的图片,一张大图,一张小图,大图显示,当鼠标移入时,小图上出现一个滑块,可以滑动,大图也跟着显示,大图的显示区域和小图一样,当滑块滑到不同的位置,大图显示不同的区域,当鼠标移出时,滑块和大图都隐藏。

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>放大镜</title>
        <style type="text/css">
    *{
        padding: 0px;
        margin: 0px;
    }
    #left{
        400px;
        height:400px;
        border:1px solid blue;
        position: relative;
        float:left;
        background: url(xiao.jpg) no-repeat;
    }
    
    #left #huakuai{
        200px;
        height:200px;
        background:white;
        position: absolute;
        opacity: 0.6;
        filter:alpha(opacity=60);
        display: none;
    }
    #left #cover{
        400px;
        height: 400px;
        position: absolute;
        z-index: 3;
        top:0px;
        left:0px;
        background: red; 
        opacity: 0;
        filter:alpha(opacity=0);
        /*相当于给左边的div加了一个盖子,鼠标直接作用在盖子上,不用作用滑块上,防止滑块的抖动*/
    }
    #right{
        400px;
        height:400px;
        border:1px solid blue;
        overflow: hidden;
        float: left;
        margin-left:20px; 
        position:relative;
        display: none;
    }
    #right #right_img{
        position: absolute;
        top:0px;
        left:0px;
        /*根据鼠标的移动,图片的显示区域显示相应的位置*/
    }
    
        </style>
        <script type="text/javascript">
    window.onload=function(){
        var oleft=document.getElementById('left');//获得左边原图的div元素
        var ohk=document.getElementById('huakuai');//获得滑块元素
        var ocover=document.getElementById('cover');//获得盖子元素
        var oright=document.getElementById('right');//获得右边div区域
        var oright_img=document.getElementById('right_img');//获得右边图片区域
    
        oleft.onmouseover=function(){//当鼠标移入左边的div时,
            ohk.style.display='block';//滑块显示
            oright.style.display='block';//右边div显示
        }
         oleft.onmouseout=function(){//鼠标移出,
            ohk.style.display='none';//滑块隐藏
            oright.style.display='none';//右边div隐藏
        }
        ocover.onmousemove=function(e){//鼠标在盖子上移动的事件
            var ev=e||window.event;//兼容性
            var m_left=ev.layerX||ev.offsetX;//兼容性获得鼠标的横坐标
            var left=m_left-100;//表示滑块到div左边框的距离,鼠标在div中间
            if(left<0){//如果滑块要超出左边框,另左边距等于0
                left=0;
            }
            if(left>200){//如果滑块要超出右边框,另左边框为最大值200
                left=200;
            }
            huakuai.style.left=left+'px';//将左边距赋值给小滑块
    
            var m_top=ev.layerY||ev.offsetY;//同理设置垂直方向的值
            var top=m_top-100;
            if(top<0){
                top=0;
            }
            if(top>200){
                top=200;
            }
            huakuai.style.top=top+'px';
    
            var right_left=left*-2;//因为大图为小图的2倍,所以乘以2,因为图片要向左上移动,位置像素值为负,所以再乘以-1
            var right_top=top*-2;//同理,获得垂直方向的值
            oright_img.style.left=right_left+'px';//赋值
            oright_img.style.top=right_top+'px';
        }
    
    }
        </script>
    
    </head>
    <body>
    <div id="left">
        <div id="huakuai"></div>
        <div id="cover"></div>
    </div>
    <div id="right">
        <img src="datu.jpg" id="right_img">
    </div>
        
    </body>
    </html>
    

     图片如下:

  • 相关阅读:
    PAT-字符串处理-A 1001 A+B Format (20分)
    PAT-字符串处理-B 1048 数字加密 (20分)
    数据库-第二章 关系数据库-2.3 关系的完整性
    数据库-第二章 关系数据库-2.2 关系操作
    数据库-第二章 关系数据库-2.1 关系数据结构及形式化定义
    IDLE打开Python报错 api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
    老毛桃pe安装系统
    LeetCode 213. House Robber II (动态规划)
    LeetCode 198. House Robber(DP)
    LeetCode 211. Add and Search Word
  • 原文地址:https://www.cnblogs.com/lzzhuany/p/4568027.html
Copyright © 2011-2022 走看看