原生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开发中因空格引发的错误
Nov 08 Javascript
DOM 中的事件处理介绍
Jan 18 Javascript
javascript动态控制服务器控件实例
Sep 05 Javascript
javascript中的this详解
Dec 08 Javascript
如何消除inline-block属性带来的标签间间隙
Mar 31 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
Jun 15 Javascript
vue单页应用加百度统计代码(亲测有效)
Jan 31 Javascript
vue2.0实现移动端的输入框实时检索更新列表功能
May 08 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
详解VUE中的插值( Interpolation)语法
Oct 18 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巧获服务器端信息
2006/12/06 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
PHP用swoole+websocket和redis实现web一对一聊天
2019/11/05 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
jQuery动态创建html元素的常用方法汇总
2014/09/05 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
Node.js的npm包管理器基础使用教程
2016/05/26 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
python获取当前计算机cpu数量的方法
2015/04/18 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python实现单词翻译功能
2017/06/06 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Python flask框架post接口调用示例
2019/07/03 Python
利用pandas合并多个excel的方法示例
2019/10/10 Python
python函数超时自动退出的实操方法
2020/12/28 Python
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
波兰在线运动商店:YesSport
2020/07/23 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
智乐游戏测试笔试题
2014/05/21 面试题
开业主持词
2014/03/21 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书