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

JavaScript to achieve simple tab bar switching case

This article shares the specific code for JavaScr...

MySQL 8.0.15 installation graphic tutorial and database basics

MySQL software installation and database basics a...

Several ways to introduce pictures in react projects

The img tag introduces the image Because react ac...

Summary of some of my frequently used Linux commands

I worked in operations and maintenance for two ye...

Detailed explanation of lazy loading and preloading of webpack

Table of contents Normal loading Lazy Loading Pre...

How to restore docker container data

The project test environment database data is los...

Building the User Experience

<br />Maybe you've just come into a comp...

Integration practice of Vue+Element background management framework

Table of contents Vue+ElementUI background manage...

JavaScript Factory Pattern Explained

Table of contents Simple Factory Factory Method S...

MySQL 8.0 user and role management principles and usage details

This article describes MySQL 8.0 user and role ma...

React gets input value and submits 2 methods examples

Method 1: Use the target event attribute of the E...

Linux system calls for operating files

Table of contents 1. Open the file Parameter Intr...

One line of CSS code to achieve the integration of avatar and national flag

It’s National Day, and everyone is eager to celeb...