Pages
Html
Pages
Tuesday, May 7, 2024
Books 📚
Html code
<!DOCTYPE html>
<html>
<head>
<style>
* { box-sizing: border-box; }
body {
/* or any other parent wrapper */
margin: 0;
display: flex;
width: 300px;
height: 100px;
font: 16px/1.4 sans-serif;
overflow: hidden;
}
.book {
display: flex;
margin: auto;
width: 300px;
/*1* let pointer event go trough pages of lower Z than .book */
pointer-events: none;
transform-style: preserve-3d;
transition: translate 1s;
translate: calc(min(var(--c), 1) * 50%) 0%;
/* DEMO ONLY: incline on the X axis for pages preview */
rotate: 1 0 0 30deg;
}
.page {
--thickness: 5;
/* PS: Don't go below thickness 0.4 or the pages might transpare */
flex: none;
display: flex;
width: 100%;
/*1* allow pointer events on pages */
pointer-events: all;
user-select: none;
transform-style: preserve-3d;
border: 1px solid #0008;
transform-origin: left center;
transition:
transform 1s,
rotate 1s ease-in calc((min(var(--i), var(--c)) - max(var(--i), var(--c))) * 50ms);
translate: calc(var(--i) * -100%) 0px 0px;
transform: translateZ( calc((var(--c) - var(--i) - 0.5) * calc(var(--thickness) * 1px)));
rotate: 0 1 0 calc(clamp(0, var(--c) - var(--i), 1) * -180deg);
}
.page img {
width: 100%;
height: 100%;
object-fit: cover;
}
.front,
.back {
flex: none;
width: 100%;
padding: 2rem;
backface-visibility: hidden;
background-color: #fff;
/* Fix backface visibility Firefox: */
translate: 0px;
}
.back {
background-image: linear-gradient(to right, #fff 80%, #ddd 100%);
translate: -100% 0;
rotate: 0 1 0 180deg;
}
</style>
</head>
<body>
<div class="book">
<div class="page">
<div class="front">
<img src="https://i.imgur.com/HFc9fVL.jpeg/500/400" alt="Img 1">
</div>
<div class="back">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
</div>
<div class="page">
<div class="front">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
<div class="back">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
</div>
<div class="page">
<div class="front">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
<div class="back">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
</div>
<div class="page">
<div class="front">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
<div class="back">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
</div>
<div class="page">
<div class="front">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
<div class="back">
<img src="https://picsum.photos/500/400" alt="Img 1">
</div>
</div>
</div>
<script>
const flipBook = (elBook) => {
elBook.style.setProperty("--c", 0); // Set current page
elBook.querySelectorAll(".page").forEach((page, idx) => {
page.style.setProperty("--i", idx);
page.addEventListener("click", (evt) => {
const curr = evt.target.closest(".back") ? idx : idx + 1;
elBook.style.setProperty("--c", curr);
});
});
};
document.querySelectorAll(".book").forEach(flipBook);
</script>
</body>
</html>
Books
Lorem ipsum 1
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Poetry Collection
Lorem ipsum book
E-book number 1
Lorem ipsum 3
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Lorem ipsum 2
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Lorem ipsum 5
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Lorem ipsum 4
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Lorem ipsum 7
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Lorem ipsum 6
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Lorem ipsum 8
Lorem ipsum dolor sit amet,
consetetur sadipscing elitr,
sed diam nonumy eirmod tempor
invidunt ut labore et dolore
magna aliquyam erat, sed diam
voluptua. At vero eos et accusam
et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea
takimata sanctus est Lorem ipsum
dolor sit amet. Lorem ipsum dolor
sit amet
Text 26
With ❤️ by Nidhanshu Sharma
text 12
text 11
text 10
text 9
text 8
text 7
text 6
text 5
text 4
text 3
text 2
text 1
📖
Html code
<!DOCTYPE html>
<html>
<head>
<style>
body{
margin:0;
background-color: #ffecc6;
}
*{
box-sizing: border-box;
}
.book-section{
height: 100vh;
width: 100%;
padding: 40px 0;
text-align: center;
}
.book-section > .container{
height: 400px;
width: 500px;
position: relative;
left: 50%;
transform: translateX(-50%);
border-radius: 2%;
margin-bottom: 30px;
perspective: 1200px;
}
.container > .right{
position: absolute;
height: 100%;
width: 50%;
transition: 0.7s ease-in-out;
transform-style: preserve-3d;
}
.book-section > .container > .right{
right:0;
transform-origin: left;
border-radius: 10px 0 0 10px;
}
.right > figure.front, .right > figure.back{
margin: 0;
height: 100%;
width: 100%;
position: absolute;
left:0;
top:0;
background-size: 200%;
background-repeat: no-repeat;
backface-visibility: hidden;
background-color: white;
overflow: hidden;
}
.right > figure.front{
background-position: right;
border-radius: 0 10px 10px 0;
box-shadow: 2px 2px 15px -2px rgba(0,0,0,0.2);
}
.right > figure.back{
background-position: left;
border-radius: 10px 0 0 10px;
box-shadow: -2px 2px 15px -2px rgba(0,0,0,0.2);
transform: rotateY(180deg);
}
.flip{
transform: rotateY(-180deg);
}
.flip::before{
content: "";
position: absolute;
top:0;
left:0;
z-index: 10;
width: 100%;
height: 100%;
border-radius: 0 10px 10px 0;
background-color: rgba(0,0,0,0.1);
}
.book-section > button{
border: 2px solid #ef9f00;
background-color: transparent;
color: #ef9f00;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
margin: 10px;
transition: 0.3s ease-in-out;
}
.book-section > button:focus, .book-section > button:active{
outline: none;
}
.book-section > p{
color: rgba(0,0,0,0.7);
font-family: calibri;
font-size: 24px;
margin: 15px 0;
}
.book-section > p > a{
text-decoration: none;
color: #ef9f00;
}
.book-section > button:hover{
background-color: #ef9f00;
color: #fff;
}
.front#cover, .back#back-cover{
background-color: #ffcb63;
font-family: calibri;
text-align: left;
padding: 0 30px;
}
.front#cover h1{
color: #fff;
}
.front#cover p{
color: rgba(0,0,0,0.8);
font-size: 14px;
}
</style>
</head>
<body>
<div class="book-section">
<p>With ❤️ by <a href="https://github.com/nidhanshusharma" target="_blank">Nidhanshu Sharma</a></p>
<div class="container">
<div class="right">
<figure class="back"><p>text 12</p></figure>
<figure class="front" id="cover">
<p>text 11</p>
</figure>
</div>
<div class="right">
<figure class="back"><p>text 10</p></figure>
<figure class="front" id="cover">
<p>text 9</p>
</figure>
</div>
<div class="right">
<figure class="back"><p>text 8</p></figure>
<figure class="front" id="cover">
<p>text 7</p>
</figure>
</div>
<div class="right">
<figure class="back"><p>text 6</p></figure>
<figure class="front" id="cover">
<p>text 5</p>
</figure>
</div>
<div class="right">
<figure class="back"><p>text 4</p></figure>
<figure class="front" id="cover">
<p>text 3</p>
</figure>
</div>
<div class="right">
<figure class="back"><p>text 2</p></figure>
<figure class="front" id="cover">
<p>text 1</p>
</figure>
</div>
</div>
<button onclick="turnLeft()">Prev</button> <button onclick="turnRight()">Next</button>
</div>
<script>
var right = document.getElementsByClassName("right");
var si = right.length;
var z=1;
turnlift();
function turnRight()
{
if(si>=1){
si--;
}
else{
si=right.length-1;
function sttmot(i){
setTimeout(function(){right[i].style.zIndex="auto";},300);
}
for(var i=0;i<right.length;i++){
right[i].className="right";
sttmot(i);
z=1;
}
}
right[si].classList.add("flip");
z++;
right[si].style.zIndex=z;
}
function turnLeft()
{
if(si<right.length){
si++;
}
else{
si=1;
for(var i=right.length-1;i>0;i--){
right[i].classList.add("flip");
right[i].style.zIndex=right.length+1-i;
}
}
right[si-1].className="right";
setTimeout(function(){right[si-1].style.zIndex="auto";},350);
}
</script>
</body>
</html>
Text 25
Html code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flipbook</title>
<style>
/* Add your CSS styles here */
</style>
</head>
<body>
<div id="flipbook-container">
<!-- Previous Button -->
<button id="prev-btn">Previous</button>
<!-- Page Number Display -->
<span id="page-number">1</span>
<!-- Next Button -->
<button id="next-btn">Next</button>
<!-- Slider -->
<input type="range" id="page-slider" min="1" max="40" value="1">
<!-- Flipbook Pages -->
<div class="page">Page 1 Content</div>
<div class="page">Page 2 Content</div>
<!-- Add more pages as needed -->
</div>
<script>
// JavaScript code for controlling flipbook functionality
// Variables
const prevButton = document.getElementById('prev-btn');
const nextButton = document.getElementById('next-btn');
const pageNumber = document.getElementById('page-number');
const pageSlider = document.getElementById('page-slider');
const pages = document.querySelectorAll('.page');
let currentPage = 1;
// Functions
function showPage(pageNum) {
pages.forEach((page, index) => {
if (index + 1 === pageNum) {
page.style.display = 'block';
} else {
page.style.display = 'none';
}
});
}
function updatePageNumber(pageNum) {
pageNumber.textContent = pageNum;
pageSlider.value = pageNum;
}
// Event Listeners
prevButton.addEventListener('click', () => {
if (currentPage > 1) {
currentPage--;
showPage(currentPage);
updatePageNumber(currentPage);
}
});
nextButton.addEventListener('click', () => {
if (currentPage < 40) {
currentPage++;
showPage(currentPage);
updatePageNumber(currentPage);
}
});
pageSlider.addEventListener('input', () => {
const pageNum = parseInt(pageSlider.value);
currentPage = pageNum;
showPage(pageNum);
updatePageNumber(pageNum);
});
// Initialize
showPage(currentPage);
</script>
</body>
</html>
Text 24
Html code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flipbook</title>
<style>
/* Style for flipbook container */
.flipbook {
width: 100%;
height: auto;
overflow: hidden;
position: relative;
}
/* Style for pages */
.page {
width: 100%;
height: auto;
display: none;
}
/* Style for active page */
.active {
display: block;
}
</style>
</head>
<body>
<div class="flipbook">
<!-- Pages -->
<div class="page active">Page 1</div>
<div class="page">Page 2</div>
<!-- Add more pages as needed -->
</div>
<!-- Controls -->
<button onclick="prevPage()">Previous</button>
<button onclick="nextPage()">Next</button>
<input type="range" min="1" max="40" value="1" id="pageSlider" onchange="goToPage(this.value)">
<span id="pageNumber">1</span>
<script>
// JavaScript functions for controlling flipbook
let currentPage = 1;
const totalPages = 40;
const pageSlider = document.getElementById("pageSlider");
const pageNumber = document.getElementById("pageNumber");
function prevPage() {
if (currentPage > 1) {
currentPage--;
updatePage();
}
}
function nextPage() {
if (currentPage < totalPages) {
currentPage++;
updatePage();
}
}
function goToPage(page) {
currentPage = parseInt(page);
updatePage();
}
function updatePage() {
const pages = document.querySelectorAll(".page");
pages.forEach(page => page.classList.remove("active"));
pages[currentPage - 1].classList.add("active");
pageSlider.value = currentPage;
pageNumber.innerText = currentPage;
}
</script>
</body>
</html>
Text 23
HTML code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flipbook</title>
<style>
/* Style for the flipbook container */
.flipbook-container {
width: 100%;
max-width: 800px;
margin: 0 auto;
text-align: center;
position: relative;
}
/* Style for the page content */
.page-content {
height: 500px; /* Adjust as needed */
border: 1px solid #ccc;
background-color: #f0f0f0;
display: none;
}
/* Style for the active page */
.page-content.active {
display: block;
}
</style>
</head>
<body>
<div class="flipbook-container">
<!-- Previous button -->
<button id="prevBtn">Previous</button>
<!-- Page number slider -->
<input type="range" id="pageSlider" min="1" max="40" value="1" step="1">
<!-- Next button -->
<button id="nextBtn">Next</button>
<!-- Page contents -->
<div class="page-content active" id="page1">
Page 1 Content
</div>
<!-- Repeat the above div for each page -->
<!-- Example for page 2 -->
<div class="page-content" id="page2">
Page 2 Content
</div>
<!-- Repeat for pages 3 to 40 -->
</div>
<script>
// Get elements
const prevBtn = document.getElementById('prevBtn');
const nextBtn = document.getElementById('nextBtn');
const pageSlider = document.getElementById('pageSlider');
// Add event listeners
prevBtn.addEventListener('click', goToPreviousPage);
nextBtn.addEventListener('click', goToNextPage);
pageSlider.addEventListener('input', goToPage);
// Function to navigate to previous page
function goToPreviousPage() {
const currentPage = parseInt(pageSlider.value);
if (currentPage > 1) {
pageSlider.value = currentPage - 1;
showPage(currentPage - 1);
}
}
// Function to navigate to next page
function goToNextPage() {
const currentPage = parseInt(pageSlider.value);
if (currentPage < 40) {
pageSlider.value = currentPage + 1;
showPage(currentPage + 1);
}
}
// Function to navigate to a specific page
function goToPage() {
const pageNumber = parseInt(pageSlider.value);
showPage(pageNumber);
}
// Function to show a specific page
function showPage(pageNumber) {
// Hide all pages
const pages = document.querySelectorAll('.page-content');
pages.forEach(page => page.classList.remove('active'));
// Show the selected page
const selectedPage = document.getElementById('page' + pageNumber);
if (selectedPage) {
selectedPage.classList.add('active');
}
}
</script>
</body>
</html>
Text 22
Html code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Flipbook</title>
<style>
.container {
width: 100%;
text-align: center;
}
.page {
width: 100%;
height: 500px; /* Adjust height as needed */
background-color: lightgray;
display: none;
}
#currentPage {
margin-top: 10px;
}
</style>
</head>
<body>
<div class="container">
<button onclick="prevPage()">Previous</button>
<span id="currentPage">1</span>
<input type="range" id="pageSlider" min="1" max="10" value="1" onchange="changePage()">
<button onclick="nextPage()">Next</button>
</div>
<div id="page1" class="page" style="display: block;">1
<!-- Content of page 1 -->
</div>
<div id="page2" class="page">2
<!-- Content of page 2 -->
</div>
<!-- Add more pages as needed -->
<div id="page3" class="page">3
<!-- Content of page 3 -->
</div>
<!-- Add more pages as needed -->
<script>
let currentPage = 1;
const totalPages = 10; // Update this with the total number of pages
function showPage(pageNum) {
document.querySelectorAll('.page').forEach(page => {
page.style.display = 'none';
});
document.getElementById(`page${pageNum}`).style.display = 'block';
document.getElementById('currentPage').textContent = pageNum;
document.getElementById('pageSlider').value = pageNum;
}
function nextPage() {
if (currentPage < totalPages) {
currentPage++;
showPage(currentPage);
}
}
function prevPage() {
if (currentPage > 1) {
currentPage--;
showPage(currentPage);
}
}
function changePage() {
currentPage = parseInt(document.getElementById('pageSlider').value);
showPage(currentPage);
}
showPage(currentPage);
</script>
</body>
</html>