一、简单的图像翻滚
image-rollover常被用在交互式导航栏上,当我们的鼠标移动到导航栏时,按钮的外观改变。例如我们以如下几幅黑白缩略图作为导航图表,当鼠标移动到指定图标时,图标变为明亮的彩色图片。预览如下:
该页面的代码十分简单,我们以此为例逐步实现图像的翻滚:
img-rollover.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Rollover Images</title> <style> html , body{ line-height: 1; background-color: #334873; } h1 { font-family: 'ColaborateRegular', Arial, sans-serif; } p { font-family: 'ColaborateRegular', Arial, sans-serif; color: white; } .logo { letter-spacing: -1px; color: rgb(195,151,51); text-shadow: 2px 2px 1px rgba(0,0,0,.25); font: normal 54px 'ColaborateThinRegular', Arial, sans-serif; } #gallery img { display: inline-block; margin: 10px; border: 1px solid rgb(0,0,0); } </style> <script src="js/jquery-1.7.2.min.js"></script> <script> $(ducument).ready( );//end ready </script> </head> <body> <div class="wrapper"> <div class="header"> <p class="logo">Easy Sir</p> </div> <div class="content"> <div class="main"> <h1 id="Rollover-Images">Rollover Images</h1> <p>Mouse over the images below</p> <div id="gallery"> <a href="images/매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다..jpg"><img src="/static/imghwm/default1.png" data-src="images/green.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다."> </a> <a href="images/green.jpg"><img src="/static/imghwm/default1.png" data-src="images/green.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="green"> </a> <a href="images/orange.jpg"><img src="/static/imghwm/default1.png" data-src="images/orange.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="orange"> </a> <a href="images/purple.jpg"><img src="/static/imghwm/default1.png" data-src="images/purple.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="purple"> </a> <a href="images/red.jpg"><img src="/static/imghwm/default1.png" data-src="images/red.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="red"> </a> <a href="images/yellow.jpg"><img src="/static/imghwm/default1.png" data-src="images/yellow.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="yellow"></a> </div> </div> </div> </div> </body> </html>
这段代码十分简单。主要就是包含一个Logo部分,一个标题和6个链接。中间我们省略了38行中的jQuery代码部分,下面我们逐步在其中添加代码实现图像翻滚的效果。
1、改变图像的src属性
我们知道显示在Web页面的每一个图像都有一个src属性,该属性表示文件的路径,它指向服务器上的一幅图片。如果我们更改了该属性的值,浏览器将会显示新的图片。对于以上代码,我们首先可以通过each()函数获取所有img元素的遍历,在对应位置添加如下代码:
<script> $(document).ready(function(){ $('#gallery img').each(); });//end ready </script>
我们可以通过jQuery的arrt()方法来获取img的src属性。然后,我们将以上img的src属性值替换为新图片的路径,方法如下:
<script> $(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'); }); });//end ready </script>
后面的图像预载入中会有这段代码的简单分析,这里首先复习一下,attr()函数允许读取一个标签的指定html属性值,如上例中传入的'src'参数即读取图片的src属性。如果给attr()方法传入第二个参数,则可以重设该属性的值。比如:
$('#pic1').attr('src', 'images/newImg.jpg');
另外,attr()函数也允许我们一次修改多个HTML属性值。比如,当我们需要载入的newImg和oldImg尺寸不符的时候,为了避免新图片的扭曲,我们可以同时更改img元素的宽、高属性。方法如下,传入一个对象直接量作为参数:
var newImg = new Image(); newImg.src = 'images/newImage.jpg'; $('#pic1').attr({ src: newImg.src, width: newImg.width, height: newImg.height });
2、图像预载入
如果我们不加”心机”地在鼠标移动到指定图片时改变图像的src属性来实现image-rollover,会有一个小问题。当我们把鼠标移动到指定图标上时,该图像的src属性被改变,此时浏览器会去新的src路径下载资源图片,现场下载图片往往会给用户一个明显的延迟感。为了克服这个恼人的问题,我们可以预先将图片下载到浏览器的缓存中。
实际上,在代码2中,我们便实现了图片的预载入。代码2中的第4行,首先获取每幅图片的src属性;第5行创建一个新图像;第6~7行,使用正则表达式,在旧图像src末尾添加_h后赋给新创建图像的src。例如旧图片src为'images/매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다..jpg',将'images/매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다._h.jpg'赋给新创建的newPic的src属性。
代码执行到'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以及图片资源按照代码中指定的路径放置完好。大功告成,可以像预览图片那样测试图片导航图片翻滚的效果了。
二、漂亮的相册集
在实现图像的翻滚之后,我们希望进一步,当我们点击小的缩略图的时候,能够展现图片的大图,像一个可以翻看的相册一样。预览如下:
接下来我们在实现了小图翻滚的代码1的基础上,增添相册集的功能。
1、为什么要把img放在链接中
可能有人不理解,为什么要把img分别包含在链接中。实际上这是一种无干扰的JavaScript技术,如果你的浏览器关闭了JavaScript,这里将图像包含在一个链接中,当用户点击小图的时候,同样会访问到大图文件。只不过是通过链接的方式,单击链接时会退出当前Web页面并根据链接载入大图文件。如下图所示:
以上是为关闭了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 id="gallery"> <a href="images/매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다..jpg"><img src="/static/imghwm/default1.png" data-src="images/green.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다."></a> <a href="images/green.jpg"><img src="/static/imghwm/default1.png" data-src="images/green.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="green"></a> <a href="images/orange.jpg"><img src="/static/imghwm/default1.png" data-src="images/orange.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="orange"></a> <a href="images/purple.jpg"><img src="/static/imghwm/default1.png" data-src="images/purple.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="purple"></a> <a href="images/red.jpg"><img src="/static/imghwm/default1.png" data-src="images/red.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="red"></a> <a href="images/yellow.jpg"><img src="/static/imghwm/default1.png" data-src="images/yellow.jpg" class="lazy" style="max-width:90%" style="max-width:90%" alt="yellow"></a> </div> <div id="bigImg"><div>
接下来,我们通过jQuery为要显示的大图创建一个img标签,在代码3中添加如下代码:
...//省略未改动部分 $('#gallery a').click(function(evt){ evt.preventDefault(); var imgPath = $(this).attr('href'); var newImg = $('<img src="/static/imghwm/default1.png" data-src="/file_images/article/201604/2016428145634273.gif?2016328145644" class="lazy" + imgPath + '" alt="매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다." >'); newImg.hide(); $('#bigImg').prepend(newImg); newImg.fadeIn(1000); });//end click
实际上,每当我们点击一个缩略图的时候,代码都会为我们创建一个新的img并添加到
中,从DOM的角度看,会不停地增加子节点:为了实现”相册”翻阅的效果,我们在显示新的相片的时候同时要把之前的图片删掉。继续在代码5中作如下添加:
...//省略未改动部分 $('#gallery a').click(function(evt){ evt.preventDefault(); var imgPath = $(this).attr('href'); var oldImg = $('#bigImg img'); var newImg = $('<img src="/static/imghwm/default1.png" data-src="/file_images/article/201604/2016428145834548.jpg?2016328145843" class="lazy" + imgPath + '" alt="매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다." >'); newImg.hide(); $('#bigImg').prepend(newImg); newImg.fadeIn(1000); oldImg.fadeOut(1000, function(){ $(this).remove(); }); });//end click
代码第6行首先获取当前存在的图像oldImg,在新的图片淡入的时候,此图应该进行淡出处理。11~13行,在新的图片淡入之后,oldImg淡出。同时给fadeOut函数传入一个回调函数,在oldImg淡出之后一并移除该图像的img标签。这样我们就保证在DOM树中
始终只有一个img节点,而不会无限地增长下去。接下来进行一些细节的调整,当我们点入这个页面的时候,希望默认显示第一幅图片,为了实现这个小功能,我们只需要在代码6后面添加一行代码:
...//省略未改动部分 $('#gallery a').click(function(evt){ evt.preventDefault(); var imgPath = $(this).attr('href'); var oldImg = $('#bigImg img'); var newImg = $('<img src="/static/imghwm/default1.png" data-src="/file_images/article/201604/2016428145834548.jpg?2016328145843" class="lazy" + imgPath + '" alt="매우 아름다운 사진 앨범 세트입니다. jquery를 사용하여 사진 앨범 set_jquery를 만듭니다." >'); newImg.hide(); $('#bigImg').prepend(newImg); newImg.fadeIn(1000); oldImg.fadeOut(1000, function(){ $(this).remove(); }); });//end click $('#gallery a:first').click();
我们在后面添加了$('#gallery a:first').click();,在jQuery中,如果没有给事件函数传递任何参数,jQuery便会触发一次该事件。保存代码,重新用浏览器打开,第一幅图片已经默认显示了:
3、css绝对定位实现图片的重叠
漂亮的相册集基本上已经完成了,但是吹毛求疵地看,当我们更换要查看的照片的时候,旧图片的淡出会在新图的后面完成,给人一种赘余不利落的感觉:
为了解决这个问题,我们让新图的淡入和旧图的淡出重叠显示。为了实现图片的重叠显示我们需要用到css的绝对定位。
通常情况下,在隐藏或者添加一个新的元素的时候,其他元素会像流一样自动移动来填补空白或者给新的元素腾位置。但是像我们本文的示例,如果我们不希望看到这样的效果,我们可以使用css的绝对定位。css的绝对定位会把一个元素放置在常规页面内容流之外,这样就不会在内容流中出现填补移动等操作了。如果我们使用绝对定位将元素定位在相同的位置,那么元素将会重叠在一起。本例中,这恰恰是我们想要的。实现起来其实十分简单,只需要在css中将
中的img指定为绝对定位就可以了。我们在代码1的前添加以下代码:#bigImg img { position: absolute; }
保存,重新用浏览器打开,大功告成!漂亮的相册已经做好了。
jquery文件下载
以上就是本文的全部内容,希望对大家学习jquery程序设计有所帮助。

JavaScript 문자열 교체 방법 및 FAQ에 대한 자세한 설명 이 기사는 JavaScript에서 문자열 문자를 대체하는 두 가지 방법 인 내부 JavaScript 코드와 웹 페이지의 내부 HTML을 탐색합니다. JavaScript 코드 내부의 문자열을 교체하십시오 가장 직접적인 방법은 대체 () 메소드를 사용하는 것입니다. str = str.replace ( "find", "replace"); 이 메소드는 첫 번째 일치 만 대체합니다. 모든 경기를 교체하려면 정규 표현식을 사용하고 전역 플래그 g를 추가하십시오. str = str.replace (/fi

이 튜토리얼은 사용자 정의 Google 검색 API를 블로그 또는 웹 사이트에 통합하는 방법을 보여 주며 표준 WordPress 테마 검색 기능보다보다 세련된 검색 경험을 제공합니다. 놀랍게도 쉽습니다! 검색을 Y로 제한 할 수 있습니다

이 기사 시리즈는 2017 년 중반에 최신 정보와 새로운 예제로 다시 작성되었습니다. 이 JSON 예에서는 JSON 형식을 사용하여 파일에 간단한 값을 저장하는 방법을 살펴 봅니다. 키 값 쌍 표기법을 사용하여 모든 종류를 저장할 수 있습니다.

코드 프레젠테이션 향상 : 개발자를위한 10 개의 구문 하이 라이터 웹 사이트 나 블로그에서 코드 스 니펫을 공유하는 것은 개발자에게 일반적인 관행입니다. 올바른 구문 형광펜을 선택하면 가독성과 시각적 매력을 크게 향상시킬 수 있습니다. 티

그래서 여기 당신은 Ajax라는이 일에 대해 배울 준비가되어 있습니다. 그러나 정확히 무엇입니까? Ajax라는 용어는 역동적이고 대화식 웹 컨텐츠를 만드는 데 사용되는 느슨한 기술 그룹을 나타냅니다. 원래 Jesse J에 의해 만들어진 Ajax라는 용어

손쉬운 웹 페이지 레이아웃에 대한 jQuery 활용 : 8 에센셜 플러그인 jQuery는 웹 페이지 레이아웃을 크게 단순화합니다. 이 기사는 프로세스를 간소화하는 8 개의 강력한 JQuery 플러그인을 강조합니다. 특히 수동 웹 사이트 생성에 유용합니다.

이 기사는 JavaScript 및 JQuery Model-View-Controller (MVC) 프레임 워크에 대한 10 개가 넘는 튜토리얼을 선별 한 것으로 새해에 웹 개발 기술을 향상시키는 데 적합합니다. 이 튜토리얼은 Foundatio의 다양한 주제를 다룹니다

핵심 포인트 JavaScript에서는 일반적으로 메소드를 "소유"하는 객체를 말하지만 함수가 호출되는 방식에 따라 다릅니다. 현재 객체가 없으면 글로벌 객체를 나타냅니다. 웹 브라우저에서는 창으로 표시됩니다. 함수를 호출 할 때 이것은 전역 객체를 유지하지만 객체 생성자 또는 그 메소드를 호출 할 때는 객체의 인스턴스를 나타냅니다. call (), apply () 및 bind ()와 같은 메소드를 사용 하여이 컨텍스트를 변경할 수 있습니다. 이 방법은 주어진이 값과 매개 변수를 사용하여 함수를 호출합니다. JavaScript는 훌륭한 프로그래밍 언어입니다. 몇 년 전,이 문장은있었습니다


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
