zoukankan      html  css  js  c++  java
  • JS 做的鼠标放大镜(初级)

    这今天我们学习鼠标的各种事件,我给大家分享一下鼠标放大镜的效果。

    希望有兴趣的朋友可以一块交流。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>放大镜效果</title>
    <style media="screen">
    *{
    margin: 0;
    padding: 0;
    }
    #wrap {
    400px;
    height: 400px;
    border: 1px solid black ;
    position: absolute;
    }
    #image {
    100%;
    height: 100%;
    position: absolute;

    }
    #slider {
    150px;
    height: 150px;
    border: 1px solid gray ;
    position: absolute;
    /*top: 0;*/
    background: rgba(255, 235, 0, 0.3);
    display: none;
    }
    #wrap_max {
    700px;
    height: 700px;
    border: 1px solid gray ;
    position: absolute;
    left: 400px;
    display: none;
    overflow: hidden;

    }
    #image_max {
    1000px;
    height: 1000px;
    /*display: block;*/
    }
    </style>
    </head>
    <body>
    <div id="wrap">
    <img id="image"src="01.jpg" alt="" />  // 放置图片 
    <div id="slider">

    </div>
    </div>
    <div id="wrap_max">
    <img id="image_max" src="01.jpg" alt="" />  //放置和上面一样的图片
    </div>
    </body>
    <script type="text/javascript">
    var wrap = document.getElementById('wrap');
    var image = document.getElementById('image');
    var slider = document.getElementById('slider');
    var wrapMax = document.getElementById('wrap_max');
    var imageMax = document.getElementById('image_max');

    wrap.onmousemove = function(event){
    event = event || window.event;
    slider.style.display = 'block'; //当鼠标移入wrap时,slider显示。
    wrapMax.style.display = 'inline-block';
    var disX = event.clientX - slider.offsetWidth / 2 ; // slider .offsetWidth/ 2 是让鼠标在slider的底部在中间显示
    var disY = event.clientY - slider.offsetHeight / 2; // slider .offsetHeight/2 是让鼠标在slider的高在中间显示
    var disMaxX = wrap.offsetWidth - slider.offsetWidth ; // slider在wrap移动的最大横向距离
    var disMaxY = wrap.offsetHeight - slider.offsetHeight ; // slider 在wrap中移动的最大纵向距离
    if (disX < 0) {
    disX = 0
    }else if (disX > disMaxX) {
    disX = disMaxX ;
    }
    if (disY < 0) {
    disY = 0
    }else if (disY > disMaxY) {
    disY = disMaxY ;
    }
    slider.style.left = disX +'px';
    slider.style.top = disY + 'px';
    var sealeX = disX / disMaxX ; // slider在wrap x轴 的移动 比例
    var sealeY = disY / disMaxY ; // slider 在 wrap y轴的移动 比例
    wrapMax.scrollLeft = (imageMax.offsetWidth - wrapMax.offsetWidth) * sealeX ; //wrapMax 在imageMax x 轴中的移动值
    wrapMax.scrollTop = (imageMax.offsetHeight - wrapMax.offsetHeight) *sealeY ;

    wrap.onmouseleave = function(){
    slider.style.display = 'none';
    wrapMax.style.display = 'none';
    }
    }


    </script>
    </html>

  • 相关阅读:
    php与smarty结合应对表单get的一个小例子
    VC 使用mingw32编译ffmpeg静态库所需文件(二),mingwexsrc.cpp
    wzplayer for delphi
    wzplayer for delphi
    Delphi 调用VC生成的DLL
    VC 使用mingw32编译ffmpeg静态库所需文件(二),mingwexsrc.cpp
    VC使用mingw32编译ffmpeg静态库所需文件(一),ffmpegshim.c
    Delphi和C++数据类型对照表
    VC使用mingw32编译ffmpeg静态库所需文件(一),ffmpegshim.c
    Delphi 调用VC生成的DLL
  • 原文地址:https://www.cnblogs.com/Sabo-dudu/p/5765962.html
Copyright © 2011-2022 走看看