非常漂亮的相册集 使用jquery制作相册集(2)

代码执行到'newPic.src = oldSrc.replace(imgExt, ‘_h$1');'时,浏览器便会到指定的src去下载新图片放在浏览器缓存中。此时尚未触发鼠标事件,我们通过在脚本开始处将需要的图片逐一下载实现图像的预载入。

3、添加hover()事件实现图像rollover

在完成图像预载入后,接下来就是给需要翻滚的图片添加一个hover事件了。当鼠标移动到指定的图片时,图片变为绚丽的彩色,移走时变回黑白。我们在代码2的基础上,作如下添加:

$(document).ready(function(){ $('#gallery img').each(function(){ var oldSrc = $(this).attr('src'); var newPic = new Image(); var imgExt = /(\.\w{3,4}$)/; newPic.src = oldSrc.replace(imgExt, '_h$1'); $(this).hover( function(){ $(this).attr('src', newPic.src); }, function(){ $(this).attr('src', oldSrc); } );//end hover }); });//end ready

代码十分简单,只不过在7~14行通过this给当前图片添加了一个hover事件,鼠标移入移出时改变图片的src。此时,保存添加后的img-rollover.html,注意将需要包含的js/jquery-1.7.2.min.js以及图片资源按照代码中指定的路径放置完好。大功告成,可以像预览图片那样测试图片导航图片翻滚的效果了。

二、漂亮的相册集

在实现图像的翻滚之后,我们希望进一步,当我们点击小的缩略图的时候,能够展现图片的大图,像一个可以翻看的相册一样。预览如下:

非常漂亮的相册集 使用jquery制作相册集

接下来我们在实现了小图翻滚的代码1的基础上,增添相册集的功能。

1、为什么要把img放在链接中

可能有人不理解,为什么要把img分别包含在<a>链接中。实际上这是一种无干扰的JavaScript技术,如果你的浏览器关闭了JavaScript,这里将图像包含在一个链接中,当用户点击小图的时候,同样会访问到大图文件。只不过是通过链接的方式,单击链接时会退出当前Web页面并根据链接载入大图文件。如下图所示:

非常漂亮的相册集 使用jquery制作相册集

以上是为关闭了JavaScript的用户准备的。然而在通常情况下,对于使用JS的访问者,我们希望单击小的缩略图的时候在页面上呈现该图的大图,而不是链接到另一个页面。一般情况下,单击一个链接会使Web浏览器载入链接指向的内容,所以此处第一步我们需要做的就是阻止浏览器在单击图片链接的时候跳转页面。我们使用事件的preventDefault()方法来阻止事件的常规行为,添加如下代码:

$(document).ready(function(){ ...//省略未改动部分 $('#gallery a').click(function(evt){ evt.preventDefault(); });//end click });//end ready

添加的代码为链接添加单击事件,单击链接时,通过事件的preventDefault()方法阻止了事件的常规行为。此时我们再在页面单击图片链接的时候,浏览器便不会跳转到大图页面了。当然,对于没有JavaScript的浏览器依然会实现跳转,因为关闭是通过JavaScript来完成的。

2、单击缩略图在页面呈现大图

为了显示大图,我们在上面代码基础上添加一个id为bigImg的div,如代码4第9行:

<div> <a href="https://www.jb51.net/images/blue.jpg"><img src="https://www.jb51.net/images/blue.jpg" alt="blue"></a> <a href="https://www.jb51.net/images/green.jpg"><img src="https://www.jb51.net/images/green.jpg" alt="green"></a> <a href="https://www.jb51.net/images/orange.jpg"><img src="https://www.jb51.net/images/orange.jpg" alt="orange"></a> <a href="https://www.jb51.net/images/purple.jpg"><img src="https://www.jb51.net/images/purple.jpg" alt="purple"></a> <a href="https://www.jb51.net/images/red.jpg"><img src="https://www.jb51.net/images/red.jpg" alt="red"></a> <a href="https://www.jb51.net/images/yellow.jpg"><img src="https://www.jb51.net/images/yellow.jpg" alt="yellow"></a> </div> <div><div>

接下来,我们通过jQuery为要显示的大图创建一个img标签,在代码3中添加如下代码:

...//省略未改动部分 $('#gallery a').click(function(evt){ evt.preventDefault(); var imgPath = $(this).attr('href'); var newImg = $('<img src="' + imgPath + '">'); newImg.hide(); $('#bigImg').prepend(newImg); newImg.fadeIn(1000); });//end click

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wzppsg.html