简易的js原生放大镜代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    #obj{ float: left; width: 200px; height: 200px; position:relative; }

#obj img{ width: 200px; height: 200px; display: block; }

#darg{ width: 100px; height: 100px; background: yellow; position: absolute; left: 0px; top: 0px; opacity: 0.4;
        cursor: move; display: none;}

#rightShow{ float: left; width: 400px; height: 400px; overflow: hidden; display: none; }

#rightShow img{ width: 800px; height: 800px; }
    </style>
    <script type="text/javascript">
        window.onload=function(){
            var obj = document.getElementById(‘obj‘);
            var leftImg = document.getElementById(‘leftImg‘);
            var darg = document.getElementById(‘darg‘);
            var rightShow = document.getElementById(‘rightShow‘);
            var rightImg = document.getElementById(‘rightImg‘);

obj.onmousemove=function(e){    //当鼠标在obj上面移动的事件

var e = e || window.event;  //获取时间对象 并且做兼容处理

darg.style.display=‘block‘;  //模拟放大镜的图标显示
                rightShow.style.display=‘block‘;  //放大镜的区域显示

var lefts = e.clientX - obj.offsetLeft - darg.offsetWidth/2;  
                //移动时鼠标距离浏览器左侧距离   减去  obj距离浏览器的左侧距离  减去  放大镜图标实际宽度(包括边线等)的一半
                //就是obj内部放大镜图标距离obj内边的左侧距离
                var tops = e.clientY - obj.offsetTop - darg.offsetHeight/2;
                //移动时鼠标距离浏览器顶部距离   减去  obj距离浏览器的顶部距离  减去  放大镜图标实际高度的一半
                //就是obj内部放大镜图标距离obj内边的顶部距离
                var maxmoveX = obj.clientWidth - darg.offsetWidth;
                //移动时 obj的可视宽度(不包括边线滚动条等) 减去  darg放大镜图标的实际宽度
                //就是obj内部减去放大镜剩余的宽度 也就是可以左右移动的距离
                var maxmoveY = obj.clientHeight - darg.offsetHeight;
                //移动时 obj的可视高度 减去 darg放大镜图标的实际高度度
                //移动obj内部减去放大镜剩余的高度 也就是可以上下移动的距离

if(lefts > maxmoveX){ //如果移动的距离超过可以左右移动的距离就把可以移动的距离赋值 防止放大镜溢出obj右侧
                    lefts = maxmoveX;
                }

if(tops > maxmoveY){  //如果移动的距离超过可以上下移动的距离就把可以移动的距离赋值 防止放大镜溢出obj下方
                    tops = maxmoveY;
                }

if(lefts < 0){  //如果移动的左距离小于0了 就把0赋给移动的距离 防止放大镜溢出obj 左侧
                    lefts = 0;
                }

if(tops < 0){  //如果移动的上距离小于0了 就把0赋值给移动的距离 防止放大镜溢出obj 上侧
                    tops = 0;
                }

darg.style.left = lefts + ‘px‘;  //把鼠标移动的左右距离赋值给放大镜 让放大镜跟着移动
                darg.style.top = tops + ‘px‘;   //把鼠标移动的上下距离赋值给放大镜 让放大镜跟着移动

var num = rightImg.offsetWidth/leftImg.offsetWidth;
                //大的图片 除以小的图片 得到要放大的倍数
                rightShow.scrollLeft = darg.offsetLeft * num;  
                //把放大镜距离左侧的距离乘以倍数然后赋值给包含大图片的那个元素(对象)
                //那么这个元素内部就应该有距离左侧的scrollLeft值但是因为溢出隐藏了 所以滚动条不显示 就隐藏了
                rightShow.scrollTop = darg.offsetTop * num;
                //把放大镜距离上侧的距离乘以倍数然后赋值给包含大图片的那个元素(对象)
                //那么这个元素内部就应该有距离左侧的scrollTop值但是因为溢出隐藏了 所以滚动条不显示 就隐藏了
            }

obj.onmouseout=function(){

darg.style.display=‘none‘;
                rightShow.style.display=‘none‘;
                //鼠标溢出obj时隐藏
            }

};
    </script>
</head>
<body>
    <div id="obj">
        <img id="leftImg" src="images/tablist01.jpg" title=" " />
        <div id="darg"></div>
    </div>

