原生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 CSS操作方法集合
Oct 31 Javascript
javascript 读取XML数据,在页面中展现、编辑、保存的实现
Oct 27 Javascript
jQuery判断密码强度实现思路及代码
Apr 24 Javascript
jquery选择器使用详解
Apr 08 Javascript
JavaScript中textRange对象使用方法小结
Mar 24 Javascript
浅谈JS的基础类型与引用类型
Sep 13 Javascript
简单谈谈Vue 模板各类数据绑定
Sep 25 Javascript
完美解决IE不支持Data.parse()的问题
Nov 24 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
JavaScript与Java正则表达式写法的区别介绍
Aug 15 Javascript
React 父子组件通信的实现方法
Dec 05 Javascript
8个JS的reduce使用实例和reduce操作方式
Oct 05 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 file_get_contents函数轻松采集html数据
2010/04/22 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
php强制下载文件函数
2016/08/24 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
2018/11/02 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
jQuery实现input输入框获取焦点与失去焦点时提示的消失与显示功能示例
2019/05/27 jQuery
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
js实现选项卡效果
2020/03/07 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python 返回汉字的汉语拼音
2009/02/27 Python
python中defaultdict的用法详解
2017/06/07 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
初一语文教学反思
2016/03/03 职场文书
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技