首页前端开发HTMLHTML5 3D书本翻页动画的实现示例

HTML5 3D书本翻页动画的实现示例

时间2024-01-25 01:33:19发布访客分类HTML浏览878
导读:收集整理的这篇文章主要介绍了HTML5 3D书本翻页动画的实现示例,觉得挺不错的,现在分享给大家,也给大家做个参考。 这是一款十分炫酷的HTML5 3D书本翻页动画,效果相对比较简单,拖拽鼠标模拟用手翻页,更漂亮的是翻页过程中,呈...
收集整理的这篇文章主要介绍了HTML5 3D书本翻页动画的实现示例,觉得挺不错的,现在分享给大家,也给大家做个参考。

这是一款十分炫酷的HTML5 3D书本翻页动画,效果相对比较简单,拖拽鼠标模拟用手翻页,更漂亮的是翻页过程中,呈现出逼真的3D立体效果。书本中的文字和图片也会3D展示,非常酷。

HTML代码

 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);
    

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: three.js模拟实现太阳系行星体系...下一篇:详解canvas绘制网络字体几种方法猜你在找的html5相关文章 关于移动端h5开发相关内容总结2022-05-17html5教程-学表单的第二天2018-12-10html5教程-HTML5浏览器支持2018-12-10html5教程-HTML5智能表单2018-12-10html5教程-微信H5使用resLoader实现加载页效果2018-12-10html5教程-day01-初级-JS0-热身运动JS入门教程2018-12-10html5教程-html5shiv.js和respond.min.js2018-12-10html5教程-不同浏览器对于html5 audio标签和音频格式的兼容性2018-12-10html5教程-使用Html5实现手风琴案例2018-12-10html5教程-html5笔记2018-12-10 其他相关热搜词更多phpjavapython程序员load

若转载请注明出处: HTML5 3D书本翻页动画的实现示例
本文地址: https://pptw.com/jishu/585988.html
html5 canvas绘制网络字体的常用方法 详解canvas绘制网络字体几种方法

游客 回复需填写必要信息