全国免费服务热线:

18982081108
✕

成都弹性云服务器,成都高防云服务器,互联网数据服务,成都祈钰瑶

jQuery实现的3D缩略图悬停效果

今天我们要告诉你如何创建一些令人兴奋的3D使用CSS3和jQuery悬停效果。这一想法的灵感来自于凉爽的悬停效果,再给客户做网站的时候用的这样的效果,今天就共享出来

在这个效果当中,我将使用的thumbails,就会发现一些更多的信息悬停。将创建一个使用jQuery的结构,将允许的图象出现折叠或弯曲,当他悬停时候。为悬停效果,我们将使用CSS 3D变换。效果如下 演示     下载

鼠标经过时候

看看火狐下面的效果,鼠标经过的时候展示出3D变换效果

#p#

thumbnail 的DIV代码如下所示

 
 
 
 
  1. <div id="grid" class="main">
  2.      <div class="view">
  3.          <div class="view-back">
  4.              <span data-icon="A">566</span>
  5.              <span data-icon="B">124</span>
  6.              <a href="http://www.flickr.com/photos/ag2r/5439506585/in/photostream">→</a>
  7.          </div>
  8.          <img src="images/1.jpg" />
  9.      </div>
  10.      <div class="view"> 
  11.      <!-- ... --> 
  12.      </div>  
  13.      <!-- ... -->      
  14.  </div>

每个缩略图的背视图部分,我们要为每个背景图部分创建与使用JavaScript 类视图的结构如下:

 
 
 
 
  1. <div class="view">
  2.      <div class="view-back">
  3.          <!-- ... -->
  4.      </div>
  5.      <div class="slice s1" style="background-image: url(images/1.jpg); ">
  6.          <span class="overlay"></span>
  7.          <div class="slice s2" style="background-image: url(images/1.jpg); ">
  8.              <span class="overlay"></span>
  9.              <div class="slice s3" style="background-image: url(images/1.jpg); ">
  10.                  <span class="overlay"></span>
  11.                  <div class="slice s4" style="background-image: url(images/1.jpg); ">
  12.                      <span class="overlay"></span>
  13.                      <div class="slice s5" style="background-image: url(images/1.jpg); ">
  14.                          <span class="overlay"></span>
  15.                      </div><!-- /s5 -->
  16.                  </div><!-- /s4 -->      
  17.              </div><!-- /s3 -->
  18.          </div><!-- /s2 -->
  19.      </div><!-- /s1 -->      
  20.  </div><!-- /view -->

每个背景图鼠标移动的时候都会有各自的形象和作为它的背景图片,因为我们有一个背景嵌套的结构,这将使我们能够控制的他的效果。此外,我们将添加一个覆盖跨度,javascript代码如下

 
 
 
 
  1. $.fn.hoverfold = function( args ) {
  2.      this.each( function() {
  3.          $( this ).children( '.view' ).each( function() {
  4.              var $item   = $( this ),
  5.                  img     = $item.children( 'img' ).attr( 'src' ),
  6.                  struct  = '<div class="slice s1">';
  7.                      struct  +='<div class="slice s2">';
  8.                          struct  +='<div class="slice s3">';
  9.                              struct  +='<div class="slice s4">';
  10.                                  struct  +='<div class="slice s5">';
  11.                                  struct  +='</div>';
  12.                              struct  +='</div>';
  13.                          struct  +='</div>';
  14.                      struct  +='</div>';
  15.                  struct  +='</div>';            
  16.              var $struct = $( struct );      
  17.              $item.find( 'img' ).remove().end().append( $struct ).find( 'div.slice' ).css( 'background-image', 'url(' + img + ')' ).prepend( $( '<span class="overlay" ></span>' ) );        
  18.          } );  
  19.      }); 
  20.  };

CSS代码如下

 
 
 
 
  1. .view {
  2.      width: 316px;
  3.      height: 216px;
  4.      margin: 10px;
  5.      float: left;
  6.      position: relative;
  7.      border: 8px solid #fff;
  8.      box-shadow: 1px 1px 2px rgba(0,0,0,0.05);
  9.      background: #333;
  10.      perspective: 500px;
  11.  }

3D过度效果CSS代码

 
 
 
 
  1. .view .slice{
  2.      width: 60px;
  3.      height: 100%;
  4.      z-index: 100;
  5.      transform-style: preserve-3d;
  6.      transform-origin: left center;
  7.      transition: transform 150ms ease-in-out;
  8.       
  9.  }

描述部分的CSS代码

 
 
 
 
  1. .view div.view-back{
  2.      width: 50%;
  3.      height: 100%;
  4.      position: absolute;
  5.      right: 0;
  6.      background: #666;
  7.      z-index: 0;
  8.  }

前台风格跨度的代码

 
 
 
 
  1. .view-back span {
  2.      display: block;
  3.      float: right;
  4.      padding: 5px 20px 5px;
  5.      width: 100%;
  6.      text-align: right;
  7.      font-size: 16px;
  8.      color: rgba(255,255,255,0.6);
  9.  }
  10.   
  11.  .view-back span:first-child {
  12.      padding-top: 20px;
  13.  }
  14.   
  15.  .view-back a {
  16.      display: bock;
  17.      font-size: 18px;
  18.      color: rgba(255,255,255,0.4);
  19.      position: absolute;
  20.      right: 15px;
  21.      bottom: 15px;
  22.      border: 2px solid rgba(255,255,255,0.3);
  23.      border-radius: 50%;
  24.      width: 30px;
  25.      height: 30px;
  26.      line-height: 22px;
  27.      text-align: center;
  28.      font-weight: 700;
  29.  }
  30.   
  31.  .view-back a:hover {
  32.      color: #fff;
  33.      border-color: #fff;
  34.  }

有的浏览器不支持3D,我们需要额外的定义这个效果

 
 
 
 
  1. .view {
  2.     overflow: hidden;
  3. }
  4. .view:hover img {
  5.     left: -85px;
  6. }
  7. .view div.view-back {
  8.     background: #666;
  9. }