js 实现淘宝放大镜


<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title>    <style>        *{            margin: 0;            padding: 0;        }        .div1, .div2 {            width: 430px;            height: 430px;            float: left;            cursor:crosshair;        }        .div1 img{            width: 430px;            height: 430px;        }        .div2{            position: relative;            overflow: hidden;            display: none;            margin-left: 10px;        }        .div2 img{            width: 800px;            height: 800px;            position: absolute;        }        .div3, .div4, .div5, .div6 {            width: 60px;            height: 60px;            float: left;            margin-left: 33px;        }        #small img:hover{            cursor: pointer;            border: 3px solid #21bbca;        }        #div1-1{            width: 230px;            height: 230px;            border: 1px solid red;            position: absolute;            background-image: url("21_03.png");            top: 0;            left: 0;            opacity: 0.5;            display: none;        }    </style></head><body><div>    <div id="big" style="overflow: hidden;">        <div class="div1">            <img id="bimg" src="imgA_2.jpg" alt=""/>            <div id="div1-1"></div>        </div>        <div class="div2"><img id="rig" src="imgA_3.jpg" alt=""/></div>    </div>
<div id="small" >        <div class="div3"><img src="imgA_1.jpg" alt=""/></div>        <div class="div4"><img src="imgB_1.jpg" alt=""/></div>        <div class="div5"><img src="imgC_1.jpg" alt=""/></div>        <div class="div6"><img src="imgD_1.jpg" alt=""/></div>    </div></div>样式效果
 
<script>
    function getChildNodes(b){
        var arr=[];
        for(var i=0;i< b.childNodes.length;i++){
            if(!(b.childNodes[i].nodeType ==3 && b.childNodes[i].nodeValue.trim() =="")){
                arr.push(b.childNodes[i]);
            }
        }
        return arr;
    }
    var small =getChildNodes(document.getElementById("small"));
    var big = getChildNodes(document.getElementById("big"));
    var rig=document.getElementById("rig");
    var bimg = document.getElementById("bimg");
    var divnie=document.getElementById("div1-1");
    var arr = ["imgA_2.jpg", "imgB_2.jpg", "imgC_2.jpg", "imgD_2.jpg"];
    var brr = ["imgA_3.jpg", "imgB_3.jpg", "imgC_3.jpg", "imgD_3.jpg"];

    for(var i=0;i<arr.length;i++){
        !function(i){
            small[i].onmouseover=function(){
                bimg.src=arr[i];
                rig.src=brr[i];
            }
        }(i);
    }
        function move(ev){
            ev = ev || window.event;
            var ox = ev.clientX-divnie.offsetWidth/2;
            var oy = ev.clientY-divnie.offsetHeight/2;
            if(ox<0){ox=0;}
            else if(ox>big[0].offsetWidth-divnie.offsetWidth){
                ox=big[0].offsetWidth-divnie.offsetWidth;}
            if(oy<0){oy=0;}
            else if(oy>big[0].offsetWidth-divnie.offsetWidth){
                oy=big[0].offsetHeight-divnie.offsetHeight;}
            divnie.style.left = ox+"px";
            divnie.style.top = oy+"px";
            console.log(divnie.style.left);
            var bei = big[1].clientWidth/divnie.clientWidth;
            rig.style.left =-bei*ox+"px";
            rig.style.top  =-bei*oy+"px";
        }
        //隐藏放大镜移动
        big[0].onmousemove=move;
        big[0].onmouseover=function(){
            //隐藏图片显示
            //隐藏放大镜显示
            big[1].style.display="block";
            divnie.style.display="block";
            move();
        };
        //鼠标移除显示
        big[0].onmouseout=function(){
            big[1].style.display="none";
            divnie.style.display="none";
        };

</script>

交互效果

				
时间: 2025-01-20 21:49:59

js 实现淘宝放大镜的相关文章

淘宝放大镜效果

淘宝放大镜效果,其实就是一张小图片,还有一张大图片.鼠标移动,按比例显示大图的一部分,在大图的父元素上设置overflow:hidden,就OK了.这里面需要注意换算好大小图的比例. 代码地址:https://github.com/peng666/blogs/tree/gh-pages/floats 在线测试地址:http://peng666.github.io/blogs/floats/

js实现淘宝首页图片轮播效果

原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>淘宝首页图片轮播效果</title> <style> <!-- * {margin: 0;padding:0;} body

JS仿淘宝详情页菜单条智能定位效果

类似于淘宝详情页菜单条智能定位 对于每个人来说并不陌生!如下截图所示:红色框的那部分! 基本原理: 是用JS侦听滚动事件,当页面的滚动距离(页面滚动的高度)大于或者等于 "对象"(要滚动的对象)距离页面顶部的高度,也就是说滚动的对象与窗口的上边缘接触时,立即将对象定位属性position值改成fixed(固定) (除IE6以外,因为IE6不支持fixed).对于IE6用绝对定位position:absolute,top:就是"游览器滚动的top".在 IE6下浏览看

原生JS实现简单的淘宝放大镜效果

大家经常去淘宝买东西会发现,淘宝上的放大镜效果挺有意思的,这里简单的实现了下,代码中的图片地址 亲们可以自行更换; <!DOCTYPE html> <html> <head> <title>放大镜</title> <meta charset="utf-8" /> <style type="text/css"> *{ margin: 0; padding: 0; } body{ hei

JS 仿淘宝幻灯片 非完整版 小案例

仿淘宝幻灯片,基础版,后期效果是要做到每次点击小圆点,切换都无缝 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 2 "http://www.w3.org/TR/html4/strict.dtd"> 3 4 <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 5 <head> 6

纯HTML/CSS/JS实现淘宝、京东两种轮播图

最近刚好重新看了一下前端的内容,在做网页banner的时候实现轮播图上遇到了问题. 本着不想用轮子的心态,在网上查了半天很多实现有点问题(逼死强迫症 于是对着淘宝和京东首页两种不同的轮播图做了一个实现. 循环式(淘宝首页) 大概思路: 为了实现无限循环,在第一张图前放一个最后一张图,最后一张图后面放一个第一张图 <li><img src="image3.jpg" alt=""></li> <li><img src

原生js淘宝放大镜效果(第二版)

随便写写 <!DOCTYPE html> <html> <head> <title>放大镜</title> <meta charset="utf-8" /> <style type="text/css"> *{ margin: 0; padding: 0; } body{ height: 2000px; } #wrapleft{ width: 300px; height: 400px

js原生之淘宝放大镜特效

<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> html,body{ margin:0; padding:0; } #maglifier{ width:1030px; height:520px;

JQ实战天猫淘宝放大镜

这个特效平时生活中很常见,话不多说先上效果图. 首先布局,遮罩层是这个效果中的重点精华,也就是下面代码中的shade. <style> * { margin:0px; padding:0px;} #box { width:400px; height:400px; border:5px solid #CCC; margin:100px auto; position:relative;} #box .simg {width:400px; height:400px; position:relativ