原生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 相关文章推荐
JavaScript中清空数组的三种方法分享
Apr 07 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
JS中实现replaceAll的方法(实例代码)
Nov 12 Javascript
利用进制转换压缩数字函数分享
Jan 02 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
JavaScript去除数组里重复值的方法
Jul 13 Javascript
js获取客户端操作系统类型的方法【测试可用】
May 27 Javascript
详解jQuery插件开发方式
Nov 22 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
Jan 18 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
Jul 12 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
May 16 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 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本地服务器分享
2013/02/19 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
分享php分页的功能模块
2015/06/16 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
详解Vue.js 可拖放文本框组件的使用
2021/03/03 Vue.js
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python多进程分块读取超大文件的方法
2016/04/13 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
彻底搞懂Python字符编码
2018/01/23 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
pytorch: tensor类型的构建与相互转换实例
2018/07/26 Python
Windows下python3.7安装教程
2018/07/31 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
家长给老师的感谢信
2015/01/20 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
2015年端午节活动总结
2015/02/11 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书