鼠标经过放大图片 php,jQuery当鼠标悬停时放大图片的效果实例_jquery

本文介绍了一种使用jQuery创建动态相册效果的方法。通过HTML结构、CSS样式和jQuery代码的结合,实现了小图片弹出并随鼠标移动的功能。在原有的基础上,还解决了大图片超出浏览器宽度导致的滚动条问题,提高了用户体验。文章提供了完整代码示例和优化思路。
摘要由CSDN通过智能技术生成

这个效果最初源于小敏同志的一个想法,刚开始做的时候只能实现弹出的图片是固定的,不能随鼠标移动,最后加以改善,终于实现了比较理想的效果。今天就把制作该效果的经验与大家一同分享。先看看最终效果演示:

38f7ecc05aab240b7c3e3446657820b1.png

HTML结构部分:

先编写一个无序列表的结构,a标签中的img标签用来存放小图片,a标签添加一个rel属性,用来存放大图片的路径。

001_small.jpg

002_small.jpg

003_small.jpg

CSS样式表部分:

bigimage是用jQuery创建的一个p标签的id,用来存放大图片,设置其样式为绝对定位,并先隐藏。给a标签添加一个黑色的背景,是为了给图片变暗的效果做铺垫。就这样,一个简单的相册效果就做好了。

ul#gallery { list-style:none; width:660px; margin:0 auto 10px; padding-left:20px; border:1px solid #d3d3d3; background:#fff; overflow:hidden; }

ul#gallery li { width:200px; height:200px; float:left; margin:20px 20px 20px 0; }

ul#gallery li a.smallimage { background:#333; /*添加一个黑色的背景为图片变暗的效果做铺垫*/ display:block; width:200px; height:200px; }

#bigimage { position:absolute; display:none; /*大图片的父标签设置相对定位并将显示样式设置为隐藏*/ }

#bigimage img { width:400px; height:400px; padding:5px; background:#fff; border:1px solid #e3e3e3; }

jQuery代码部分:

先声明2个变量x,y用来存放大图片离鼠标的距离。在body中追加一个id为bigimage的p标签,用来存放大图片,大图片的路径就包含在了a标签的rel属性中。当鼠标在小图片悬停的时候,将获取到的鼠标在浏览器中的坐标赋值给大图片绝对定位的坐标,并以淡入的效果显示。之后,再给小图片绑定一个mousemove事件,也就是当鼠标移动的时候,大图片就会跟着鼠标移动了。看以下的代码:

到这一步,效果已经差不多了,但是正如蓝秋枫同志提到的,效果还并不完美。如果弹出的大图片超过了浏览器的宽度就会出现滚动条,这对于用户体验来说的确很不好。趁周末有时间我又在原来的基础上进行了修改。

先分析下思路,默认情况下,弹出的大图片的位置始终是在当前鼠标指针的右侧,如果当前鼠标指针离浏览器右侧边界的宽度小于弹出的大图片的宽度时,就会出现图片溢出浏览器的现象。那么只要写一个语句判断当前鼠标指针离浏览器右侧的边界的宽度是否小于大图片的宽度,然后再根据这个判断来显示。

有了上面的思路就好办了,为了使代码更简洁,提高复用性,我新增了一个widthJudge函数用于判断宽度:

function widthJudge(e){

//页面的总宽度减去鼠标当前的X坐标得到右侧边界的宽度

var marginRight = document.documentElement.clientWidth - e.pageX;

//获取弹出的大图片的宽度

var imageWidth = $("#bigimage").width();

//如果右侧边界的宽度小于弹出的大图片的宽度

if(marginRight < imageWidth)

{

//重新计算变量x的值

x = imageWidth + 22;

//此时大图片的位置应该是当前鼠标指针的宽度减去新的x的值

$("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX - x ) + 'px'});

}else{ //否则

//仍将x定义为22,这一步千万不能省略,因为之前x的值已经改变

x = 22;

//如果右侧的宽度值够显示大图片,将仍然按照原来的位置显示

$("#bigimage").css({top:(e.pageY - y ) + 'px',left:(e.pageX + x ) + 'px'});

};

}

最后再结合上面的代码,完整的jQuery代码部分如下:

解决了图片溢出浏览器的问题,这个效果还算不错了。如果你喜欢这个效果,你可以下载源文件。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值