原生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 相关文章推荐
语义化 H1 标签
Jan 14 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
Nov 07 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
JS实现的简单轮播图运动效果示例
Dec 22 Javascript
简单介绍react redux的中间件的使用
Apr 06 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
小程序server请求微信服务器超时的解决方法
May 21 Javascript
JavaScript实现秒杀时钟倒计时
Sep 29 Javascript
微信小程序实现canvas分享朋友圈海报
Jun 21 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
低门槛开发iOS、Android、小程序应用的前端框架详解
Oct 16 Javascript
原生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数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
2011/05/29 PHP
php使用iconv中文截断问题的解决方法
2015/02/11 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP实现网站访问量计数器
2017/10/27 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
JavaScript数值转换的三种方式总结
2014/07/31 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
python条件和循环的使用方法
2013/11/01 Python
Python里隐藏的“禅”
2014/06/16 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
python将一个英文语句以单词为单位逆序排放的方法
2018/12/20 Python
python算法题 链表反转详解
2019/07/02 Python
python for和else语句趣谈
2019/07/02 Python
python实现手势识别的示例(入门)
2020/04/15 Python
小学毕业感言100字
2015/07/30 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
实操Python爬取觅知网素材图片示例
2021/11/27 Python
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android