css3實現(xiàn)書本翻頁效果的示例代碼

關(guān)鍵要點:
1.css3 3d動畫的掌握
2.如何解決翻轉(zhuǎn)后頁面內(nèi)容的改變
3.如何保持書本一直處于居中位置
代碼總覽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> .book{ margin: auto; margin-top: 2rem; transform: translate(0,0); perspective: 5000px; max-width: 40%; height: 800px; position: relative; transition:all 1s ease; } .page{ position: absolute; width: 100%; height: 100%; top: 0; right: 0; background-color: pink; cursor: pointer; transition:all 1s ease; transform-origin: left center; transform-style: preserve-3d; } .active{ z-index: 1; } .page.flipped{ transform:rotateY(-180deg) } .back,.front{ text-align: center; position: absolute; backface-visibility: hidden; width: 100%; height: 100%; } .back{ transform:rotateY(180deg) } </style> <body> <div class="book"> <div class="page active"> <div class="front">封面</div> <div class="back">1</div> </div> <div class="page"> <div class="front">2</div> <div class="back">3</div> </div> <div class="page"> <div class="front">4</div> <div class="back">5</div> </div> <div class="page"> <div class="front">6</div> <div class="back">尾面</div> </div> </div> </body> <script> let pages = document.getElementsByClassName('page') let book = document.getElementsByClassName('book')[0] function bookMove(drect){ if(drect==='right'){ book.style.transform = 'translate(50%,0)' }else if(drect==='left'){ book.style.transform = 'translate(0,0)' }else{ book.style.transform = 'translate(100%,0)' } } for(let i = 0;i<pages.length;i++){ pages[i].addEventListener('click',()=>{ if(pages[i].classList.contains('flipped')){ pages[i].classList.remove('flipped') pages[i].classList.add('active') if(i===0){ bookMove('left') } if(pages[i].nextElementSibling!==null){ pages[i].nextElementSibling.classList.remove('active') }else{ bookMove('right') } }else{ pages[i].classList.add('flipped') pages[i].classList.remove('active') if(i===0){ bookMove('right') } if(pages[i].nextElementSibling!==null){ pages[i].nextElementSibling.classList.add('active') }else{ bookMove('close') } } }) } </script> </html>
要點分析
css3動畫屬性解釋:
perspective: 5000px; 這里是透視屬性,可以簡單認為是實現(xiàn)了“近大遠小”效果的屬性
這里需要注意perspective需要設(shè)置在進行了3d變換的元素的父元素上,因為進行3d變換
的元素只有以父元素為背景做透視變換才能看到效果。
transition:all 1s ease;這里是過度屬性,可以設(shè)置過度時間以及應(yīng)用的緩動函數(shù)
transform-origin: left center;;這個屬性可以設(shè)置變換屬性的起始點,這里的意思是以 左中為點進行繞y軸旋轉(zhuǎn)
transform-style: preserve-3d;;這個屬性可以讓設(shè)置了該屬性的元素的子元素也能呈現(xiàn)相同 的基于父元素的透視,前提是子元素也進行了3d變換。
解決頁面內(nèi)容的顯示問題:
backface-visibility: hidden;讓進行了180度旋轉(zhuǎn)的元素隱藏,即背面不可視
運用這個屬性可以讓頁面1旋轉(zhuǎn)180度后隱藏而從-180度旋轉(zhuǎn)為0度的頁面2顯示,從而實現(xiàn) 書本內(nèi)容的切換
解決書本居中頁面的問題:
transform: translate(0,0) 通過平移屬性,解決此問題
剩下的就是用js添加點擊事件,控制元素樣式實現(xiàn)翻頁動畫
到此這篇關(guān)于css3實現(xiàn)書本翻頁效果的示例代碼的文章就介紹到這了,更多相關(guān)css3 書本翻頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
- 這篇文章主要介紹了css transform 翻頁動畫記錄的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學2020-12-04
- 這是一款十分炫酷的HTML5 3D書本翻頁動畫,效果相對比較簡單,拖拽鼠標模擬用手翻頁,需要的朋友們下面隨著小編來一起學習學習吧2019-08-28
- 這篇文章主要介紹了使用純CSS實現(xiàn)書籍3D翻頁效果的示例的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-19
- 這篇文章主要介紹了很酷的HTML5電子書翻頁動畫特效,這款HTML5翻頁動畫可以用鼠標拖動頁面來模擬手動翻頁的效果,也可以點擊書頁的邊框來快速翻頁,感興趣的小伙伴們可以參2016-02-25
- 這篇文章主要介紹了一個不錯的html 打印代碼支持翻頁,非常實用,需要的朋友可以參考下2014-09-17
- 滾動翻頁這樣的效果想必各位在瀏覽網(wǎng)頁的時候都有見過吧,本文將使用純css實現(xiàn)這個效果,不含有任何的輔助代碼,感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-22