淘宝之放大镜

<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title>    <style>        .box {            width:350px;            height: 350px;            position: relative;            margin-left: 200px;            margin-top: 200px;            border: 1px solid #000;        }        .smallBox {            position: relative;        }        .mask {            width: 175px;            height: 175px;            background-color: rgba(125, 125, 125, .4);            position: absolute;            left: 0;            top: 0;            display: none;

}        .bigBox {            width: 400px;            height: 400px;            position:absolute;            left: 350px;            top: 0;            overflow: hidden;            display: none;        }    </style></head><body><div class="box">    <div class="smallBox">        <img src="images/001.jpg" />        <div class="mask"></div>    </div>    <div class="bigBox">        <img src="images/0001.jpg" />    </div></div><script src="toolkit.js"></script><script>    //需求1:鼠标进入smallBox区域中,显示mask 和 bigBox,移除后隐藏。    var box = document.getElementsByTagName("div")[0];    var smallBox = box.children[0];    var bigBox= box.children[1];    var mask = smallBox.children[1];    var bigImg= bigBox.children[0];    smallBox.onmouseover = function(){        show(mask);        show(bigBox);    }    smallBox.onmouseout = function(){        hide(mask);        hide(bigBox);    }    //需求2:mask 跟随鼠标移动    smallBox.onmousemove = function(event){        //鼠标在网页中位置        event = event || window.event;        var pageX = event.pageX || event.clientX + scroll().left;        var pageY = event.pageY || event.clientY + scroll().top;

//盒子在网页中位置        var boxX= box.offsetLeft;        var boxY = box.offsetTop;

//鼠标在盒子中的位置        var sBoxX = pageX - boxX;        var sBoxY = pageY- boxY;        //鼠标在盒子中移动位置有界限        if(sBoxX<0){            sBoxX =0;        }        if(sBoxX>(smallBox.offsetWidth- mask.offsetWidth)){            sBoxX=(smallBox.offsetWidth- mask.offsetWidth)        }        if(sBoxY<0){            sBoxY =0;        }        if(sBoxY>(smallBox.offsetHeight- mask.offsetHeight)){            sBoxY=(smallBox.offsetHeight- mask.offsetHeight)        }        //给mask位置赋值        mask.style.left = sBoxX + "px";        mask.style.top = sBoxY + "px";

//需求3:mask同bigBox等比例移动        //比例公式: smallBox/bigImg = mask/bigBox=sBox/bBox        //bBox = bigBox*sBox/mask;        var bBoxX = bigBox.offsetWidth*sBoxX/mask.offsetWidth;        var bBoxY = bigBox.offsetWidth*sBoxY/mask.offsetHeight;

bigImg.style.marginLeft = -bBoxX + "px";        bigImg.style.marginTop = -bBoxY + "px";    }</script></body></html>引入toolkit.js内容:
function scroll(){    var scroll = {        top: window.pageYOffset || document.documentElement.scrollTop,        left: window.pageXOffset || document.documentElement.scrollLeft    }    return scroll;}

