How to Create Dynamic Stack of Index Cards with CSS3
Here’s a cool CSS3 tutorial from Designlovr and it shows how you can create a dynamic stack of index cards.
HTML markup
<body>
<div id="wrapper">
<ul id="index_cards">
<li id="card-1">
<h3>Card 1</h3>
<img src="images/t9tuqui_trans.png" height="130" width="130" alt="Toucan" />
<p>Name: Toucan<br />
Age: 5<br />
Size: 50 cm<br />
Weight: 600 g<br />
Food: Fruit<br />
Toucan lives in southern and central America and loves to fly around</p>
</li>
<li id="card-2">
<h3>Card 2</h3>
<img src="images/t9foxy_trans.png" height="130" width="130" alt="Fox" />
<p>Name: Fox<br />
Age: 3<br />
Size: 70 cm<br />
Weight: 5.5 kg<br />
Food: Meat<br />
Fox lives in the northern hemisphere and loves to play seek and hide</p>
</li>
<li id="card-3">
<h3>Card 3</h3>
<img src="images/t9dog2_trans.png" height="130" width="130" alt="Dog" />
<p>Name: Dog<br />
Age: 8<br />
Size: 120 cm<br />
Weight: 10 kg<br />
Food: Bones<br />
Dog lives in a dog hut and loves to chew shoes, bark and go for walks</p>
</li>
<li id="card-4">
<h3>Card 4</h3>
<img src="images/t9penguino_trans.png" height="130" width="130" alt="Penguin" />
<p>Name: Penguin<br />
Age: 20<br />
Size: 110 cm<br />
Weight: 35 kg<br />
Food: Fish<br />
Penguin lives where it's cold and icy and loves to swim and dive</p>
</li>
<li id="card-5">
<h3>Card 5</h3>
<img src="images/t9lion_trans.png" height="130" width="130" alt="Lion" />
<p>Name: Lion<br />
Age: 12<br />
Size: 190 cm<br />
Weight: 180 kg<br />
Food: Meat<br />
Lions lives in Africa and loves to sleep most of the day and hunt sometimes</p>
</li>
</ul>
</div>
</body
CSS
/* @font-face definitions */
@font-face {
font-family: 'KulminoituvaRegular';
src: url('../fonts/kulminoituva.eot');
src: local('Kulminoituva Regular'), local('Kulminoituva'), url('../fonts/kulminoituva.woff') format('woff'), url('../fonts/kulminoituva.ttf') format('truetype'), url('../fonts/kulminoituva.svg#Kulminoituva') format('svg');
}
@font-face {
font-family: 'NotethisRegular';
src: url('../fonts/Note_this.eot');
src: local('Note this Regular'), local('Notethis'), url('../fonts/Note_this.woff') format('woff'), url('../fonts/Note_this.ttf') format('truetype'), url('../fonts/Note_this.svg#Notethis') format('svg');
}
/* General styling */
body {
background:#202020;
font-family: NotethisRegular, Verdana, Arial, sans-serif;
font-size:125%;
color:#202020;
}
h1, h2, h3, h4, h5, h6 {
font-family: KulminoituvaRegular, "Arial Black", Gadget, sans-serif;
font-size:1.5em;
}
#wrapper {
width:760px;
margin:0 auto;
text-align:center;
padding-top:50px;
}
Index card styling
/* Index Card Styling */
ul#index_cards {
margin-top:50px;
text-align:center;
}
ul#index_cards li {
background:url(../images/card_bg.jpg) repeat;
height:450px;
width:130px;
display:block;
float:left;
border:1px solid #666;
padding:25px 10px;
position:relative;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
-moz-box-shadow: 2px 2px 10px #000;
-webkit-box-shadow: 2px 2px 10px #000;
-moz-transition: all 0.5s ease-in-out;
-webkit-transition: all 0.5s ease-in-out;
}
Adding individual styling for each card
#card-1 {
-webkit-transform: rotate(-20deg);
-moz-transform: rotate(-20deg);
z-index:1;
left:150px;
top:40px;
}
#card-2 {
-webkit-transform: rotate(-10deg);
-moz-transform: rotate(-10deg);
z-index:2;
left:70px;
top:10px;
}
#card-3 {
background-color:#69732B;
z-index:3;
}
#card-4 {
-webkit-transform: rotate(10deg);
-moz-transform: rotate(10deg);
z-index:2;
right:70px;
top:10px;
}
#card-5 {
-webkit-transform: rotate(20deg);
-moz-transform: rotate(20deg);
z-index:1;
right:150px;
top:40px;
}
Hover state
/* Hover States */
ul#index_cards li:hover {
z-index:4;
}
#card-1:hover {
-moz-transform: scale(1.1) rotate(-18deg);
-webkit-transform: scale(1.1) rotate(-18deg);
}
#card-2:hover {
-moz-transform: scale(1.1) rotate(-8deg);
-webkit-transform: scale(1.1) rotate(-8deg);
}
#card-3:hover {
-moz-transform: scale(1.1) rotate(2deg);
-webkit-transform: scale(1.1) rotate(2deg);
}
#card-4:hover {
-moz-transform: scale(1.1) rotate(12deg);
-webkit-transform: scale(1.1) rotate(12deg);
}
#card-5:hover {
-moz-transform: scale(1.1) rotate(22deg);
-webkit-transform: scale(1.1) rotate(22deg);
}
Content styling
/* Content Styling */
ul#index_cards li img {
margin-top:7px;
background:#eee;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-moz-box-shadow: 0px 0px 5px #aaa;
-webkit-box-shadow: 0px 0px 5px #aaa;
}
ul#index_cards li p {
margin-top:4px;
text-align:left;
line-height:28px;
}
Click on the image to view more on this in-depth tutorial.
1 Comment
Daniel Davis
06.11.2012
Hi. This looks good but unfortunately doesn’t support Opera. Please could you add the -o- prefixes?
Also, to make it future-proof, the non-prefixed properties (e.g. transition, transform) should also be added as they are now out of experimental status (as of last week).
There are no trackbacks to display at this time.