关于模仿京东放大镜制作思路及遇到的问题

思路步骤:

在这里插入图片描述

要制作如上图所示的一个放大镜,我们首先要明确它的功能:
1.鼠标悬浮在小图上,中图出现对应的图片,同时鼠标悬浮在哪个小图,小图边框颜色改变,然后右下角出现一个小三角。
2.鼠标悬浮在小图这一行时,左右两侧出现翻页的图标,用来展示剩余未显示的小图。
3.当鼠标悬浮在中图上时,大图出现,且为对应的大图。这时鼠标周围环绕正方形的一个小型图层,鼠标为移动图标,然后移动鼠标,大图跟着变换到鼠标焦点相应的位置处。

步骤:

  1. 首先将这个分为三个部分,第一个部分为中图部分,第二个为下部的小图部分,第三个为右方的大图部分。
  2. 小图部分需设置为行内元素排列为一行,然后超出整体盒子的部分溢出隐藏。
  3. 设置左右图标,悬浮时才显现。
  4. 为图标增添功能。左右平移。这里我设置的是一页四张图。这时遇到了第一个问题。
  5. 使用js为小图增添功能,当鼠标悬浮在某小图上时,边框变色,右下角出现小三角。鼠标离开变换结束。这里通过给其增添class移除class实现。
  6. 给小图添加自定义属性以便于拿到对应的中图和大图,鼠标悬浮在小图上时,通过拼接src地址,来完成中图和大图的切换。
  7. 当鼠标进入中图时,大图显现,同时出现小层作为放大镜,小层不能超出中图所在区域,这里用了三目运算符。这里出现问题二。
  8. 鼠标移动,层跟随移动,大图移动,看上去就像是放大了中图的某个部分一样,这里需要运用比例,来设置大图的背景图的相对位置。这里出现问题三。

遇到的问题:

问题一:
由于我设置了九张小图,所以用transform:translatex(“数值”);这个方法不可行。单纯使用平移的话,只能平移一定距离,不能翻到再下一页。
问题二:
在用js新建一个小的图层用来充当放大镜时,需要获取鼠标的坐标,来使其鼠标始终保持在小图层的中心位置,且鼠标移动,图层跟着移动。这个时候首先需要通过获取鼠标的横纵坐标来设置小层的绝对位置。这里我无论是使用clientX或是pageX,offsetX,他们的值都相同。所以我选择了clientX,然后给它减去小层宽度的一半,高类似。这时我发现鼠标未在小层的中心位置。后来发现:因为我之前给总共的盒子设置了margin值,所以clientX需要再减去margin的值。这里就需要获取这个盒子相对于浏览器的位置了,我又不想改变结构给它再加一个总体的盒子。经查找,发现一个方法:要获取的元素.getBoundingClientRect();要注意的是,这个方法获取到的是某个元素相对于浏览器视窗的位置,它返回的是一个对象,具有四个属性:left,right,top,bottom。这样,再给得到的clientX减去这个位置即可。
PS:

  • clientX,clientY是点击位置相对于当前body可视区域的。
  • pageX,pageY是点击位置相对于整个页面来说的,包括被卷进去的body部分。
  • screenX,screenY是点击位置距离电脑屏幕的坐标。
  • offsetX,offsetY是相对于带有定位的父盒子的坐标。
    问题三:
    当时无论鼠标怎么移动,大图纹丝不动,后来发现大盒子的样式设置background-position的值为left top;同时在js中给其添加时,第一个值的px后面忘记了那个空格,必须有空格。
        bigbox[0].style.backgroundPosition=(-clientX*bili)+"px "+(-clientY*bili)+"px";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android模仿京东App项目源码是一个非常有趣且具有挑战性的项目。首先,需要了解京东App的UI设计和功能实现。在开始编写代码之前,我们需要使用SDK中提供的一些工具(例如Android Studio、ADT等)创建一个新项目。然后,需要根据京东App的UI设计来自定义布局文件和视图组件。在创建这些视图组件时,需要确保它们的尺寸、间距和颜色等与原应用程序一致。接下来,需要编写Java代码来实现功能。这些功能包括登录、浏览商品和下订单等。在编码过程中,需要确保逻辑正确,并且代码具有可读性和可维护性。 实现京东App的功能需要对Android应用程序开发有一定的了解。因此,在开始项目之前,应该了解Android应用程序的基础知识。这包括了解Android应用程序的组件、应用程序生命周期、权限管理和数据存储等。此外,还应该了解有关网络服务、多线程编程、用户界面设计和动画效果等方面的知识,这些都是实现京东App所必需的。 在编写Android模仿京东App项目源码时,还需要考虑一些其他的因素。首先,应该在代码中添加必要的注释和文档,以便其他开发人员或未来的开发人员可以理解代码。其次,还需要进行测试,以确保应用程序能够在各种不同的设备和操作系统版本上运行。最后,在发布应用程序之前,应该对代码进行优化以提高效率并减少应用程序的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值