function animate(ele,target){    clearInterval(ele.timer);    ele.timer = setInterval(function(){        //1.获取步长        var step = (target -ele.offsetLeft)/10;        //2.二次处理步长        step = step>0? Math.ceil(step):Math.floor(step);        //3、        ele.style.left = ele.offsetLeft+ step +"px";        console.log(1);        if(Math.abs(target -ele.offsetLeft)<=Math.abs(step)){            clearInterval(ele.timer);            ele.style.left = target + "px";        }    },20);}

function client(){    return {        "width": window.innerWidth || document.documentElement.clientWidth,        "height": window.innerWidth ||document.documentElement.clientWidth,    }}

function changeColor(){    if(client().width>960){        document.body.style.backgroundColor="blue";    }else if(client().width>640){        document.body.style.backgroundColor="red";    }else{        document.body.style.backgroundColor="orange";    }}

function getStyle(ele,attr){    if(ele.window.getComputedStyle){        return  ele.window.getComputedStyle(ele,null)[attr];    }else{        return  ele.currentStyle[attr];    }}

function show(ele){    ele.style.display="block";}

function hide(ele){    ele.style.display="none";}
时间: 2024-10-04 07:28:41

淘宝之放大镜的相关文章

淘宝-京东放大镜效果

效果 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>放大镜效果</title> 6 <style type="text/css"> 7 #div1 { 8 width: 180px; 9 height: 180px; 10 position: relative; 11 } 12 #div1

类淘宝的放大镜效果

这里是一个在PC端电商页面经常用到的一种功能,它可以使消费者在查看页面的商品时看的更加清晰.也就是俗称的放大镜 这里需要用到一些知识,鼠标事件(mousemove,mouseenter,mouseleave),定位等事件. 这里的html布局是在页面上有一个div,内部放一张图片,和一个小滑块(小div),另一个位置放另一个div,内部放一张和上面相同的图片,这个图片要求是比上一张大. <div class="small"> <img src="15/img

淘宝放大镜效果

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

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

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

基于jQuery仿淘宝产品图片放大镜代码

今天给大家分享一款 基于jQuery淘宝产品图片放大镜代码.这是一款基于jquery.imagezoom插件实现的jQuery放大镜.适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="box"> <div class="tb-booth tb-pic tb-s310"> <a href=&q

[KISSY5系列]淘宝全终端框架 KISSY 5--从零开始使用

KISSY 是淘宝一个开源的 JavaScript 库,包含的组件有:日历.图片放大镜.卡片切换.弹出窗口.输入建议等 一.简介 KISSY 是一款跨终端.模块化.高性能.使用简单的 JavaScript 框架. 除了完备的工具集合如 DOM.Event.Ajax.Anim 等它还提供了经典的面向对象.动态加载.性能优化解决方案作为一款全终端支持的 JavaScript 框架 KISSY 为移动终端做了大量适配和优化,让你的程序在全终端均能流畅运行 二.目录 1.KISSY5安装使用(一) 2.

剁手党也有春天 -- 淘宝 UWP ”比较“功能诞生记

前言 网购已经不再是现在的时髦,而变成了我们每天的日常生活.上网已经和买买买紧密地联系在了一起,成为了我们的人生信条.而逛街一词,越来越多地变成了一种情怀.有时候我们去逛街,要么是为了打发时间,要么是想亲手摸摸商品本身,要么就是想看看不同的商品,放在眼前或者在脑海里比较一下.毕竟现在网上琳琅满目的商品让人眼花缭乱,一次展示一个,看完这个,忘了上一个:看完了最后一个,已经没有力气再打开长长的历史列表一个一个看回去.如果没有石猴的火眼金睛,如何万里挑一,找到自己中意的那个‘它’呢?毕竟我们大多数人,

淘宝新举动——屏幕跟随购物车按钮啦

这几天使用淘宝和天猫,发现一个不错的用户体验提升: 当我的页面向下滑动的时候,几个页面tab会跟随着停留在页面顶端,更可喜的是,如果我看了下觉得不错,准备加入购物车,就惊喜的发现加入购物车赫然在头部的固定滚动条上,我可以轻松的点击加入. 当你不需要的时候,可以忽视它,当你需要他的时候,他不声不响的就在那里等候你.比男朋友还体贴,这就是最高超的用户体验.并且对于电商而言,快速达成引流.成功下单这是核心的也是至高的目的.这个用户体验的提升,于此,无异于给了个加速度. 有图有真相: 另外,天猫和淘宝在

淘宝宝贝详情页的优化技巧

客户进入店铺,第一眼看到的一般都是宝贝详情页.我们知道很多客户看到产品后直接影响其购买的关键因素是宝贝详情页.宝贝的详情描述能否吸引买家是关键.所以,如果你想提高成交量,就必须优化好自己的宝贝详情页. 那么问题来了,如何优化宝贝详情页呢? 1.宝贝标题(宝贝标题的优化设置技巧) 大部分的客户是通过搜索关键字来找到宝贝的,宝贝标题的优化重要性不言而喻.宝贝标题中有效关键字的个数和密度,将直接影响到宝贝被搜索到的几率,曝光率和间接影响访问量,所以做好标题的的优化已刻不容缓!! 2.宝贝主图 客户进入