`

CSS实现书籍3D翻页效果

阅读更多

CSS实现书籍3D翻页效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>

        html, body {
            height: 100%;
            overflow: hidden;
        }

        body {
            background: -webkit-radial-gradient(#E4CEA6, #9C8763);
            background: radial-gradient(#E4CEA6, #9C8763);
            -webkit-perspective: 900px;
            perspective: 900px;
            margin: 0;
        }

        #flip {
            -webkit-animation: wrapper 6s ease-in-out infinite;
            animation: wrapper 6s ease-in-out infinite;
            height: 350px;
            width: 253px;
            position: absolute;
            left: 50%;
            top: 30%;
            -webkit-transform: translateZ(-10px) rotateX(60deg) rotateZ(29deg) !important;
            transform: translateZ(-10px) rotateX(60deg) rotateZ(29deg) !important;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-transform-origin: 0 0 0;
            transform-origin: 0 0 0;
        }

        @-webkit-keyframes wrapper {
            50% {
                -webkit-transform: translateZ(-10px) rotateX(60deg) rotateZ(29deg) rotateY(180deg);
                transform: translateZ(-10px) rotateX(60deg) rotateZ(29deg) rotateY(180deg);
            }
        }

        @keyframes wrapper {
            50% {
                -webkit-transform: translateZ(-10px) rotateX(60deg) rotateZ(29deg) rotateY(180deg);
                transform: translateZ(-10px) rotateX(60deg) rotateZ(29deg) rotateY(180deg);
            }
        }

        #flip div {
            height: 350px;
            width: 24px;
            position: absolute;
            left: calc(100% - 1px);
            -webkit-transform-origin: 0 100%;
            transform-origin: 0 100%;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            background-size: 253px 350px;
        }

        #flip #front,
        #flip #front div {
            background-image: url(http://img.hoop8.com/attachments/1512/846611208706.png);
            box-shadow: inset rgba(255, 255, 255, 0.3) 0px -1px 0 0, #35582C 0px 1px 0px 0px;
        }

        #flip #front > div > div > div > div > div > div > div > div > div > div {
            box-shadow: inset rgba(255, 255, 255, 0.3) -1px -1px 0 0, #35582C 1px 1px 0px 0px;
        }

        #flip #back {
            -webkit-transform: rotateY(.2deg);
            transform: rotateY(.2deg);
        }

        /* avoid pages overlap */
        #flip #back,
        #flip #back div {
            background-image: url(http://img.hoop8.com/attachments/1512/846611208706.png);
        }

        #flip > div {
            left: 0;
            background-position-x: 0;
        }

        #flip div > div {
            background-position-x: -23px;
            -webkit-animation: page 6s ease-in-out infinite;
            animation: page 6s ease-in-out infinite;
        }

        #flip div > div > div {
            background-position-x: -46px;
        }

        #flip div > div > div > div {
            background-position-x: -69px;
        }

        #flip div > div > div > div > div {
            background-position-x: -92px;
        }

        #flip div > div > div > div > div > div {
            background-position-x: -115px;
        }

        #flip div > div > div > div > div > div > div {
            background-position-x: -138px;
        }

        #flip div > div > div > div > div > div > div > div {
            background-position-x: -161px;
        }

        #flip div > div > div > div > div > div > div > div > div {
            background-position-x: -184px;
        }

        #flip div > div > div > div > div > div > div > div > div > div {
            background-position-x: -207px;
        }

        #flip div > div > div > div > div > div > div > div > div > div > div {
            background-position-x: -229px;
        }

        /* the more pieces you have, the smoother the bend is */

        @-webkit-keyframes page {
            15% {
                -webkit-transform: rotateY(-10deg);
                transform: rotateY(-10deg);
            }
            50% {
                -webkit-transform: rotateY(-2deg);
                transform: rotateY(-2deg);
            }
            65% {
                -webkit-transform: rotateY(10deg);
                transform: rotateY(10deg);
            }
            100% {
                -webkit-transform: rotateY(0deg);
                transform: rotateY(0deg);
            }
        }

        @keyframes page {
            15% {
                -webkit-transform: rotateY(-10deg);
                transform: rotateY(-10deg);
            }
            50% {
                -webkit-transform: rotateY(-2deg);
                transform: rotateY(-2deg);
            }
            65% {
                -webkit-transform: rotateY(10deg);
                transform: rotateY(10deg);
            }
            100% {
                -webkit-transform: rotateY(0deg);
                transform: rotateY(0deg);
            }
        }

        #book {
            width: 248px;
            height: 350px;
            position: absolute;
            left: 50%;
            top: 30%;
            -webkit-transform: translate3d(0px, 0px, -10px) rotateX(60deg) rotateZ(29deg);
            transform: translate3d(0px, 0px, -10px) rotateX(60deg) rotateZ(29deg);
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-transform-origin: 0 0 0;
        }

        @-webkit-keyframes book {
            25% {
                box-shadow: inset rgba(0, 0, 0, .2) 0px 0 50px -140px;
            }
            50% {
                box-shadow: inset rgba(0, 0, 0, .2) 0px 0 50px -140px;
            }
            100% {
                box-shadow: inset rgba(0, 0, 0, .2) 510px 0 50px -140px;
            }
        }

        @keyframes book {
            25% {
                box-shadow: inset rgba(0, 0, 0, .2) 0px 0 50px -140px;
            }
            50% {
                box-shadow: inset rgba(0, 0, 0, .2) 0px 0 50px -140px;
            }
            100% {
                box-shadow: inset rgba(0, 0, 0, .2) 510px 0 50px -140px;
            }
        }

        #book #top {
            -webkit-animation: book 6s ease-in-out infinite;
            animation: book 6s ease-in-out infinite;
            background: url(http://img.hoop8.com/attachments/1512/900611208706.png);
            background-size: 100% 100%;
            background-position: 100%;
            box-shadow: inset rgba(0, 0, 0, 0.2) 510px 0 50px -140px;
            height: 350px;
            width: 248px;
            position: absolute;
            left: 0;
            top: 0;
        }

        #book #bottom {
            background: #E7DED1;
            box-shadow: rgba(83, 53, 13, 0.2) 4px 2px 1px,
            #35582C 1px 1px 0px 0px;
            height: 350px;
            width: 253px;
            position: absolute;
            -webkit-transform: translateZ(-40px);
            transform: translateZ(-40px);
            left: 0;
            top: 0;
        }

        #book #shadow {
            -webkit-animation: shadow 6s ease-in-out infinite;
            animation: shadow 6s ease-in-out infinite;
            box-shadow: inset rgba(83, 53, 13, 0) -200px 0 150px -140px;
            height: 350px;
            width: 248px;
            position: absolute;
            left: -100%;
            top: 0;
            -webkit-transform: translateZ(-40px);
            transform: translateZ(-40px);
        }

        @-webkit-keyframes shadow {
            20% {
                box-shadow: inset rgba(83, 53, 13, 0) -200px 0 150px -140px;
            }
            50% {
                box-shadow: inset rgba(83, 53, 13, 0.3) -350px 0 150px -140px;
            }
            60% {
                box-shadow: inset rgba(83, 53, 13, 0) -200px 0 150px -140px;
            }
        }

        @keyframes shadow {
            20% {
                box-shadow: inset rgba(83, 53, 13, 0) -200px 0 150px -140px;
            }
            50% {
                box-shadow: inset rgba(83, 53, 13, 0.3) -350px 0 150px -140px;
            }
            60% {
                box-shadow: inset rgba(83, 53, 13, 0) -200px 0 150px -140px;
            }
        }

        #book #front {
            background: -webkit-linear-gradient(top, #FCF6EA, #D8D1C3);
            background-size: 100% 2px;
            box-shadow: inset #C2BBA2 3px 0 0px, #35582C -2px 1px 0px 0px;
            height: 40px;
            width: 251px;
            left: -3px;
            position: absolute;
            bottom: -40px;
            -webkit-transform: rotateX(-90deg);
            transform: rotateX(-90deg);
            -webkit-transform-origin: 50% 0;
            transform-origin: 50% 0;
            border-top-left-radius: 5px;
            border-bottom-left-radius: 5px;
        }

        #book #right {
            background: -webkit-linear-gradient(left, #DDD2BB, #BDB3A0);
            background-size: 2px 100%;
            box-shadow: inset rgba(0, 0, 0, 0) 0 0 0 20px;
            height: 100%;
            width: 40px;
            position: absolute;
            right: -40px;
            top: 0;
            -webkit-transform: rotateY(90deg);
            transform: rotateY(90deg);
            -webkit-transform-origin: 0 50%;
            transform-origin: 0 50%;
        }

        h4 {
            position: absolute;
            bottom: 20px;
            left: 20px;
            margin: 0;
            font-weight: 200;
            opacity: 1;
            font-family: sans-serif;
            color: rgba(0, 0, 0, 0.3);
        }

        /* bookmark */

        #bookmark {
            position: absolute;
            -webkit-transform: translate3d(20px, 350px, -16px);
            transform: translate3d(20px, 350px, -16px);
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
        }

        #bookmark div {
            background: rgb(151, 88, 88);
            box-shadow: rgb(133, 77, 77) 1px 0;
            height: 10px;
            width: 20px;
            position: absolute;
            top: 9px;
            -webkit-transform: rotateX(-14deg);
            transform: rotateX(-14deg);
            -webkit-transform-origin: 50% 0;
            transform-origin: 50% 0;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
        }

        #bookmark > div > div {
            background: -webkit-linear-gradient(top, rgb(151, 88, 88), rgb(189, 123, 123), rgb(151, 88, 88));
            background: linear-gradient(top, rgb(151, 88, 88), rgb(189, 123, 123), rgb(151, 88, 88));
        }

        #bookmark > div > div > div {
            background: -webkit-linear-gradient(top, rgb(151, 88, 88), rgb(133, 77, 77));
            background: linear-gradient(top, rgb(151, 88, 88), rgb(133, 77, 77));
        }

        #bookmark > div > div > div > div {
            background: none;
            border-top: 0px solid transparent;
            border-right: 10px solid rgb(133, 77, 77);
            border-bottom: 10px solid transparent;
            border-left: 10px solid rgb(133, 77, 77);
            height: 0;
            width: 0;
        }

        #bookmark-shadow {
            background: -webkit-linear-gradient(top, rgba(83, 53, 13, 0.25), rgba(83, 53, 13, 0.11));
            background: linear-gradient(top, rgba(83, 53, 13, 0.25), rgba(83, 53, 13, 0.11));
            height: 15px;
            width: 20px;
            position: absolute;
            -webkit-transform: translate3d(12px, 350px, -25px) rotateX(-90deg) skewX(20deg);
            transform: translate3d(12px, 350px, -25px) rotateX(-90deg) skewX(20deg);
            -webkit-transform-origin: 0 0;
            transform-origin: 0 0;
        }
    </style>
</head>
<body>
<!-- Please heart it if you like! -->
<div id='book'>
    <div id='top'></div>
    <div id='front'></div>
    <div id='right'></div>
    <div id='bottom'></div>
    <div id='shadow'></div>
    <div id='bookmark'>
        <div>
            <div>
                <div>
                    <div></div>
                </div>
            </div>
        </div>
    </div>
    <div id='bookmark-shadow'></div>
</div>
<div id='flip'>
    <div id='front'>
        <div>
            <div>
                <div>
                    <div>
                        <div>
                            <div>
                                <div>
                                    <div>
                                        <div>
                                            <div></div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div id='back'>
        <div>
            <div>
                <div>
                    <div>
                        <div>
                            <div>
                                <div>
                                    <div>
                                        <div>
                                            <div></div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
<h4>CSS实现3D翻书效果</h4>
</body>
</html>

 

 

 

 

 

 

 

 

 

 

.

分享到:
评论

相关推荐

    css3立体3D 翻页效果

    在CSS3中,立体3D翻页效果是一种高级的网页设计技术,它为网页增添了动态和交互性,使用户能够以模拟真实书籍翻页的方式浏览内容。这种效果通常用于电子书、画册或者任何需要展示多页面内容的场景。下面我们将深入...

    3D图书翻页效果

    BookBlock是一个jQuery插件,可用于创建小册子的组件,允许一个“翻页”的导航。可以将任何内容,如图像或文本。该插件的结构转换只在需要时(即当翻转页面)的网页,并使用了一些阴影效果。 请在支持CSS3属性的...

    jQuery+css3实现3D翻书页面布局效果

    本示例"jQuery+css3实现3D翻书页面布局效果"正是这种技术的应用,通过结合强大的JavaScript库jQuery和现代CSS3技术,开发者可以轻松地创建出逼真的3D翻页动画。 首先,jQuery是一个轻量级的JavaScript库,它简化了...

    html5基于插件实现的3D电子书翻页效果源码.zip

    5. **插件**:描述中提到的"基于插件实现",可能指的是一个特定的JavaScript插件,如turn.js或bookblock.js等,这些插件专门设计用于创建3D翻页效果,可以减少从零开始实现此类功能的工作量。 6. **响应式设计**:...

    CSS3简洁版左右翻页电子书效果

    例如,翻页效果可能依赖于CSS3的3D转换、过渡(transition)和动画(animation)等特性,这些在Internet Explorer 9及以下版本中通常不被支持。为了确保更广泛的兼容性,开发者需要结合使用JavaScript库(如jQuery)...

    电子书 3D 翻页效果实现

    在电子书领域,3D翻页效果是一种模拟真实书籍翻页体验的技术,它为数字阅读带来了一种生动而直观的互动感受。这种效果通常由专门的软件或库来实现,如在描述中提到的"ireader"。在这里,我们将深入探讨3D翻页效果的...

    实现书籍翻页效果

    2. **3D变换**: CSS3中的3D变换是实现翻页效果的核心。通过transform属性,我们可以对元素进行旋转(rotateX, rotateY)、缩放(scale)等操作,模拟纸张在三维空间中的运动轨迹。 3. **透视(perspective)**: ...

    css翻页效果代码

    2. **3D Transforms**:为了实现逼真的翻页效果,我们需要利用CSS3的3D变换。通过`transform: perspective()`设置透视效果,`rotateX()`和`rotateY()`来实现页面在X轴或Y轴上的旋转,从而模拟出立体翻页的感觉。 3....

    微信小程序开发纸质翻页效果源码-小程序翻页效果 uniapp实现

    在uniapp中实现翻页效果,可以利用其提供的组件和API,结合CSS3的3D变换,实现流畅的翻页动画。 实现纸质翻页效果的关键技术点有以下几点: 1. **3D变换**:利用CSS3的`transform`属性,设置`rotateY`和`...

    3d翻页效果

    在IT行业中,3D翻页效果是一种常见的用户体验设计,它为数字阅读提供了模拟真实书籍翻页的视觉体验。这种效果通常应用于电子书、杂志、画册等应用中,旨在增加用户的沉浸感和互动性。下面将详细介绍3D翻页效果的实现...

    5种css3+jquery翻页效果(翻书效果)

    在这个项目中,CSS3的3D转换被用来创建逼真的翻页效果,通过`transform`属性,可以改变元素的大小、位置甚至形状,实现页面从一侧向另一侧平滑地“翻开”。 jQuery是一个广泛使用的JavaScript库,它简化了...

    纯CSS3实现的书籍自动翻页动画效果源码.zip

    在书籍翻页动画中,恰当的透视可以让翻页效果更具有立体感。 6. **伪元素和边框半径**:`::before`和`::after`伪元素可以用来添加额外的元素,比如书籍的封面和封底,通过调整边框半径,可以创建出书页的角部形状,...

    css制作翻页效果.rar

    在纯CSS实现的翻页效果中,主要依赖于`transform`属性,尤其是`rotate`和`perspective`。`rotate`用于旋转元素,而`perspective`则可以创建3D视角,让翻页看起来更立体。此外,`transition`属性用于定义元素从一种...

    HTML5 实现的图书翻页效果(附源码)

    图书翻页效果通常涉及到CSS3的3D变换、过渡和动画效果,这些特性让网页元素能够进行平滑、动态的改变。在HTML5中,我们可以通过创建两个页面元素,分别代表书的左右两页,然后通过CSS3的transform属性来模拟翻页动作...

    前端实现图书翻页(支持正向和逆向翻页)效果(含代码和演示视频)

    本项目采用HTML、CSS和JavaScript技术在浏览器环境中实现了图书翻页效果,不仅支持正向翻页,还支持逆向翻页,充分考虑了用户的不同需求。此外,项目还集成了语言转换功能,这在多语言网站或应用中尤其有用。 首先...

    纯CSS3实现真实翻书效果

    为了实现更逼真的翻页效果,我们还需要考虑阴影和透视。CSS3的`box-shadow`属性可以添加阴影,模拟光线照射在书页上的效果,而`perspective`属性则可以为整个翻书容器设置透视,使观察者看起来像是从一定距离外观看...

    真实书籍翻页效果

    总的来说,实现真实书籍翻页效果是一项结合了CSS3动画和JavaScript交互的综合技术,它需要开发者对这两方面都有深入的理解和熟练的运用。通过这样的技术,我们可以为用户带来更加生动、真实的在线阅读体验。

Global site tag (gtag.js) - Google Analytics