基本原理

这些具有动态效果的滑动盒都基于同样的基本原理。在你经过想要"窥见"对象中的其他两个项目,这个带有".boxgrid"的DIV标签充当着一个窗口。还不明白? 让这个图片来给你线索吧:

利用jQuery制作具有滑动动画效果的层_HTML

理解了这个基本原理之后,我们就可以利用滑动元素的动画效果来揭开或遮盖住要展示的区域,以此来创造滑动效果。

 

你可能需要的东西: 预览 | 下载个实例的源文件

 

第一步 – CSS 基础工作

在上面给出基本结构的启示图中,我们需要使用一点CSS来让它显示出预期的效果。下面这个CSS定义了查看窗口(.boxgrid) 并的在LEFT和TOP设定图片的默认POSITION,这对于滑动时的重叠交代很重要。并且不要忘记overflow:hidden将使这一切成为可能。

CSS代码
  1. .boxgrid{   
  2.         width325px;   
  3.         height260px;   
  4.         margin:10px;   
  5.         float:left;   
  6.         background:#161613;   
  7.         bordersolid 2px #8399AF;   
  8.         overflowhidden;   
  9.         positionrelative;   
  10. }   
  11. .boxgrid img{   
  12.         positionabsolute;   
  13.         top: 0;   
  14.         left: 0;   
  15.         border: 0;   
  16. }   

 

如果你不准备用CSS来实现半透明的描述,可直接跳向第二步:

CSS代码
  1. .boxcaption{   
  2.         floatleft;   
  3.         positionabsolute;   
  4.         background#000;   
  5.         height100px;   
  6.         width: 100%;   
  7.         opacity: .8;   
  8.         /* For IE 5-7 */  
  9.         filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);   
  10.         /* For IE 8 */  
  11.         -MS-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";   
  12.         }   

 

现在,我们需要设定说明层(caption box,觉得用层好过于盒)的默认的起点。如果想让其初始化的时候完全隐藏,这将需要设定TOP和LEFT为你的窗口(.boxgrid)的高和宽,(当然)这是由所要滑动的方向决定的。你也可以让它在初始化的时候只显示一部分,像这个(CSS所定义的).caption和.boxcaption所给出的:

CSS代码
  1. .captionfull .boxcaption {   
  2.        top: 260;   
  3.        left: 0;   
  4. }   
  5. .caption .boxcaption {   
  6.        top: 220;   
  7.        left: 0;   
  8. }   

 

第二步 – 添加滑动动画

下一步是选择适合你的动画,我提供了几个预设的潜在需求(样式)。试用一下他们,选择一个符合你风格也是你需要的样式。

JavaScript代码
  1. $(document).ready(function(){   
  2.         //要更改上、下方向和左、右方向,只需要在top/left的值中添加"-"号(表示反方面)。   
  3.         //垂直滑动   
  4.         $('.boxgrid.slidedown').hover(function(){   
  5.                 $(".cover"this).stop().animate({top:'-260px'},{queue:false,duration:300});   
  6.         }, function() {   
  7.                 $(".cover"this).stop().animate({top:'0px'},{queue:false,duration:300});   
  8.         });   
  9.         //水平没去   
  10.         $('.boxgrid.slideright').hover(function(){   
  11.                 $(".cover"this).stop().animate({left:'325px'},{queue:false,duration:300});   
  12.         }, function() {   
  13.                 $(".cover"this).stop().animate({left:'0px'},{queue:false,duration:300});   
  14.         });   
  15.         //比例缩放滑动   
  16.         $('.boxgrid.thecombo').hover(function(){   
  17.                 $(".cover"this).stop().animate({top:'260px', left:'325px'},{queue:false,duration:300});   
  18.         }, function() {   
  19.                 $(".cover"this).stop().animate({top:'0px', left:'0px'},{queue:false,duration:300});   
  20.         });   
  21.         //部分滑动 (只显示一部分背景)   
  22.         $('.boxgrid.peek').hover(function(){   
  23.                 $(".cover"this).stop().animate({top:'90px'},{queue:false,duration:160});   
  24.         }, function() {   
  25.                 $(".cover"this).stop().animate({top:'0px'},{queue:false,duration:160});   
  26.         });   
  27.         //完全滑动的说明 (从完全隐藏到完全显示)   
  28.         $('.boxgrid.captionfull').hover(function(){   
  29.                 $(".cover"this).stop().animate({top:'160px'},{queue:false,duration:160});   
  30.         }, function() {   
  31.                 $(".cover"this).stop().animate({top:'260px'},{queue:false,duration:160});   
  32.         });   
  33.         //部分滑动的说明 (部分显示-部分隐藏)   
  34.         $('.boxgrid.caption').hover(function(){   
  35.                 $(".cover"this).stop().animate({top:'160px'},{queue:false,duration:160});   
  36.         }, function() {   
  37.                 $(".cover"this).stop().animate({top:'220px'},{queue:false,duration:160});   
  38.         });   
  39. });   

 

第三步 – HTML

这里需要一些类(class)来作为jQuery的选择器,在心里存着这样的标准:

  • DIV标签的类".cover"必须分配给任何一个想要滑动的对象;
  • 有.boxgrid类的DIV标签,图片通常最先显示。

这是一个我将用在.captionfull动画的HTML例子:

HTML代码
  1. <div class="boxgrid captionfull">  
  2.         <img src="jareck.jpg"/>  
  3.         <div class="cover boxcaption">  
  4.                 <h3>Jarek Kubicki</h3>  
  5.                 <p>Artist<br/><a href="http://www.nonsensesociety.com/2009/03/art-by-jarek-kubicki/" target="_BLANK">More Work</a></p>  
  6.         </div>  
  7. </div>  

 

好吧。文章标题就这样被我改了。不过,这样对于中文更好理解。而文章这最后一段就不用全译了。只要你知道,这些实例只是供你选择,要创造出一个适合自己的,就要自己动手。

原文:Sliding Boxes and Captions with jQuery