122 lines
3.0 KiB
HTML
122 lines
3.0 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
|
||
|
</head>
|
||
|
<body>
|
||
|
<main>
|
||
|
|
||
|
<style>
|
||
|
.Shot
|
||
|
{
|
||
|
transform: perspective(1000px);
|
||
|
transform-style: preserve-3d;
|
||
|
width:500px;
|
||
|
height: 400px;
|
||
|
margin:20px auto 0 auto;
|
||
|
text-align:center;
|
||
|
transition: transform 1s;
|
||
|
}
|
||
|
.Shot[show="front"]{ transform: perspective(1000px) rotateY(0deg); }
|
||
|
.Shot[show="back"] { transform: perspective(1000px) rotateY(180deg); }
|
||
|
|
||
|
|
||
|
.Page
|
||
|
{
|
||
|
display: inline-block;
|
||
|
position: relative;
|
||
|
border:20px solid red;
|
||
|
transition: transform 1s;
|
||
|
transform-style: preserve-3d;
|
||
|
}
|
||
|
.Page .Front, .Page .Back
|
||
|
{
|
||
|
float:left;
|
||
|
position:absolute;
|
||
|
top:0;
|
||
|
left:0;
|
||
|
backface-visibility: hidden;
|
||
|
transform-style: preserve-3d;
|
||
|
}
|
||
|
.Page .Back
|
||
|
{
|
||
|
transform: rotateY(180deg);
|
||
|
}
|
||
|
.Page img
|
||
|
{
|
||
|
max-width:300px;
|
||
|
max-height:300px;
|
||
|
}
|
||
|
|
||
|
.Shadow--Drop::before
|
||
|
{
|
||
|
transform: rotateX(90deg);
|
||
|
backface-visibility: visible;
|
||
|
position: absolute;
|
||
|
top: 100%;
|
||
|
content: " ";
|
||
|
display: block;
|
||
|
width: 100%;
|
||
|
height: 50px;
|
||
|
background: #000;
|
||
|
}
|
||
|
|
||
|
.Shadow--Sheet::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;
|
||
|
z-index:100;
|
||
|
top:0;
|
||
|
left:0;
|
||
|
width:100%;
|
||
|
height:100%;
|
||
|
|
||
|
backface-visibility: hidden;
|
||
|
}
|
||
|
.Shadow--Sheet--Flip::after
|
||
|
{
|
||
|
transform:scaleX(-1);
|
||
|
}
|
||
|
</style>
|
||
|
<div>
|
||
|
<button onclick="bookPose('front')">Front</button>
|
||
|
<button onclick="bookPose('back') ">Back </button>
|
||
|
</div>
|
||
|
<div class="Shot" show="cover">
|
||
|
<div class="Page">
|
||
|
<div class="Front Shadow--Sheet">
|
||
|
<img src="book-page-1.jpg" />
|
||
|
</div>
|
||
|
<div class="Back Shadow--Sheet Shadow--Sheet--Flip Shadow--Drop">
|
||
|
<img src="book-page-2.jpg" />
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</main>
|
||
|
<script>
|
||
|
let $ = query => Array.from(document.querySelectorAll(query));
|
||
|
let pages = $("[swing]");
|
||
|
let table = $(".Shot")[0];
|
||
|
let bookOpen = index =>
|
||
|
{
|
||
|
pages.forEach((p, i)=> p.setAttribute("swing", i>index ? "right" : "left") );
|
||
|
};
|
||
|
let bookClose = () =>
|
||
|
{
|
||
|
pages.forEach(p=>p.setAttribute("swing", "closed"));
|
||
|
};
|
||
|
let bookPose = inPanel =>
|
||
|
{
|
||
|
table.setAttribute("show", inPanel);
|
||
|
bookClose();
|
||
|
};
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|