********** 希望对大家帮助 我会继续努力的 如果有不对的地方请大家帮忙指出******

1 【JS 代码】

<script>

  1. var oBox = document.getElementById("box");
    var bigBox = document.getElementById("bigBox");
    var img = bigBox.getElementsByTagName("img")[0];
    var mark;
    // 分别给元素的鼠标进入,滑动,滑出绑定方法;
    // 1. 鼠标滑入; 1) :创建出小盒子 2) : bigBox 显示;
    oBox.onmouseenter = function () {
    var smallBox = document.createElement("div");
    smallBox.id = "mark";
    this.appendChild(smallBox); // 需要放入DOM中,才能用document去获取元素;否则当前节点是获取不到的;
    mark = document.getElementById("mark");
    // 让大盒子显示
    bigBox.style.display = "block";
    }
    oBox.onmousemove = function (e) {
    // 计算小盒子的位置;大盒子图片的位置
    e = e || window.event;
    var minL = 0;
    var maxL = box.offsetWidth/2;
    var left = e.clientX - box.offsetLeft - mark.offsetWidth/2;
    var top = e.clientY- box.offsetTop - mark.offsetHeight/2;
    // 如果left比最小值还小,那么直接让left等于最小值即可;如果left比最大值还大,那么直接设置成最大值;
    if(left<minL){
    left = minL;
    }else if(left>maxL){
    left=maxL;
    }
    if(top<minL){
    top = minL;
    }else if(top>maxL){
    top = maxL;
    }
    // 设置盒子的left、top;
    mark.style.left = left + "px";
    mark.style.top = top + "px";
    // mark 的left和img的left存在2倍关系;
    img.style.left = -2*left + "px";
    img.style.top = -2*top + "px";
    }
    oBox.onmouseleave = function () {
    // 鼠标离开,移出mark;并且让大盒子隐藏;
    this.removeChild(mark);
    bigBox.style.display= "none";
    }
  2. </script>
  3. 2 HTNL部分】
  1. <div id="box">
    <img src="img/iphone.jpg" alt="">
    </div>
    <div id="bigBox">
    <img src="img/iphone_big.jpg" alt="">
    </div>
  1. 3CSS部分】
  1. <style type="text/css">
    *{
    margin: 0;
    padding: 0;
    }
    #box{
    position: relative;
    width:350px;
    height:350px;
    border: 1px solid black;
    margin-top:30px;
    margin-left:50px;
    float:left;
    }
    #box img{
    width:100%;
    height:100%;
    }
    #bigBox{
    display: none;
    position: relative;
    width:350px;
    height:350px;
    border: 1px solid black;
    margin-top:30px;
    margin-left:50px;
    float: left;
    overflow: hidden;
    }
    #bigBox img{
    position: absolute;
    width:700px;
    height:700px;
    }
    #mark{
    position: absolute;
    width:175px;
    height:175px;
    background: rgba(0,0,0,0.3);
    cursor: move;
    left:0;
    top:0;
    }
    </style>

放大镜功能 JS原生写法的更多相关文章

  1. arttemplate.js原生写法案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. screen,client,page三种确定鼠标坐标的区别和原生JS事件写法,区别于Jquery的$.on(x,y);和$.click()

    screenX clientX pageX的区别 screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟scre ...

  3. Js原生实现抽奖功能

    <div>代码 按钮代码 JS原生代码  完整的代码: <div style="width:365px;height:300px;border:2px solid gree ...

  4. 15、js 原生基础总结

    Day1 一.什么是JS?   ==基于对象==和==事件驱动==的客户端脚本语言 二.哪一年?哪个公司?谁?第一个名字是什么? 1995,NetScape(网景公司),布兰登(Brendan Eic ...

  5. JS原生Date类型方法的一些冷知识

    ps:由于Date()是js原生函数,不同浏览器的解析器对其实现方式并不同,所以返回值也会有所区别.本文测试未特别申明浏览器的情况下,均是指win7 x64+chrome 44.0.2403.155 ...

  6. vue中图片放大镜功能

    仿淘宝详情页图片鼠标移过去可对图片放大显示在右侧 效果图如下图,此功能支持PC端与移动端 接下来进入代码实现环节: 先准备两张图片,一张小图片叫 '土味.jpg',大小160*91:一张大图片叫 ' ...

  7. js原生高逼格插件

    如何定义一个高逼格的原生JS插件 作为一个前端er,如果不会写一个小插件,都不好意思说自己是混前端界的.写还不能依赖jquery之类的工具库,否则装得不够高端.那么,如何才能装起来让自己看起来逼格更高 ...

  8. js原生代码实现轮播图案例

    一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...

  9. 手把手教你js原生瀑布流效果实现

    手把手教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一 ...

随机推荐

  1. 浅析CAS与AtomicInteger原子类

    一:CAS简介 CAS:Compare And Swap(字面意思是比较与交换),JUC包中大量使用到了CAS,比如我们的atomic包下的原子类就是基于CAS来实现.区别于悲观锁synchroniz ...

  2. 3. css百度制作字体图片

    http://fontstore.baidu.com/static/editor/index.html?qq-pf-to=pcqq.group

  3. 美的PDF转换成Word转换器完全免费

    下载地址:百度网盘提取码:02ap 安装破解步骤:先安装主程序,末尾是full结尾的,安装完成后不要打开软件,然后接着安装破解补丁,即可破解成功! 需要的老铁们直接拿去用吧,亲测好用!有配套的功能强大 ...

  4. Spring Cloud+nacos+Feign,实现注册中心及配置中心

    写在前面 注册中心.配置中心的概念就不在这里解释了.发现服务原来一直用的是Eureka,因为这家伙闭源了,不爽.然后就发现了nacos,阿里巴巴的,好东西,一个搞定注册中心和配置中心.官网:https ...

  5. Solr搜索结果高级设置

    一.选择响应格式 XML是Solr的默认响应格式.从Solr的角度看,什么样的响应格式并不重要.Solr可以返回XML.JSON.Ruby.Python.PHP.二进制Java等,甚至是自定义格式.使 ...

  6. Java中Double保留小数位

    1.能四舍五入 double d = 114.145; d = (double) Math.round(d * 100) / 100; System.out.println(d); 2. BigDec ...

  7. go的 三个点 ...

    这三个点,比较任性,可前可后,可攻可守... 举2个栗子: 1.func sub(arg ...int) (total int){} 2.argsArr = apend(argsArr[:3], ar ...

  8. tp5.0--多个条件查询全部数据

    用where来查询的话(非主键): 查找:

  9. 在IBM Cloud中运行Fabric

    文章目录 打包智能合约 创建IBM Cloud services 创建fabric网络 创建org和相应的节点 创建order org和相应节点 创建和加入channel 导入智能合约 上篇文章我们讲 ...

  10. 【Linux常见命令】alias命令

    alias命令用于查看和设置指令的别名. 用户可利用alias,自定指令的别名. 若仅输入alias,则可列出目前所有的别名设置. alias的效力仅及于该次登入的操作.若要每次登入是即自动设好别名, ...