博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何实现在展示商品时,放大商品细节
阅读量:6394 次
发布时间:2019-06-23

本文共 3368 字,大约阅读时间需要 11 分钟。

思路:

关于布局
1.有一个展示商品的总的盒子,ID名为show。
2在展示商品的大盒子里,首先要有一个放商品图的盒子,ID名为MiddleBox,里面放商品图
3.之后在展示商品的大盒子里,在MiddleBox盒子右面有一块展示区域,ID名为BigBox,用来存放放大商品后的图片
4.要有一个放大镜的div,ID名为zoom,在MiddleBox上移动
关于样式:
1.大盒子show给个定位relative
2.middleBox、BigBox、zoom相对于大盒子定位,即position:absolute;
CSS详情见以下代码:

body{                padding: 0;                margin: 0;            }            img{                display: block;                border: none;            }            #show{                position: relative;                width: 250px;                height: 300px;                border: 1px solid #ccc;            }            #middle{                position: absolute;                width:250px;                height: 300px;                border:1px solid #ccc;            }            #middle img{                width:250px;                height: 300px;            }            #zoom{                position: absolute;                width:100px;                height: 100px;                background: #00FFFF;                cursor: move;                opacity: 0.5;                display: none;            }            #big{                position: absolute;                width: 250px;                height: 300px;                border: 1px solid #ccc;                overflow: hidden;                left: 250px;                display: none;                top: -1px;            }            #big img{                position: absolute;                width: 625px;                height: 900px;            }

关于JS:

1.让放大镜的div(zoom)跟随鼠标在MiddleBox上移动
2.让大图片的位置随着zoom的位置改变而改变。
3.对于放大镜(zoom)的尺寸除以MiddleBox的尺寸应当等于BigBox盒子的尺寸除以BigBox盒子里放的大图片的尺寸
4.BigBox里面的大图片移动的距离应等于放大镜(zoom)的移动的距离除以MiddleBox的尺寸,再乘以 大图片的尺寸
JS详情见以下代码:

var oMiddle=document.getElementById("middle");            var oShow=document.getElementById("show");            var oBig=document.getElementById("big");            var oZoom=document.getElementById("zoom");            var oImg=oBig.children[0];            oMiddle.onmouseover=function(){                oZoom.style.display="block";                oBig.style.display="block";            }            oMiddle.onmouseout=function(){                oZoom.style.display="none";                oBig.style.display="none";            }            oMiddle.onmousemove=function(e){                var evt=e||event;                var x=evt.clientX-oMiddle.offsetLeft-oShow.offsetLeft;                var y=evt.clientY-oMiddle.offsetTop-oShow.offsetTop;                var _left=x-oZoom.offsetWidth/2;                var _top= y-oZoom.offsetHeight/2;                var cw=oMiddle.clientWidth;                var ch=oMiddle.clientHeight;                var zw=oZoom.offsetWidth;                var zh=oZoom.offsetHeight;                if(_left<=0){                    _left=0;                }                if(_top<=0){                    _top=0;                }                if(_left>=cw-zw){                    _left=cw-zw;                }                if(_top>=ch-zh){                    _top=ch-zh;                }                                               oZoom.style.left=_left+"px";                oZoom.style.top=_top+"px";                oImg.style.left=-_left/oMiddle.offsetWidth*oImg.offsetWidth+"px";                oImg.style.top=-_top/oMiddle.offsetHeight*oImg.offsetHeight+"px";            }

转载于:https://blog.51cto.com/14072794/2317052

你可能感兴趣的文章
windows 8 应用小技巧(36-40)
查看>>
8. package 和 import
查看>>
在html中,怎么获取当前页面body的高度,body是没有设置高度的,但是里面有内容...
查看>>
IDC云时代神兵利器-还在等什么!是IDC就可以云主机
查看>>
把 Array 转换成 Map
查看>>
MyBatis入门学习
查看>>
ASA防火墙IPSEC
查看>>
djangostart01
查看>>
NoSql之深入浅出redis
查看>>
Ubuntu 12.04无法关机、重启解决办法
查看>>
[算法]C语言实现 骑士旅游(递归)
查看>>
Metasploit渗透测试魔鬼训练营
查看>>
hibernate中OneToOne的级联保存
查看>>
史上最全的Web性能测试工具大全(上)
查看>>
SystemUI之状态栏status icon加载流程
查看>>
第18课:Spark Streaming中空RDD处理及流处理程序优雅的停止
查看>>
老程序员的下场
查看>>
IOS“The run destination My Mac 64-bit is not valid
查看>>
log4j:WARN Please initialize the log4j system p...
查看>>
Mybatis架构设计及源码分析-Mybatis配置文件初始化全过程
查看>>