原生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 相关文章推荐
Table冻结表头示例代码
Aug 20 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
Apr 17 Javascript
AngularJS基础学习笔记之简单介绍
May 10 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
Sep 01 Javascript
jquery实现可旋转可拖拽的文字效果代码
Jan 27 Javascript
jQuery选择器基础入门教程
May 10 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
使用Electron构建React+Webpack桌面应用的方法
Dec 15 Javascript
Javasript设计模式之链式调用详解
Apr 26 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
Feb 14 Javascript
jQuery 动态粒子效果示例代码
Jul 07 jQuery
原生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下网站防IP攻击代码,超级实用
2010/10/24 PHP
laravel实现前后台路由分离的方法
2019/10/13 PHP
javascript 设置某DIV区域内的checkbox复选框
2009/11/30 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
JS读取cookies信息(记录用户名)
2012/01/10 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
jquery实现倒计时功能
2015/12/28 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
基于jQuery实现仿百度首页选项卡切换效果
2016/05/29 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
2018/09/25 Javascript
详解从react转职到vue开发的项目准备
2019/01/14 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
[36:02]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第一局
2016/02/28 DOTA
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
十岁生日家长答谢词
2014/01/17 职场文书
社区党务公开实施方案
2014/03/18 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
2014年销售部工作总结
2014/12/01 职场文书
小学感恩节活动总结
2015/03/24 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python
Pandas-DataFrame知识点汇总
2022/03/16 Python