原生js仿淘宝网商品放大镜效果


Posted in Javascript onFebruary 28, 2017

效果图:(实例图片由自己添加)

原生js仿淘宝网商品放大镜效果

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>仿淘宝放大镜特效</title>
 <style type="text/css">
 *{margin: 0;padding: 0;}
 #demo{width:350px;height:350px;border: 1px solid #000;position:relative;margin:100px;}
 #smil_box{width: 350px;height: 350px;position:relative;}
 #mask{width:175px;height: 175px;background:rgba(255,255,0,0.4);position:absolute;top:0;left:0;display:none;cursor:move;}
 #big_box{width: 400px;height: 400px;position:absolute;top:0;left:360px;border: 1px solid #000;overflow:hidden;display:none;}
 #big_box img{position:absolute;top:0;left:0;}
 </style>
</head>
<body>
 <div id="demo">
 <div id="smil_box">
 <img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=193662baf63738c68b594f3ec920769f" height="350" width="350" alt="">
 <div id="mask"></div>
 </div>
 <div id="big_box">
 <img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=3e8b3554eb90dd13fa0f82465ac6d382" height="800" width="800" alt="" id="big_img">
 </div>
 </div>
</body>
<script type="text/javascript">
 (function(window){
 function $(id){
 return document.getElementById(id);
 };
 // 获取对象
 var demo = $("demo"),smilBox = $("smil_box"),mask = $("mask"),bigImg = $("big_img"),bigBox = $("big_box");
 // smilBox的hover事件
 smilBox.onmouseover = function(){
 mask.style.display = "block";
 bigBox.style.display = "block";
 };
 smilBox.onmouseout = function(){
 mask.style.display = "none";
 bigBox.style.display = "none";
 };
 // 鼠标移动事件
 smilBox.onmousemove = function(event){
 var event = event || window.event;
 // 获取鼠标在页面上的坐标
 var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
 var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
 // mask的位置坐标
 var boxX = pageX - demo.offsetLeft;
 var boxY = pageY - demo.offsetTop;
 var maskX = boxX - mask.offsetWidth / 2;
 var maskY = boxY - mask.offsetHeight / 2;
 // 限制mask的移动范围
 if( maskX < 0 ){
 maskX = 0;
 };
 if( maskX > smilBox.offsetWidth - mask.offsetWidth){
 maskX = smilBox.offsetWidth - mask.offsetWidth;
 };
 if( maskY < 0 ){
 maskY = 0;
 };
 if( maskY > smilBox.offsetHeight - mask.offsetHeight){
 maskY = smilBox.offsetHeight - mask.offsetHeight;
 };
 // 黄色遮罩层的位置坐标
 mask.style.top = maskY + "px";
 mask.style.left = maskX + "px";
 // 大图片移动的比例
 var prop = ( bigImg.offsetWidth - bigBox.offsetWidth ) / (smilBox.offsetWidth - mask.offsetWidth);
 // 大图片的坐标
 var bigImgX = prop * maskX;
 var bigImgY = prop * maskY;
 bigImg.style.top = -bigImgY + "px";
 bigImg.style.left = -bigImgX + "px";
 }
 })(window)
</script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
DOM 基本方法
Jul 18 Javascript
IE无法设置短域名下Cookie
Sep 23 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
Mar 14 Javascript
js string 转 int 注意的问题小结
Aug 15 Javascript
Jquery自定义button按钮的几种方法
Jun 11 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
Nov 18 Javascript
javascript性能优化之事件委托实例详解
Dec 12 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
May 31 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
静态页面实现 include 引入公用代码的示例
Sep 25 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
原生js实现可拖拽效果
Feb 28 #Javascript
javascript 面向对象function详解及实例代码
Feb 28 #Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 #Javascript
原生js实现鼠标跟随效果
Feb 28 #Javascript
canvas实现简易的圆环进度条效果
Feb 28 #Javascript
JS实现的tab切换选项卡效果示例
Feb 28 #Javascript
jQuery Pagination分页插件使用方法详解
Feb 28 #Javascript
You might like
用Php实现链结人气统计
2006/10/09 PHP
Phpbean路由转发的php代码
2008/01/10 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
2019/07/25 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
python统计日志ip访问数的方法
2015/07/06 Python
TensorFlow实现创建分类器
2018/02/06 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
用python实现名片管理系统
2020/06/18 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
前端面试必备之CSS3的新特性
2017/09/05 HTML / CSS
css3实现超炫风车特效
2014/11/12 HTML / CSS
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
日语专业毕业生求职信
2013/12/04 职场文书
大学生入党思想汇报
2014/01/14 职场文书
公司董事任命书
2015/09/21 职场文书
vue首次渲染全过程
2021/04/21 Vue.js