3D CD Cases on a Shelf
Demo
A real-life implementation of this solution, using LastFm's REST API data is available on this page. Are you interested in HTML5 Web Components? Check AcidJs.XCDInfo - a similar experiment, wrapped as a custom tag, utilizing data from Last.Fm's REST API.
Semi-frontal
Frontal
Usage and Code Insight
<p>A real-life implementation of this solution, using LastFm's REST API data is available on
<a href="http://wemakesites.net/my-favorite-music.html" target="_blank">this page</a>.
Are you interested in <a href="html5-web-components.html" target="_blank">HTML5 Web Components</a>?
Check <a href="x-cd-info-html5-web-component.html" target="_blank">AcidJs.XCDInfo</a> - a
similar experiment, wrapped as a custom tag, utilizing data from
<a target="_blank" href="http://last.fm">Last.Fm</a>'s REST <a target="_blank" href="http://last.fm/api">API</a>.</p>
<h2>Semi-frontal</h2>
<div class="acidjs-cases-shelf acidjs-cases-tilted">
<div>
<ul>
<li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/slayer-south-of-heaven.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/slayer-south-of-heaven.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/cannibal-corpse-butchered-at-birth.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/cannibal-corpse-butchered-at-birth.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/kreator-renewal.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/kreator-renewal.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/sepultura-arise.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/sepultura-arise.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/metallica-and-justice-for-all.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/metallica-and-justice-for-all.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/sodom-tapping-the-vein.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/sodom-tapping-the-vein.jpg" />
</div>
</figure>
</li>
</ul>
</div>
</div>
<h2>Frontal</h2>
<div class="acidjs-cases-shelf">
<div>
<ul>
<li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/slayer-south-of-heaven.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/slayer-south-of-heaven.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/kreator-renewal.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/kreator-renewal.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/sepultura-arise.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/sepultura-arise.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/metallica-and-justice-for-all.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/metallica-and-justice-for-all.jpg" />
</div>
</figure>
</li><!--
--><li>
<figure>
<div>
<img src="pages/css3-cd-cases-on-a-shelf/cd-covers/sodom-tapping-the-vein.jpg" alt="pages/css3-cd-cases-on-a-shelf/cd-covers/sodom-tapping-the-vein.jpg" />
</div>
</figure>
</li>
</ul>
</div>
</div>
/*
* CSS3 CD Cases on a Shelf
* @version 1.0
* @author Martin Ivanov
* @url portfolio http://wemakesites.net/
* @url twitter https://twitter.com/wemakesitesnet
* @url blog http://acidmartin.wordpress.com/
**/
/*
* Do you like this solution? Please, donate:
* https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=QFUHPWJB2JDBS
**/
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after,
.acidjs-cases-shelf::after,
.acidjs-cases-shelf::before,
.acidjs-cases-shelf ul::before,
.acidjs-cases-shelf ul::after,
.acidjs-cases-shelf figure > div::before,
.acidjs-cases-shelf figure > div::after,
.acidjs-cases-shelf.acidjs-cases-tilted li::before
{
content: "";
}
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after,
.acidjs-cases-shelf::before,
.acidjs-cases-shelf ul::before,
.acidjs-cases-shelf ul::after,
.acidjs-cases-shelf figure > div::after,
.acidjs-cases-shelf.acidjs-cases-tilted li::before
{
position: absolute;
}
.acidjs-cases-shelf,
.acidjs-cases-shelf li,
.acidjs-cases-shelf figure,
.acidjs-cases-shelf figure > div,
.acidjs-cases-shelf.acidjs-cases-tilted li
{
position: relative;
}
.acidjs-cases-shelf,
.acidjs-cases-shelf li,
.acidjs-cases-shelf figure,
.acidjs-cases-shelf.acidjs-cases-tilted li
{
display: inline-block;
}
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after,
.acidjs-cases-shelf figure > div,
.acidjs-cases-shelf.acidjs-cases-tilted li::before
{
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box;
}
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after,
.acidjs-cases-shelf figure img,
.acidjs-cases-shelf figure > div::before
{
height: 100%;
}
.acidjs-cases-shelf::before,
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after
{
left: 27px;
}
.acidjs-cases-shelf::after,
.acidjs-cases-shelf::before,
.acidjs-cases-shelf.acidjs-cases-tilted li::before
{
display: block;
}
.acidjs-cases-shelf::after,
.acidjs-cases-shelf figure img,
.acidjs-cases-shelf figure > div::after
{
width: 100%;
}
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after,
.acidjs-cases-shelf::before
{
right: 27px;
}
.acidjs-cases-shelf::before,
.acidjs-cases-shelf ul::before,
.acidjs-cases-shelf ul::after
{
bottom: 8px;
}
.acidjs-cases-shelf figure,
.acidjs-cases-shelf figure > div
{
width: 140px;
overflow: hidden;
}
.acidjs-cases-shelf > div::before,
.acidjs-cases-shelf > div::after
{
z-index: -1;
}
.acidjs-cases-shelf > div::after,
.acidjs-cases-shelf figure > div::after
{
top: 0;
}
.acidjs-cases-shelf li,
.acidjs-cases-shelf.acidjs-cases-tilted li::before
{
z-index: 5;
}
.acidjs-cases-shelf ul::before,
.acidjs-cases-shelf ul::after
{
z-index: 2;
width: 0;
height: 0;
border-style: solid;
}
.acidjs-cases-shelf figure > div::after,
.acidjs-cases-shelf.acidjs-cases-tilted li:hover
{
z-index: 10;
}
.acidjs-cases-shelf figure img,
.acidjs-cases-shelf figure > div::before
{
display: table-cell;
}
.acidjs-cases-shelf *
{
padding: 0;
margin: 0;
list-style: none;
}
.acidjs-cases-shelf > div::before
{
background: #000 url("../pages/css3-cd-cases-on-a-shelf/example/poster.jpg") no-repeat;
background-size: cover;
border: solid 1px #24252a;
opacity: .75;
}
.acidjs-cases-shelf > div::after
{
box-shadow: 0 0 60px 20px rgba(0, 0, 0, .80) inset;
}
.acidjs-cases-shelf::after
{
height: 8px;
background: #24252a;
}
.acidjs-cases-shelf::before
{
background: #303138;
height: 23px;
}
.acidjs-cases-shelf ul
{
padding: 24px 0 0;
}
.acidjs-cases-shelf ul::before
{
border-color: transparent transparent #303138;
border-width: 0 0 23px 27px;
left: 0;
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-ms-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg);
}
.acidjs-cases-shelf ul::after
{
border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #303138;
border-width: 23px 0 0 27px;
right: 0;
}
.acidjs-cases-shelf li
{
margin: 8px;
}
.acidjs-cases-shelf li:first-child
{
margin-left: 27px;
}
.acidjs-cases-shelf li:last-child
{
margin-right: 27px;
}
.acidjs-cases-shelf figure
{
padding: 1px 1px 1px 0;
border: solid 1px #636260;
box-shadow: -1px 2px 4px 0px #000;
background: #666;
}
.acidjs-cases-shelf figure > div
{
height: 130px;
display: table;
}
.acidjs-cases-shelf figure > div::before
{
width: 12px;
background: #444;
border-right: solid 1px #666;
}
.acidjs-cases-shelf figure > div::after
{
left: 35px;
height: 200%;
background: rgba(255, 255, 255, .20);
-webkit-transform: rotate(30deg);
-moz-transform: rotate(30deg);
-ms-transform: rotate(30deg);
-o-transform: rotate(30deg);
transform: rotate(30deg);
}
.acidjs-cases-shelf.acidjs-cases-tilted li
{
-webkit-perspective: 300px;
-moz-perspective: 300px;
-ms-perspective: 300px;
-o-perspective: 300px;
}
.acidjs-cases-shelf.acidjs-cases-tilted li::before
{
top: -12px;
left: 23px;
bottom: -10px;
width: 6px;
background: #333;
-webkit-transform: rotateY(-10deg);
-moz-transform: rotateY(-10deg);
-ms-transform: rotateY(-10deg);
-o-transform: rotateY(-10deg);
}
.acidjs-cases-shelf.acidjs-cases-tilted figure
{
-webkit-transform: rotateY(50deg);
-moz-transform: rotateY(50deg);
-ms-transform: rotateY(50deg);
-o-transform: rotateY(50deg);
}
.acidjs-cases-shelf.acidjs-cases-tilted li
{
width: 34px;
}
.acidjs-cases-shelf.acidjs-cases-tilted > div
{
padding: 0 110px 0 0;
}
.acidjs-cases-shelf.acidjs-cases-tilted li:hover::before
{
display: none;
}
.acidjs-cases-shelf.acidjs-cases-tilted li figure
{
-webkit-transition: all 100ms ease-in;
-moz-transition: all 100ms ease-in;
-ms-transition: all 100ms ease-in;
-o-transition: all 100ms ease-in;
transition: all 100ms ease-in;
}
.acidjs-cases-shelf.acidjs-cases-tilted li:hover figure
{
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-ms-transform: scale(1.2);
-o-transform: scale(1.2);
transform: scale(1.2);
}