jquery實現的3D縮略圖懸停效果


今天我們要告訴你如何創建一些令人興奮的3D使用CSS3和jQuery懸停效果。這一想法的靈感來自於涼爽的懸停效果,再給客戶做網站的時候用的這樣的效果,今天就共享出來

在這個效果當中,我將使用的thumbails,就會發現一些更多的信息懸停。將創建一個使用jQuery的結構,將允許的圖象出現折疊或彎曲,當他懸停時候。為懸停效果,我們將使用CSS 3D變換。效果如下  演示     下載

鼠標經過時候

看看火狐下面的效果,鼠標經過的時候展示出3D變換效果

 

thumbnail 的DIV代碼如下所示

 

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

每個縮略圖的背視圖部分,我們要為每個背景圖部分創建與使用JavaScript 視圖的結構如下:

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

每個背景圖鼠標移動的時候都會有各自的形象和作為它的背景圖片,因為我們有一個背景嵌套的結構,這將使我們能夠控制的他的效果。此外,我們將添加一個覆蓋跨度,javascript代碼如下

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

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,我們需要額外的定義這個效果

.view {
    overflow: hidden;
}
 
.view:hover img {
    left: -85px;
}
 
.view div.view-back {
    background: #666;
}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM