HTML5 3D書本翻頁動畫
本文由碼農網 – 小峰原創,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃!
這是一款十分炫酷的HTML5 3D書本翻頁動畫,效果相對比較簡單,拖拽滑鼠模擬用手翻頁,更漂亮的是翻頁過程中,呈現出逼真的3D立體效果。書本中的文字和圖片也會3D展示,非常酷。
HTML程式碼
<div class="book p3d"> <div class="back-cover p3d"> <div class="page back flip"></div> <div class="page front p3d"> <div class="shadow"></div> <div class="dino"></div> </div> </div> <div class="front-cover p3d"> <div class="page front flip p3d"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam fermentum nisl quis nulla eleifend dignissim. Curabitur varius lobortis tincidunt. Maecenas gravida, nulla quis luctus imperdiet, ipsum nibh consectetur ante, in sodales massa tortor eget neque. Donec porta ligula massa, id sagittis est. Ut nisl tellus, faucibus nec feugiat ut, laoreet iaculis felis. Suspendisse ultrices mauris vel tellus suscipit commodo. Integer vitae tortor erat. Pellentesque non tempor nisi.</p> </div> <div class="page back"></div> </div> </div>
CSS程式碼
.book { width: 300px; height: 300px; margin-top: -150px; position: absolute; left: 50%; top: 50%; -webkit-transform: rotateX(60deg); -moz-transform: rotateX(60deg); -ms-transform: rotateX(60deg); -o-transform: rotateX(60deg); transform: rotateX(60deg); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; -o-user-select: none; user-select: none; } .page { width: 300px; height: 300px; padding: 1em; position: absolute; left: 0; top: 0; text-indent: 2em; } .front { background-color: #d93e2b; } .back { background-color: #fff; } .front-cover { cursor: move; -webkit-transform-origin: 0 50%; -moz-transform-origin: 0 50%; -ms-transform-origin: 0 50%; -o-transform-origin: 0 50%; transform-origin: 0 50%; -webkit-transform: rotateY(0deg); -moz-transform: rotateY(0deg); -ms-transform: rotateY(0deg); -o-transform: rotateY(0deg); transform: rotateY(0deg); } .front-cover .back { background-image: url(mdn.png); background-repeat: no-repeat; background-position: 50% 50%; -webkit-transform: translateZ(3px); -moz-transform: translateZ(3px); -ms-transform: translateZ(3px); -o-transform: translateZ(3px); transform: translateZ(3px); } .back-cover .back { -webkit-transform: translateZ(-3px); -moz-transform: translateZ(-3px); -ms-transform: translateZ(-3px); -o-transform: translateZ(-3px); transform: translateZ(-3px); } .p3d { -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; } .flip { -webkit-transform: rotateY(180deg); -moz-transform: rotateY(180deg); -ms-transform: rotateY(180deg); -o-transform: rotateY(180deg); transform: rotateY(180deg); } .dino, .shadow { width: 196px; height: 132px; position: absolute; left: 60px; top: 60px; -webkit-transform-origin: 0 100%; -moz-transform-origin: 0 100%; -ms-transform-origin: 0 100%; -o-transform-origin: 0 100%; transform-origin: 0 100%; } .dino { background: url(dino.png) no-repeat; } .shadow { background: url(shadow.png) no-repeat; }
JavaScript程式碼
(function (window, document) { var prefixes = ['Webkit', 'Moz', 'ms', 'O', ''], book = document.querySelectorAll('.book')[0], page = document.querySelectorAll('.front-cover')[0], dino = document.querySelectorAll('.dino')[0], shadow = document.querySelectorAll('.shadow')[0], hold = false, centerPoint = window.innerWidth / 2, pageSize = 300, clamp = function (val, min, max) { return Math.max(min, Math.min(val, max)); }; page.onmousedown = function () { hold = true; }; window.onmouseup = function () { if (hold) { hold = false; } }; window.onresize = function () { centerPoint = window.innerWidth / 2; }; window.onmousemove = function (evt) { if (!hold) { return; } var angle = clamp((centerPoint - evt.pageX + pageSize) / pageSize * -90, -180, 0), i, j; for (i = 0, j = prefixes.length; i < j; i++) { book.style[prefixes[i] + 'Transform'] = 'rotateX(' + (60 + angle / 8) + 'deg)'; page.style[prefixes[i] + 'Transform'] = 'rotateY(' + angle + 'deg)'; dino.style[prefixes[i] + 'Transform'] = 'rotateX(' + (angle / 2) + 'deg)'; shadow.style[prefixes[i] + 'Transform'] = 'translateZ(1px) skewX(' + (angle / 8) + 'deg)'; } }; })(window, document);
以上就是HTML5 3D書本翻頁動畫的示例程式碼,有興趣的朋友可以下載完整程式碼研究。
本文連結:http://www.codeceo.com/article/html5-3d-book-paging.html
本文作者:碼農網 – 小峰
[ 原創作品,轉載必須在正文中標註並保留原文連結和作者等資訊。]
相關文章
- 6個超炫酷的HTML5電子書翻頁動畫HTML動畫
- html5 學習-3d動畫HTML3D動畫
- CSS3 3D翻轉動畫CSSS33D動畫
- 超酷HTML5 3D動畫精選HTML3D動畫
- 翻譯完了一本書
- HTML5 3D衣服搖擺動畫特效HTML3D動畫特效
- [譯] 使用 Flutter 製作 3D 翻轉動畫Flutter3D動畫
- ul>li*3 實現翻書動畫效果動畫
- 8個經典HTML5 3D動畫賞析HTML3D動畫
- 8款效果驚豔的HTML5 3D動畫HTML3D動畫
- HTML5/jQuery動畫應用 3D視覺效果HTMLjQuery動畫3D視覺
- css3實現的書本立體翻頁效果程式碼例項CSSS3
- 打算翻譯一本機器學習的書機器學習
- android 電子書翻頁效果Android
- HTML5網頁動畫工具:Adobe EdgeHTML網頁動畫
- HTML5實現的震撼3D焦點圖動畫HTML3D動畫
- Android 書本開啟和關閉動畫Android動畫
- 對幾本書名翻譯的吐槽
- Flutter實戰動畫番外篇-翻頁效果實現Flutter動畫
- 怎麼實現一個3d翻書效果3D
- 初學HTML5,可以看的6本書!HTML
- 9款令人驚歎的HTML5 3D動畫應用HTML3D動畫
- 8 個 3D 視覺效果的 HTML5 動畫欣賞3D視覺HTML動畫
- 分享7款超炫的HTML5 Canvas 3D動畫效果HTMLCanvas3D動畫
- 逼真的HTML5 3D水波動畫 可多視角瀏覽HTML3D動畫
- 建議翻譯高木貞治的幾本書
- 透過WebGL 3D看動畫Easing函式本質Web3D動畫函式
- 9 個超絢麗的 HTML5 3D 圖片動畫特效HTML3D動畫特效
- 多視角3D可旋轉的HTML5 Logo動畫3DHTMLGo動畫
- 透過HT for Web 3D看動畫Easing函式本質Web3D動畫函式
- textview - 翻轉動畫TextView動畫
- Flutter 3D 動畫Flutter3D動畫
- 從頁面底部回到頂部+動畫效果 & 翻頁後從按鈕處回到頁面頂部動畫
- 我寫了本開源書:《3D程式設計模式》3D程式設計設計模式
- HTML5動畫API—— requestAnimationFrameHTML動畫APIrequestAnimationFrame
- HTML5 小動畫例子HTML動畫
- flask 分頁 | 翻頁Flask
- 基於HT的CSG功能構建HTML5的3D書架HTML3D