今天我们要告诉你如何创建一些令人兴奋的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;
}