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"> <h2>Slide right</h2> </li> <li class="card card-1"><img src="img/01.jpg"/> <div class="content"> <h1>Card 1 Title</h1> <p>Card description</p> </div> </li> <li class="card card-2"><img src="img/02.jpg"/> <div class="content"> <h1>Card 2 Title</h1> <p>Card description</p> </div> </li> <li class="card card-3"><img src="img/03.jpg"/> <div class="content"> <h1>Card 3 Title</h1> <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 h2 { 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.4s cubic-bezier(0.63, 0.15, 0.03, 1.12); transition: all 0.4s 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(-2deg); transform: rotateZ(-2deg);}ul.cards li.card.card-2 { z-index: 9; -webkit-transform: rotateZ(-7deg); transform: rotateZ(-7deg); -webkit-transition-delay: 0.05s; transition-delay: 0.05s;}ul.cards li.card.card-3 { z-index: 8; -webkit-transform: rotateZ(5deg); transform: rotateZ(5deg); -webkit-transition-delay: 0.1s; transition-delay: 0.1s;} |
在堆叠卡片被点击的时候,ul.card元素被添加了transition class,这个class用于执行卡片的展开动画。
1 2 3 4 5 6 7 8 9 10 | ul.cards.transition li.card { -webkit-transform: rotateZ(0deg); transform: rotateZ(0deg);}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