HTML结构
该堆叠卡片共设计了4种效果,第一种效果的HTML结构采用无序列表结构,每一个<li>元素中放置一张图片和一个用于图片描述的div.content元素。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <ul class= "cards" > <li class= "title" > <h 2 >Slide right </h 2 > </li> <li class= "card card-1" ><img src= "img/01.jpg" /> <div class= "content" > <h 1 >Card 1 Title</h 1 > <p>Card description</p> </div> </li> <li class= "card card-2" ><img src= "img/02.jpg" /> <div class= "content" > <h 1 >Card 2 Title</h 1 > <p>Card description</p> </div> </li> <li class= "card card-3" ><img src= "img/03.jpg" /> <div class= "content" > <h 1 >Card 3 Title</h 1 > <p>Card description</p> </div> </li> </ul> |
第一种卡片效果的每张卡片的基本样式如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | ul.cards { width : 660px ; margin : 0 auto 20px ; height : 300px ; list-style-type : none ; position : relative ; padding : 20px 0 ; cursor : pointer ; } ul.cards li.title { margin : 0 0 20px ; } ul.cards li.title h 2 { font-weight : 700 ; } ul.cards li.card { background : #FFF ; overflow : hidden ; height : 200px ; width : 200px ; border-radius: 10px ; position : absolute ; left : 0px ; box-shadow: 1px 2px 2px 0 #aaa ; -webkit-transition: all 0.4 s cubic-bezier( 0.63 , 0.15 , 0.03 , 1.12 ); transition: all 0.4 s cubic-bezier( 0.63 , 0.15 , 0.03 , 1.12 ); } ul.cards li.card img { max-width : 100% ; padding : 5px ; height : auto ; } ul.cards li.card div.content { padding : 5px 10px ; } |
然后使用rotateZ和z-index属性来将图片堆叠在一起并分别旋转一定的角度。同时为后面两张卡片添加transition-delay,用于在卡片展开和收缩时有一定的延迟时间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ul.cards li.card.card -1 { z-index : 10 ; -webkit-transform: rotateZ( -2 deg); transform: rotateZ( -2 deg); } ul.cards li.card.card -2 { z-index : 9 ; -webkit-transform: rotateZ( -7 deg); transform: rotateZ( -7 deg); -webkit-transition-delay: 0.05 s; transition-delay: 0.05 s; } ul.cards li.card.card -3 { z-index : 8 ; -webkit-transform: rotateZ( 5 deg); transform: rotateZ( 5 deg); -webkit-transition-delay: 0.1 s; transition-delay: 0.1 s; } |
在堆叠卡片被点击的时候,ul.card元素被添加了transition class,这个class用于执行卡片的展开动画。
1 2 3 4 5 6 7 8 9 10 | ul.cards.transition li.card { -webkit-transform: rotateZ( 0 deg); transform: rotateZ( 0 deg); } ul.cards.transition li.card.card -1 { left : 440px ; } ul.cards.transition li.card.card -2 { left : 220px ; } |
其它三种效果的实现原理基本相同,请参考下载文件。
特效中使用jQuery来在点击卡片时添加和移除相应的class。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | jQuery(document).ready( function ($) { $( 'ul.cards' ).on( 'click' , function () { $( this ).toggleClass( 'transition' ); }); $( 'ul.card-stacks' ).on( 'click' , function () { $( this ).toggleClass( 'transition' ); }); $( 'ul.cards-split' ).on( 'click' , function () { $( this ).toggleClass( 'transition' ); }); $( 'ul.cards-split-delay' ).on( 'click' , function () { $( this ).toggleClass( 'transition' ); }); }); |
特别申明:
本站所有资源都是由网友投稿发布,或转载各大下载站,请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:lei1294551502@163.com