原生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 相关文章推荐
jQuery ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
Aug 01 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
drag-and-drop实现图片浏览器预览
Aug 06 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
May 19 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
JavaScript实现单例模式实例分享
Dec 22 Javascript
vue 解决遍历对象显示的顺序不对问题
Nov 07 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
Apr 16 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 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中使用匿名函数操作数据库的例子
2014/11/17 PHP
Javascript操纵Cookie实现购物车程序
2007/02/15 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
详解微信UnionID作用
2019/05/15 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
python实现图片批量压缩程序
2018/07/23 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
2019/05/07 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
团队精神的演讲稿
2014/05/14 职场文书
2014离婚协议书范文
2014/09/10 职场文书
青年文明号汇报材料
2014/12/23 职场文书
八一建军节慰问信
2015/02/14 职场文书
2015年计划生育责任书
2015/05/08 职场文书
离婚代理词范文
2015/05/23 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书