原生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 相关文章推荐
JS 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
让getElementsByName适应IE和firefox的方法
Sep 24 Javascript
javascript测试题练习代码
Oct 10 Javascript
javascript的offset、client、scroll使用方法详解
Dec 25 Javascript
jQuery插件开发基础简单介绍
Jan 07 Javascript
JS中Iframe之间传值及子页面与父页面应用
Mar 11 Javascript
JS替换文本域内的回车示例
Feb 18 Javascript
js正则匹配出所有图片及图片地址src的方法
Jun 08 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
Aug 16 Javascript
Angularjs实现mvvm式的选项卡示例代码
Sep 08 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
DOMXML函数笔记
2006/10/09 PHP
模拟xcopy的函数
2006/10/09 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
jquery easyui 对于开始时间小于结束时间的判断示例
2014/03/22 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
ArtEditor富文本编辑器增加表单提交功能
2016/04/18 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
nuxt+axios解决前后端分离SSR的示例代码
2017/10/24 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python continue语句用法实例
2014/03/11 Python
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
使用Python对Access读写操作
2017/03/30 Python
浅析python的Lambda表达式
2019/02/27 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
django框架创建应用操作示例
2019/09/26 Python
Python 实现try重新执行
2019/12/21 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
优秀技术工人先进材料
2014/02/17 职场文书
家长对孩子的感言
2014/03/10 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
地道战观后感500字
2015/06/04 职场文书