css-3d-book/index.html

149 lines
3.8 KiB
HTML
Raw Normal View History

2021-08-10 16:53:55 -04:00
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
2021-08-11 09:35:40 -04:00
figure
2021-08-10 16:53:55 -04:00
{
width:500px;
2021-08-11 09:35:40 -04:00
height:500px;
transform: perspective(400px);
transform-style: preserve-3d;
2021-08-10 16:53:55 -04:00
}
2021-08-11 09:35:40 -04:00
.Sheet
2021-08-10 16:53:55 -04:00
{
2021-08-11 09:35:40 -04:00
display:block;
width:120px;
height:200px;
border:2px solid black;
2021-08-10 16:53:55 -04:00
position:relative;
2021-08-11 09:35:40 -04:00
transform:rotateY(45deg);
transform-style: preserve-3d;
transform-origin: left center;
2021-08-10 16:53:55 -04:00
}
2021-08-11 09:35:40 -04:00
.Sheet img
2021-08-10 16:53:55 -04:00
{
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
2021-08-11 09:35:40 -04:00
backface-visibility: hidden;
2021-08-10 16:53:55 -04:00
}
2021-08-11 09:35:40 -04:00
.Sheet img:last-child
2021-08-10 16:53:55 -04:00
{
2021-08-11 09:35:40 -04:00
transform: rotateY(180deg);
2021-08-10 16:53:55 -04:00
}
2021-08-11 09:35:40 -04:00
</style>
</head>
<body>
<main>
2021-08-10 16:53:55 -04:00
2021-08-11 13:29:50 -04:00
<style>
2021-08-11 17:13:04 -04:00
.Table
2021-08-11 13:29:50 -04:00
{
transform: perspective(400px);
transform-style: preserve-3d;
2021-08-11 17:13:04 -04:00
width:500px;
height: 400px;
margin:20px auto 0 auto;
text-align:center;
}
.Book
{
transform: rotateY(-75deg) translateY(50%) translateZ(60px);
transform-style: preserve-3d;
position: relative;
display:inline-block;
2021-08-11 13:29:50 -04:00
}
.Spine
{
display:flex;
justify-content:space-between;
margin:0 auto;
2021-08-11 17:13:04 -04:00
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
2021-08-11 13:29:50 -04:00
}
.Spine__Glue
{
flex:0;
width:1px;
height:100%;
position:relative;
2021-08-11 17:13:04 -04:00
transform:rotateY(90deg);
2021-08-11 13:29:50 -04:00
transform-style: preserve-3d;
2021-08-11 17:13:04 -04:00
transition: transform 0.4s;
2021-08-11 13:29:50 -04:00
}
2021-08-11 17:13:04 -04:00
.Spine__Glue[swing='right']{transform: rotateY( 5deg );}
.Spine__Glue[swing='left' ]{transform: rotateY( 175deg );}
2021-08-11 13:29:50 -04:00
.Panel
{
height:100%;
top:0%;
float:left;
position:relative;
}
.Panel.Page
{
height:98%;
top:1%;
}
.Panel img
{
display:block;
height:100%;
width:auto;
backface-visibility: hidden;
}
.Panel img:last-child
{
position:absolute;
top:0;
left:0;
transform: rotateY(180deg);
}
.Panel::before, .Panel::after
{
content:" ";
background-size: 100% 100%;
background-position: 0px 0px;
background-image: conic-gradient(from 0deg at 0% 0%, #00000000 33%, #000000FF 75%);
display:block;
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
backface-visibility: hidden;
}
.Panel::after
{
transform:rotateY(180deg) scaleX(-1);
}
</style>
2021-08-11 17:13:04 -04:00
<div class="Table">
<div class="Book">
<img style="display:block;" src="http://placekitten.com/50/200"/>
<div class="Spine">
<div class="Spine__Glue"><div class="Panel Cover Front"><img src="http://placekitten.com/120/200"/><img src="http://via.placeholder.com/120x200"/></div></div>
<div class="Spine__Glue"><div class="Panel Page"><img src="http://placekitten.com/120/200"/><img src="http://via.placeholder.com/120x200"/></div></div>
<div class="Spine__Glue"><div class="Panel Page"><img src="http://placekitten.com/120/200"/><img src="http://via.placeholder.com/120x200"/></div></div>
<div class="Spine__Glue"><div class="Panel Page"><img src="http://placekitten.com/120/200"/><img src="http://via.placeholder.com/120x200"/></div></div>
<div class="Spine__Glue"><div class="Panel Cover Back"><img src="http://placekitten.com/120/200"/><img src="http://via.placeholder.com/120x200"/></div></div>
</div>
2021-08-11 13:29:50 -04:00
</div>
2021-08-11 09:35:40 -04:00
</div>
2021-08-10 16:53:55 -04:00
2021-08-11 09:35:40 -04:00
</main>
2021-08-10 16:53:55 -04:00
<script>
</script>
</body>
</html>