<div id="rightShow" class="all"><img id="rightImg" src="images/tablist01.jpg" title=" " /></div>
</body>
</html>

时间: 2024-07-28 13:13:57

简易的js原生放大镜代码的相关文章

仿jQuery的siblings效果的js原生代码

仿jQuery的siblings效果的js原生代码 <previousSibling> 属性返回选定节点的上一个同级节点(在相同树层级中的前一个节点). <nextSibling> 属性返回被选节点的下一个同级节点(在相同树层级中的下一个节点). 如果不存在这样的节点,则该属性返回 null.//元素节点的节点类型是 1  obj.previousSibling.nodeType ==1; reverse() 方法用于颠倒数组中元素的顺序. push() 方法可向数组的末尾添加一个

Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码

前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function(){ //获取当前输入 的值 var value=$(this).val(); //偷偷摸摸发起请求 var url="${pageContext.request.contextPath }/like" var params="name="+value; //先清空下方

Js原生Ajax和Jquery的Ajax

一.Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死 2.Ajax的运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提交请求到服务器端,在这段时间里,客户端可以任意进行任意操作,直到服务器端将数据返回给Ajax引擎后,会触发你设置的事件,从而执行自定义的js逻辑代码完成某种页面1 功能. 二

认识JQuery,JQuery的优势、语法、多库冲突、JS原生对象和JQuery对象之间相互转换和DOM操作,常用的方法

(一)认识JQuery  JQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一套定义好的方法    JQuery的主旨:以更少的代码,实现更多的功能 (二)JQuery的优势 1)可以像CSS一样访问和操作DOM 2)修改CSS控制页面外观 3)简化JS代码操作 4)事件代理更加容易 5)动画效果使用方便 6) Ajax技术更加完美 7)大量的基于Jquery的插件 8)可以自定义扩展功能插件 (三)JQuery的语法 格式:$(selector).actio

图片轮播(左右切换)--js原生和jquery实现

图片轮播(左右切换)--js原生和jquery实现 左右切换的做法基本步骤跟 上一篇文章  淡入淡出 类似,只不过修改了一些特定的部分 (1)首先是页面的结构部分 对于我这种左右切换式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以用新的div 也可以直接使用 ul-->li形式) 4.然后是图片两端的左箭头和右箭头5.然后是一个透明背景层,放在图片底部 6.然后是一个图片描述info层,放在

JS原生Ajax请求

摘录一个JS原生Ajax请求行为,原文地址:http://caibaojian.com/ajax-jsonp.html ajax({ url: "./TestXHR.aspx", //请求地址 type: "POST", //请求方式 data: { name: "super", age: 20 }, //请求参数 dataType: "json", success: function (response, xml) { //

JS(原生)事件委托:为动态创建的节点绑定事件

项目开发中经常需要为动态创建的节点绑定事件, 比如需要创建一个动态列表:在li的数量非常少的时候,为每一个li绑定事件不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(假设),为每个li绑定事件就会对页面性能产生很大的影响.当有大量元素需要绑定相同事件的时候可采用事件委托,将在目标元素上要处理的事件委托给父元素或者祖先元素 优点    事件委托对于web应用程序的性能有如下几个优点:    1.需要管理的函数变少了    2.占用的内存少了    3.javascrip

一步步教你js原生瀑布流效果实现

一步步教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一张挨着一张竖直排列 4.鼠标向下滚动,一直不停的加载图片 5.浏览器的宽度改变,图片的列数会进行相应的更改 那么这种效果类似现实生活中的瀑布,所以我们叫它瀑布流的效果. Js原生瀑布流效果的实现 从上述分析中,我们可以把整个效果分为以下四个部分: html+css界面搭建 瀑布流效果 浏览器向下滚动

JS原生轮播图

哈喽!我的朋友们,最近有一个新项目.所以一直没更新!有没有想我啊!! 今天咱们来说一下JS原生轮播图! 话不多说: 直接来代码吧:下面是CSS部分: 1 *{ 2 padding: 0px; 3 margin: 0px; 4 } 5 img{ 6 width: 500px; 7 height: 300px; 8 } 9 li{ 10 float: left; 11 } 12 ul{ 13 width: 2000px; 14 list-style: none; 15 position: absol