Native JS to achieve book flipping effects

Native JS to achieve book flipping effects

This article shares with you a book flipping effect diagram implemented with native JS. The effect is as follows:

The implementation code is as follows, you are welcome to copy and paste.

<!doctype html>
<html>
 
    <head>
        <meta charset="utf-8">
        <title>Native JS to achieve book flipping effects</title>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
                list-style: none;
            }
 
            #btn {
                width: 50px;
                height: 40px;
                line-height: 40px;
                position: relative;
                left: 50%;
                margin-left: -25px;
                top: 100px;
            }
 
            #book {
                width: 600px;
                height: 400px;
                position: absolute;
                left: 50%;
                top: 50%;
                margin: -200px 0 0 -300px;
                border: 1px solid black;
                /* First cover */
                background: url(images/0.jpg);
            }
 
            #rightPage {
                width: 50%;
                height: 100%;
                position: absolute;
                left: 50%;
                z-index: 2;
                transition: 0.5s;
                transform: perspective(800px) rotateY(0px);
                transform-origin: left center;
                background: black;
                transform-style: preserve-3d;
            }
 
            #rightPage #topNode {
                position: absolute;
                width: 100%;
                height: 100%;
                /* First cover */
                background: url(images/0.jpg) 300px 0;
                transform: translateZ(1px);
            }
 
            #rightPage #bottomNode {
                position: absolute;
                width: 100%;
                height: 100%;
                /* Third cover */
                background: url(images/2.jpg) 0 0;
                /*scaleX restores the image after flipping the book mirror*/
                transform: translateZ(-1px) scaleX(-1);
            }
 
            #rightOtherPage {
                position: absolute;
                left: 50%;
                height: 100%;
                width: 50%;
                /* Third cover */
                background: url(images/2.jpg) 300px 0;
                z-index: 1;
            }
        </style>
    </head>
 
    <body>
        <input type='button' value='Next page' id='btn'>
        <div id='book'>
            <div id='rightPage'>
                <div id='topNode'></div>
                <div id='bottomNode'></div>
            </div>
            <div id='rightOtherPage'></div>
        </div>
        <script type="text/javascript">
            var index = 0;
            var flag = false;
 
            btn.onclick = function () {
                if (flag) return;
                flag = true;
                index++;
                rightPage.style.transition = '0.5s';
                rightPage.style.transform = 'perspective(800px) rotateY(-180deg)';
 
                setTimeout(function () {
                    // Change the background of the next page instantly after turning the page book.style.backgroundImage = 'url(images/' + (index % 2 + 1) + '.jpg)';
                    // Let the page turn back instantlyrightPage.style.transition = '0s';
                    rightPage.style.transform = 'perspective(800px) rotateY(0deg)';
 
                    // Change the front background of the flip paper topNode.style.backgroundImage = 'url(images/' + (index % 2 + 1) + '.jpg)';
                    // Change the background of the back of the flip paper bottomNode.style.backgroundImage = 'url(images/' + ((index + 1) % 2 + 1) + '.jpg)';
 
                    // Change the paper background after turning the page rightOtherPage.style.backgroundImage = 'url(images/' + ((index + 1) % 2 + 1) + '.jpg)';
                    flag = false;
 
                }, 500);
 
            };
        </script>
    </body>
 
</html>

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • Turn.js asynchronous loading to achieve book flipping effect
  • Page switching style based on JS to achieve flip book effect
  • Native JS to achieve picture flipping effect
  • Realizing the book flipping effect based on Turn.js
  • Mobile H5 development Turn.js to achieve great book flipping effect
  • Realize 3D book flipping effects based on javascript html5
  • js picture flip book effect code sharing
  • JS to achieve the effect of picture flip book sample code

<<:  How to create Apache image using Dockerfile

>>:  Beginners learn some HTML tags (1)

Recommend

Vue SPA first screen optimization solution

Table of contents Preface optimization SSR Import...

React's context and props explained

Table of contents 1. context 1. Usage scenarios 2...

MySQL 8.0.22 download, installation and configuration method graphic tutorial

Download and install MySQL 8.0.22 for your refere...

Vue implements seamless scrolling of lists

This article example shares the specific code of ...

CSS scroll bar style modification code

CSS scroll bar style modification code .scroll::-...

jQuery clicks on the love effect

This article shares the specific code of jQuery&#...

Application examples of WeChat applet virtual list

Table of contents Preface What is a virtual list?...

Tutorial on Installing Nginx-RTMP Streaming Server on Ubuntu 14

1. RTMP RTMP streaming protocol is a real-time au...

How to use Dockerfile to create a mirror of the Java runtime environment

The current environment is: Centos 7.5 docker-ce ...

Vue implements calling PC camera to take photos in real time

Vue calls the PC camera to take pictures in real ...

Implementation of CSS3 button border animation

First look at the effect: html <a href="#...

Introduction to the three essential logs for MySQL database interviews

Table of contents 1. redo log (transaction log of...

The practical process of login status management in the vuex project

Table of contents tool: Login scenario: practice:...