放大镜案例

实现功能类似淘宝查看商品功能

鼠标移动到a图查看b图的比例放大照片(首先要有两种1:2比例或更大的图)

重点:图片的定位:

absolute

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离

scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离

event.clientX 鼠标相对文档的水平座标

event.clientY 鼠标相对文档的垂直座标

offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置

offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置

offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度

offsetWhdth:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度

scrollWidth:获取对象的滚动宽度

scrollHeight: 获取对象的滚动高度。

这些属性的加减

滚轮的高度如果没加的话 宽度一高就会出现问题所以滚轮必须加

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>放大镜</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            width:800px;
            height: 800px;
            position: relative;
            margin: 150px;
        }
        #min,#max{
            width: 400px;
            height: 400px;
        }
        #min{
            float: left;
        }
        #max{
            overflow: hidden;
            float: right;
            position: absolute;
            top:0;
            left: 800px;
            display: none;
        }
        #fu{
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            top: 0;
            background-color: blue;
            opacity: 0.3;
            display: none;
        }
        /*定位很重要 如果没定位就查看不了大图*/
        #imgs{
            position: absolute;
            left: 0;
            top:0;
        }
    </style>
</head>
<body>
<div id="box">
    <div id="min">
        <img src="imgs/min.jpg" alt="">
      <div id="fu"></div>
    </div>
    <div id="max">
        <img src="imgs/max.jpg" alt=""  id="imgs">
    </div>

</div>
<script>
    var min=document.getElementById("min"),
        fu=document.getElementById("fu"),
        max=document.getElementById("max"),
        box=document.getElementById("box"),
        imgs=document.getElementById("imgs")
//    alert(imgs.style.width)
    imgs.style.width="800px"
    min.onmousemove=function (e) {
        fu.style.display="block"
        max.style.display="block"
        var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
        var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
//           alert(fu.offsetWidth)
            var x=e.clientX +scrollLeft- box.offsetLeft-fu.offsetWidth/2
        var y=e.clientY +scrollTop-box.offsetTop-fu.offsetHeight/2

        if(x<0){
            x=0;
        }else if(x>min.offsetWidth-fu.offsetWidth){
            x=min.offsetWidth-fu.offsetWidth;
        }
        if(y<0){
            y=0;
        }else if(y>min.offsetHeight-fu.offsetHeight){
            y=min.offsetHeight-fu.offsetHeight;
        }

        fu.style.left= x+"px"
        fu.style.top=y+"px"

        imgs.style.left = -2*x+"px"
        imgs.style.top = -2*y+"px"

    }
    min.onmouseout=function () {
        fu.style.display="none"
        max.style.display="none"
    }

</script>

</body>
</html>
时间: 2024-08-09 10:29:51

放大镜案例的相关文章

商品放大镜案例

index.html: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X

js-特效部分学习-拖拽效果

一.客户区大小ClientWidth和ClientHeight <style> #box { width: 200px; height: 200px; background-color: aquamarine; margin: 20px; border: 20px solid red; padding:20px; } </style> </head> <body> <div id="box"> </div> <

webAapi

学习目标: 掌握API和Web API的概念 掌握常见浏览器提供的API的调用方式 能通过Web API开发常见的页面交互功能 能够利用搜索引擎解决问题 typora-copy-images-to: media --- Web API Web API介绍 API的概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节.

0189 案例:仿京东放大镜效果

1.1.6 案例:仿京东放大镜 整个案例可以分为三个功能模块 鼠标经过小图片盒子, 黄色的遮挡层 和 大图片盒子显示,离开隐藏2个盒子功能 黄色的遮挡层跟随鼠标功能. 移动黄色遮挡层,大图片跟随移动功能. 1.1.7 案例分析 黄色的遮挡层跟随鼠标功能. 把鼠标坐标给遮挡层不合适.因为遮挡层坐标以父盒子为准. 首先是获得鼠标在盒子的坐标. 之后把数值给遮挡层做为left 和top值. 此时用到鼠标移动事件,但是还是在小图片盒子内移动. 发现,遮挡层位置不对,需要再减去盒子自身高度和宽度的一半.

[js开源组件开发]图片放大镜

图片放大镜 一般情况下,手机由于屏幕太小,会有图片上看不清的问题,所以我就做了一个放大镜的js效果,支持pc和移动端.它的原理是利用的backgroundsize来实现的,所以你的浏览器首先要支持这个属性. 然后这个组件还是开源的git项目,你可以为它添加不支持backgroundsize时的解决方法.它的git地址是:图片放大镜github地址 https://github.com/tianxiangbing/image-zooming   ,它的在线演示地址是:js图片放大镜演示地址http

以CSDN app 为例 软件工程 案例分析

在很多开发人员和IT专业的学生都在移动设备上学习.工作,在移动设备上的APP 能满足这类目标用户的需求么? 为了回答这个问题,我们以CSDN app为例,进行一次较为全面的案例分析: 一.调研与评测 经过我为期10天的使用,找到以下两个较为严重的功能性bug: 1.图片放大bug:在PC端的网页CSDN中,对于博客中的图片,当鼠标位于图片上时,光标由箭头变为放大镜符号,单击鼠标,图片悬浮于页面上并且进行了放大:在CSDN app中,对博客中的文章进行单击,没有任何变化,用两指进行拉伸操作,只有滚

用JS实线放大镜的效果

HTML代码如下: <div id="preview"> <div id="mediumDiv"> <img id="mImg" src="images/products/product-s1-m.jpg"/>//这是中级图片层 <div id="mask"></div>//这是遮罩 <div id="superMask"

解决 libev.so.4()(64bit) is needed by percona-xtrabackup-2.3.4-1.el6.x86_64案例

在mysql主从同步时经常会用到Xtra, XtraBackup可以说是一个相对完美的免费开源数据备份工具,支持在线无锁表同步复制和可并行高效率的安全备份恢复机制相比mysqldump来说优势较大好处多,在RHEL6中安装XtraBackup时会发生缺少依赖包的现象 本案例针对Xtra缺少依赖包的情况进行安装分析解决 1.本实验环境 [root@master ~]# uname  -r 2.6.32-573.el6.x86_64 [root@master ~]# cat /etc/redhat-

系统内存耗尽的案例分析

近日遇到一个RAC节点hang导致节点被重启的问题,最后经过分析,发现在系统运行一段时间后,系统内存就会耗尽,原本256G的内存,最后只剩几百M. 1. 问题时间段的TOP输出可以看到,内存只剩7G,而分析内存问题,TOP输出是不够的,一般情况下,Database的SGA和PGA是内存使用大户,所以,在TOP很难发现谁是使用内存最多的. 除非某些进程内存使用的格外明显 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Linux OSWbb v7.3.