700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【jQuery】前端项目实践案例6——制作产品放大镜效果(仿京东淘宝图片效果)

【jQuery】前端项目实践案例6——制作产品放大镜效果(仿京东淘宝图片效果)

时间:2018-12-18 15:32:13

相关推荐

【jQuery】前端项目实践案例6——制作产品放大镜效果(仿京东淘宝图片效果)

使用jQuery制作产品放大镜效果实现效果:

使用jQuery制作产品放大镜效果实现原理:

通过设置图像的 CSS 属性( left 和 top ),来实现图像的移动。

使用jQuery制作产品放大镜效果实现思路:

(1)div+css布局,制作小图、放大镜和大图的布局。

(2)放大镜和大图,默认隐藏,鼠标移动到小图上时,显示放大镜和大图。

(3)鼠标在小图上移动时,控制放大镜和大图,同时进行移动

使用jQuery制作制作产品放大镜效果需要掌握的知识点:

(1)基础div+css布局

(2)jquery 基础事件的使用:mouseenter 、mouseleave 、mousemove

(3)获取鼠标元素的位置:event.pageX 属性 和event.pageY 属性

(4)获取匹配元素在当前视口的相对偏移:offset() 方法的使用

使用jQuery制作制作产品放大镜效果实现步骤:

第一步:制作网页内容(小图、放大镜、大图)

<body><div id="fdj"><div id="small"><!-- 这里用来放小图片 --><img src="img/big.jpg" /><div id="mark"></div><!-- 这个用来作为放大镜 --></div><div id="big"><!-- 这里用来放大图片 --><img src="img/big.jpg" /></div></div></body>

第二步,添加 CSS样式

<style type="text/css">*{margin: 0; padding: 0;}#fdj {width: 800px;background-color: pink;margin: 20px auto;overflow: hidden; /* 清除里面small和big两个div浮动,带来的浮动塌陷 */}#small {position: relative;width: 250px;height: 250px;border: 1px solid red;float: left;}#small img {width: 100%;height: 100%;}#big {position: relative;width: 500px;/* 注意,大图的尺寸和小图的宽高,成比例放大 */height: 500px;border: 1px solid black;float: left;margin-left: 10px;display: none;/* 设置大图所在的div,默认隐藏 */overflow: hidden;/* 设置图片溢出部分,隐藏 */}#big img {position: absolute;}#mark {background-color: yellow;opacity: 0.5;width: 50px;height: 50px;position: absolute;display: none;/* 设置遮罩层默认隐藏 */}</style>

第三步:引入jQuery文件

<script src="js/jquery-3.4.1.min.js"></script><!--引入jquery-->

第四步:写jquery代码

<script>$(document).ready(function() {$("#small").mouseenter(function() { //鼠标移到small上,控制小div显示$("#mark").show();$("#big").show();});$("#small").mouseleave(function() {$("#mark").hide() //鼠标移出small时,控制小div隐藏$("#big").hide();});$("#small").mousemove(function(event){ //鼠标在samll上移动时,控制遮罩层小div移动,同时控制大图移动//获取遮罩层,mark的位置var markLeft = event.pageX-$(this).offset().left-25; //数字25是遮罩层宽度的一半,实现鼠标居中var markTop = event.pageY-$(this).offset().top-25;//设置不要超出边界if(markLeft<=0){markLeft = 0;}if(markLeft>=200){//200数字的来源:samll的宽度-遮罩层的宽度markLeft = 200;}if(markTop<=0){markTop = 0;}if(markTop>=200){//200数字的来源:samll的高度-遮罩层的高度markTop = 200;}//改变遮罩层的位置$("#mark").css({left:markLeft,top:markTop})//改变放大图片的位置$("#big img").css({//注意,大图的移动方向,和遮罩层的移动方向是相反的left: -2 * markLeft,top: -2 * markTop})})})</script>

代码说明:

event.pageX 属性:返回鼠标指针的位置,相对于文档的左边缘。

offset() 方法:返回或设置匹配元素相对于文档的偏移(位置)。该方法返回第一个匹配元素的偏移坐标。该方法返回的对象包含两个整型属性:top 和 left,以像素计。此方法只对可见元素有效。

案例扩展效果:

=====这里是结束分割线======

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。