原生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 23 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
node.js中Socket.IO的进阶使用技巧
Nov 04 Javascript
浅析javascript 定时器
Dec 23 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
一篇文章掌握RequireJS常用知识
Jan 26 Javascript
详解Weex基于Vue2.0开发模板搭建
Mar 20 Javascript
React Native中Navigator的使用方法示例
Oct 13 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
Sep 30 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
Nov 15 Javascript
js实现双人五子棋小游戏
May 28 Javascript
如何构建一个Vue插件并生成npm包
Oct 26 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
sphinx增量索引的一个问题
2011/06/14 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
基于javascript实现彩票随机数生成(简单版)
2020/04/17 Javascript
js创建数组的简单方法
2016/07/27 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
你有必要知道的10个JavaScript难点
2017/07/25 Javascript
基于Vue单文件组件详解
2017/09/15 Javascript
jQuery简单实现对数组去重及排序操作实例
2017/10/31 jQuery
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python super用法及原理详解
2020/01/20 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
更新升级python和pip版本后不生效的问题解决
2020/04/17 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
香港网上花店:FlowerAdvisor香港
2019/05/30 全球购物
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
2014年元旦促销活动方案
2014/02/22 职场文书
党代会心得体会
2014/09/04 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书