首页 > 编程知识 正文

我们应该怎样使用放大镜,淘宝宝贝放大镜尺寸

时间:2023-05-05 23:54:06 阅读:119358 作者:4380

前言这一段时间事情很多,一直没有时间写文章。 这两天有点闲,在这个空闲时间写文章。 这次文章的主要内容是介绍淘宝放大镜的效果是如何实现的,相信很多学生对此并不陌生。 这个看起来很复杂的小功能,其实原理很简单。 学习淘宝放大镜的效果如何实现吧。

实现工艺项目结构

我们的整个项目结构并不复杂,它由images目录、jquery-3.2.1.min.js、style.css、main.js和index.html等内容组成。

images目录。用于存储项目的照片素材。

jquery-3.2.1.min.js。jQuery库(如果您想熟悉本机JS,请不要选择。

style.css。控制项目css样式文件。

http://控制www.Sina.com /项目逻辑的js文件。

main.js。控制项目dom结构。

材质贴图(small.jpg ) )。

原图(big.jpg ) )。

放大镜背景图(mask_bg.jpg ) ) ) ) ) )。

实现原理

index.html。简称:方框1

放大镜 == 100*100橘色方块简称:害怕孤独的毛皮虾

左窗口 == 200*200蓝色方块简称:方框3

右窗口 == 200*200紫色方块简称:方框4

原图 == 400*400青色方块

一个表达式是方块1的left值(或top值) /方块4的left值)或top值)=(-1 ) *害怕孤独的虾的宽度/方块4的宽度。 应注意的是,区块1的定位父母是害怕孤独的毛皮虾,区块4的定位父母是区块3。 另外,小图的纵横与左窗口的纵横一致。 可以通过根据方形1的top和left值均匀更改方形4的top和left值,使方形部分露出而不可见来实现放大镜效果。

文件内容HTML! doctypehtmlhtmllang=' en ' headmetacharset=' utf-8 ' metaname=' viewport ' content=' width=device-width, initial-scale=1.0 ' meta http-equiv=' x-ua -兼容' content=' ie=edge ' title淘宝放大镜效果/titlelinkrel=' stylessitle headbodydivid=' container ' divclass=' left view ' divclass=' mask '/divimgclass=' small ilass small divdivclass=' right view ' img class=' big img ' src=' images/big.jpg ' alt='放大版'/div/div/bodyscriv

大致原理如下:

.mask 代表 放大镜

.leftView 代表 左窗口

CSS # container { position : relative; }.left view { position : relative; width: 418px; height: 418px; }.smallImg{ max-height: 100%; 最大窗口: 100 %; }.mask{ display: none; 位置: absolute; 背景: URL (./images/mask _ BG.png ); cursor: move; }.right view { position : absolute; LL

eft:458px; top:0; width:418px; height:418px; overflow:hidden; }.bigImg{ position: absolute; top:0; left:0;} JS各模块实现 计算放大镜的长宽

这里说明一下我们为什么要动态计算放大镜的长宽,主要原因是原图的长宽是不确定的。但是我们要满足放大镜/右窗口=左窗口/原图,这里左窗口和右窗口的长宽是确定的,所以放大镜的长宽是需要根据原图的长宽进行计算。

function calculateMaskWH(){ var width=$('.leftView').width()/$('.bigImg').width()*$('.rightView').width(); var height=$('.leftView').height()/$('.bigImg').height()*$('.rightView').height(); $('.mask').css({ "width":width, "height":height }); } 监听左窗口mouseover和mouseout事件

在鼠标没有悬浮在左窗口时,放大镜、右窗口和原图是不可见的。当鼠标悬浮在左窗口之上时,放大镜、右窗口和原图是可见的。

//监听鼠标mouseover事件 $('.leftView').on('mouseover',function(){ $('.mask').css('display','block'); $('.rightView').css('display','block'); }); //监听鼠标mouseout事件 $('.leftView').on('mouseout',function(){ $('.mask').css('display','none'); $('.rightView').css('display','none'); }); 监听左窗口mousemove事件

监听mousemove事件,我们需要干两件事。第一件事,动态改变放大镜的top值和left值。第二件事是根据放大镜的top值和left值,等比例修改原图的top值和left值。因此我们这里的难点就是如何计算top值和left值。另外,我们要保证放大镜不能出界。

$('.leftView').on('mousemove',function(event){ //计算放大镜的left值和top值 var left=event.pageX-$(this).offset().left-$('.mask').width()/2; var top=event.pageY-$(this).offset().top-$('.mask').height()/2; //判断放大镜左右是否出界 if(left<0){ left=0 }else if(left>$(this).width()-$('.mask').width()){ left=$(this).width()-$('.mask').width(); } //判断放大镜上下是否出现 if(top<0){ top=0; }else if(top>$(this).height()-$('.mask').height()){ top=$(this).height()-$('.mask').height(); } $('.mask').css({ left:left+'px', top:top+'px' }); //计算比例 var rate=$('.bigImg').width()/$('.leftView').width(); $('.bigImg').css({ left:-rate*left+'px', top:-rate*top+'px' }); }); JS完整代码 $(function(){ //计算放大镜的长宽 calculateMaskWH(); //监听鼠标mouseover事件 $('.leftView').on('mouseover',function(){ $('.mask').css('display','block'); $('.rightView').css('display','block'); }); //监听鼠标mouseout事件 $('.leftView').on('mouseout',function(){ $('.mask').css('display','none'); $('.rightView').css('display','none'); }); $('.leftView').on('mousemove',function(event){ //计算放大镜的left值和top值 var left=event.pageX-$(this).offset().left-$('.mask').width()/2; var top=event.pageY-$(this).offset().top-$('.mask').height()/2; //判断放大镜左右是否出界 if(left<0){ left=0 }else if(left>$(this).width()-$('.mask').width()){ left=$(this).width()-$('.mask').width(); } //判断放大镜上下是否出现 if(top<0){ top=0; }else if(top>$(this).height()-$('.mask').height()){ top=$(this).height()-$('.mask').height(); } $('.mask').css({ left:left+'px', top:top+'px' }); //计算比例 var rate=$('.bigImg').width()/$('.leftView').width(); $('.bigImg').css({ left:-rate*left+'px', top:-rate*top+'px' }); }); //计算机放大镜的长宽 function calculateMaskWH(){ var width=$('.leftView').width()/$('.bigImg').width()*$('.rightView').width(); var height=$('.leftView').height()/$('.bigImg').height()*$('.rightView').height(); $('.mask').css({ "width":width, "height":height }); }}); 最终效果演示

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。