基于JavaScript实现购物网站商品放大镜效果


Posted in Javascript onSeptember 06, 2016

大家几乎都有在网上购物的经验,有的网站会有一个商品放大镜功能,就是把鼠标移到图片上的时候,旁边会有另外一张大的图片展示,等同于放大镜效果,那这样的效果怎样实现的呢,我把代码发给大家,请大家参考。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>放大镜</title>
<style>
*{margin:0;padding: 0;}
#warp{width: 1184px;height:500px;margin:50px auto 0;background-color: #ccc;overflow: hidden;padding: 10px;position: relative;}
#warp #minbox{width: 350px;height: 350px;float: left;position: relative;}
#maxbox{width: 400px;height: 400px;position: absolute;left: 380px;overflow: hidden;display: none;}
#maxbox img{width: 800px;height: 800px;position: absolute;}
#con{float: left;margin-left: 20px;}
#meng{width: 175px;height: 175px;position: absolute;background-color:yellow;opacity:0.4;filter:alpha(opacity=40);left: 0;top: 0;display: none;}
</style>
</head>
<body>
<div id="warp">
<div id="minbox">
<img src="images/min.jpg" alt="">
<p id="meng"></p>
</div>
<div id="maxbox">
<img src="images/max.jpg" alt="">
</div>
<div id="con">
<img src="images/msg.png" alt="">
</div>
</div>
<script>
var minbox=document.getElementById('minbox');
var meng=document.getElementById('meng');
var maxbox=document.getElementById('maxbox');
var maximg=maxbox.getElementsByTagName('img')[0];
var minimg=minbox.getElementsByTagName('img')[0];
function offsetTL(obj){
var ofL=0,ofT=0;
while(obj){
ofL+=obj.offsetLeft+obj.clientLeft;
ofT+=obj.offsetTop+obj.clientTop;
obj=obj.offsetParent;
}
return{left:ofL,top:ofT};
}
minbox.onmousemove=function(e){
var e=e||window.event;
meng.style.display='block';
maxbox.style.display='block';
var niubi1=e.clientX-offsetTL(minbox).left-meng.clientWidth/2;//蒙板的X坐标
var niubi2=e.clientY-offsetTL(minbox).top-meng.clientHeight/2;//蒙板的Y坐标
var bili=maximg.clientWidth/minimg.clientWidth;
if (niubi1<=0) {
niubi1=0;
}else if (niubi1>=minbox.clientWidth-meng.clientWidth) {
niubi1=minbox.clientWidth-meng.clientWidth;
}
if (niubi2<=0) {
niubi2=0;
}else if (niubi2>=minbox.clientHeight-meng.clientHeight) {
niubi2=minbox.clientHeight-meng.clientHeight;
}
console.log(niubi1);
console.log(niubi2);
meng.style.left=niubi1+'px';
meng.style.top=niubi2+'px';
maximg.style.left=-parseInt(meng.style.left)*bili+'px';
maximg.style.top=-parseInt(meng.style.top)*bili+'px';
}
minbox.onmouseout=function(){
meng.style.display='none';
maxbox.style.display='none';
}
</script>
</body>
</html>

以上所述是小编给大家介绍的基于JavaScript实现购物网站商品放大镜效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 Javascript
jquery浏览器滚动加载技术实现方案
Jun 03 Javascript
javascript实现获取浏览器版本、操作系统类型
Jan 29 Javascript
AngularJS入门教程之数据绑定原理详解
Nov 02 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
详解如何使用webpack打包JS
Jun 21 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
Jul 30 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
Sep 06 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 10 Javascript
在vue中使用Base64转码的案例
Aug 07 Javascript
AngularGauge 属性解析详解
Sep 06 #Javascript
AngularJS 面试题集锦
Sep 06 #Javascript
BootStrap glyphicon图标无法显示的解决方法
Sep 06 #Javascript
JS原型链 详解及示例代码
Sep 06 #Javascript
JavaScript中push(),join() 函数 实例详解
Sep 06 #Javascript
jquery实现全选、不选、反选的两种方法
Sep 06 #Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 #Javascript
You might like
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
three.js中文文档学习之如何本地运行详解
2017/11/20 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
前台文员的岗位职责
2013/11/14 职场文书
银行财务部实习生的自我鉴定
2013/11/27 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
大学生社会实践方案
2014/05/11 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
单位委托书格式范本
2014/09/29 职场文书
《所见》教学反思
2016/02/23 职场文书
opencv-python图像配准(匹配和叠加)的实现
2021/06/23 Python
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis