<!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="cover"]{ transform: perspective(1000px) rotateY(-70deg); }
        .Shot[show="spine"]{ transform: perspective(1000px) rotateY(-10deg); }
        .Shot[show="back" ]{ transform: perspective(1000px) rotateY(-235deg); }
        .Shot[show="pages"]{ transform: perspective(1000px) rotateY(-180deg); }

        .Book
        {
            height:100%;
            transform-style: preserve-3d;
            transform: translateZ(100px);
            position: relative;
            display:inline-block;
        }
        .Spine
        {
            display:flex;
            justify-content:space-between;
            margin:0 auto;
            position:absolute;
            top:0;
            left:0;
            width:100%;
            height:100%;
        }
        .Spine__Glue
        {
            flex:0;
            width:0;
            height:100%;
            position:relative;
            transform:rotateY(90deg);
            transform-style: preserve-3d;
            transition: transform 0.4s;
        }
        .Spine__Glue[swing='right']{transform: rotateY( 20deg   );}
        .Spine__Glue[swing='left' ]{transform: rotateY( 160deg );}
        .Panel
        {
            height:100%;
            top:0%;
            float:left;
            position:relative;
        }
        .Spine__Glue[swing='right'] .Panel {box-shadow:0px 0px 2px rgb(0 0 0 / 24%)}
        .Spine__Glue[swing='left' ] .Panel {box-shadow:0px 0px 2px rgb(0 0 0 / 24%)}

        .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.Page::before, .Panel.Page::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);
        }
        .Shadow::after
        {
            transform: rotateX(90deg) translateY(-100px) translateZ(12px);
            box-shadow: 0px 100px 60px black, 0px 100px 20px black;
            display: block;
            position: absolute;
            top: 100%;
            content: " ";
            width: 100%;
            height: 29px;
            border-radius: 39px;
        }
    </style>

    <div class="Shot">
        <div class="Book">
            <img style="display:block; height:100%; width:auto;" src="http://placekitten.com/20/200"/>
            <div class="Spine Shadow">
                <div class="Spine__Glue" swing="closed"><div class="Panel Cover Front Shadow"><img src="book-panel-cover.jpg"/><img src="book-panel-cover.jpg"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Page"><img src="book-page-devo-1.JPG"/><img src="http://via.placeholder.com/120x200.jpg?Text=RIGHT"/></div></div>
                <div class="Spine__Glue" swing="closed"><div class="Panel Cover Back Shadow"><img src="book-panel-cover.jpg"/><img src="book-panel-cover.jpg"/></div></div>
            </div>
        </div>
    </div>

    <div>
        <button onclick="bookPose('cover'); bookClose();">Cover</button>
        <button onclick="bookPose('spine'); bookClose();">Spine</button>
        <button onclick="bookPose('back');  bookClose();">Back</button>
        <button onclick="bookPose('pages'); bookOpen(3);">0</button>
        <button onclick="bookPose('pages'); bookOpen(4);">1</button>
        <button onclick="bookPose('pages'); bookOpen(5);">2</button>
        <button onclick="bookPose('pages'); bookOpen(6);">3</button>
        <button onclick="bookPose('pages'); bookOpen(7);">4</button>
    </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>