基于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 相关文章推荐
对YUI扩展的Gird组件 Part-2
Mar 10 Javascript
window.onload 加载完毕的问题及解决方案(下)
Jul 09 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
Aug 01 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
Dec 13 Javascript
JQuery的attr 与 val区别
Jun 12 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
Vue.js上下滚动加载组件的实例代码
Jul 17 Javascript
js 事件的传播机制(实例讲解)
Jul 20 Javascript
VUE-cli3使用 svg-sprite-loader
Oct 20 Javascript
关于React动态加载路由处理的相关问题
Jan 07 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
Sep 05 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 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
set_include_path在win和linux下的区别
2008/01/10 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
thinkPHP导出csv文件及用表格输出excel的方法
2015/12/30 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
JavaScript 常用函数库详解
2009/10/21 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
JS处理一些简单计算题
2018/02/24 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
Openlayers实现扩散的动态点(水纹效果)
2020/08/17 Javascript
jQuery实现简单弹幕制作
2020/12/10 jQuery
Python自定义线程池实现方法分析
2018/02/07 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
对Python发送带header的http请求方法详解
2019/01/02 Python
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
python3实现小球转动抽奖小游戏
2020/04/15 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
高中军训感言500字
2014/02/24 职场文书
公司年终奖分配方案
2014/06/16 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书