如何利用CSS3实现3D翻书效果

这篇文章主要介绍了css3实现3d翻书效果,基于css3新属性animation及transform实现类似翻书效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

先上效果图:(样式有点丑,可以忽略一下下,效果出来了就好,后期加到其他项目中方便更改0.0)

如何利用CSS3实现3D翻书效果

类似翻书效果,原本的意思是使用JS来控制的,点击一次之后使用setInterval去控制书页翻过去的动画,当书页翻转180°之后,清除掉setInterval,但当我连续点击,那之前没有翻转180°的书页将无法继续完成之前的动作,可以用清除setInterval的方式,但总感觉动画效果不好,当然还有其他解决办法,但突然想到,CSS3为我们提供了animation,我们为什么不去使用使用呢,只要为加上animation动画就可以直接避免这个问题,animation动画默认是每次都执行完动画,所以,当出现连点的时候,就会像图中看到的那样,每一页都自然翻页,下面贴上代码,及实现步骤:
注:本实例JS部分均以原生JS编写,不善用原生JS的,可用jQuery等对三方框架改写
html部分:(这部分真心·····,算了,丑就丑点吧~.~)

        

        

            1            2        

        

            3            4        

        

            5            6        

        

            7            8        

        

            9            10        

        

            11            12        

        

            13            14        

        

            15            16        

        

            17            18        

        

            19            20        

                

登录后复制

CSS部分:(通过改变transform中rotatey的值,来实现书页的翻转效果)

立即学习“前端免费学习笔记(深入)”;

           .book{               width: 460px;               height: 300px;               position: relative;               margin: 150px 400px;               -webkit-transform-style: preserve-3d;               -moz-transform-style: preserve-3d;               -ms-transform-style: preserve-3d;               transform-style: preserve-3d;               transform: rotatex(30deg);           }           .page{               width: 230px;               height: 300px;               border: 1px solid #666;               position: absolute;               rightright: 0;               transform-origin: left;               transform-style: preserve-3d;               backface-visibility:hidden;               font-size: 60px;               text-align: center;               line-height: 300px;           }           .page span{               display: block;               width: 100%;               position: absolute;               background-color: #00FFFF;           }           .page span:nth-child(2){               transform: rotatey(-180deg);               backface-visibility:hidden;           }           /*以下两个动画可以只使用第一个,animation中有reverse,可以反向执行动画,             使用时需要在JS中点击上一页时添加改属性值*/        /*翻书下一页的动画*/        @keyframes page {               0%{                   transform: rotatey(0deg);               }               100%{                   transform: rotatey(-180deg);                   z-index: 10;               }           }           /*翻书上一页的动画*/        @keyframes page1 {               0%{                   transform: rotatey(-180deg);                   z-index: 10;               }               100%{                   transform: rotatey(0deg);               }           }       

登录后复制

JS部分(JS部分主要实现点击上/下一页时,为相应的p添加animation属性)

       var before = document.querySelector("#before");       var after = document.querySelector("#after");       var book = document.querySelector(".book");       var page = document.getElementsByClassName("page"); 7     rotate();       function rotate(){           var middle = 0;12         for(var z=0;z<book.children.length;z++){               page[z].style.zIndex = book.children.length-z;           }           after.onclick = function(){               if(middle != book.children.length){                   page[middle].style.animation = "page 1.5s linear 1 forwards";                   middle++;               }else{                   middle = book.children.length;               }           };           before.onclick = function(){               if(middle != 0){                   page[middle-1].style.animation = "page1 1.5s linear 1 forwards";                   middle--;           }else{               middle = 0;               }           }       }   

登录后复制

关于最后JS部分,主要作用在于,当点击上/下一页时,为相应的p添加animation属性,具体animation的详解,还是需要查看API。
 
介于兼容性的问题,这里比较好的解决办法是添加class,而不是去添加animation,为适应更多浏览器,需要添加前缀-webkit-、-moz-·······,所以在一个类中写好这些东西,直接添加类就可以了,或者写一个函数,封装好,能直接输出需要的字符串就好。

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

js和CSS3实现卡牌旋转切换效果

CSS3 3D旋转rotate效果的使用介绍

以上就是如何利用CSS3实现3D翻书效果的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2895748.html

(0)
上一篇 2025年3月10日 23:03:01
下一篇 2025年2月24日 09:14:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 利用CSS3来匹配横屏竖屏的方法

    这篇文章主要介绍了使用css3来匹配横屏竖屏的简单方法,主要使用到了css3中新加入的@media,需要的朋友可以参考下 写在同一个CSS中  @media screen and (orientation: portrait) {     …

    编程技术 2025年3月10日
    200
  • 使用CSS3编写灰阶滤镜来制作黑白照片效果

    这篇文章主要介绍了使用css3编写灰阶滤镜来制作黑白照片效果的方法,css3中的filter十分强大,文中还介绍了对ie兼容的方法,需要的朋友可以参考下 CSS3 中的滤镜(filter)功能让我们轻松方便简单的处理图片,而不需要使用 Ph…

    2025年3月10日
    200
  • 利用CSS3制作的鼠标悬停时边框旋转

    本文给大家分享一段css3代码实现鼠标悬停时边框旋转的效果,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下 下面以2017年新年祝福语为例给大家展示下效果。 纯CSS3实现的鼠标悬停时边框旋转的效果: 实现代码如下,代码中注释已…

    2025年3月10日
    200
  • 两种CSS3圆角和渐变的常用功能

    这篇文章主要介绍了css3圆角和渐变2种常用功能详解 的相关资料,需要的朋友可以参考下 Css3圆角讲解:想必大家对于图片,背景圆角,都不陌生吧, 圆角语法:border-radius:圆角值; CSS3圆角的优点 传统的圆角生成方案,必须…

    2025年3月10日 编程技术
    200
  • 关于HTML5和CSS3实现时钟的效果

    利用html5,css实现钟摆效果 ,在项目中经常会遇到,今天把基于html5+css3实现简单的时钟效果的实现代码分享到脚本之家平台,需要的朋友参考下吧 目的: 利用html5,css实现钟摆效果 知识点: 1) 利用position/l…

    编程技术 2025年3月10日
    200
  • CSS3中使用RGBa来调节透明度的方法

    这篇文章主要介绍了css3中使用rgba来调节透明度的教程,rgba是rgb色彩模型的一个扩展,这个缩写词代表红绿蓝三原色的首字母,alpha值代表颜色的透明度或者说不透明度,需要的朋友可以参考下 在 CSS3 中,增加了一个 opacit…

    2025年3月10日
    200
  • 使用 css3 实现圆形进度条的方法

    本篇文章主要介绍了使用 css3 实现圆形进度条的示例,这里整理了详细的代码,非常具有实用价值,需要的朋友可以参考下 在开发微信小程序的时候,遇到圆形进度条的需求。使用canvas绘图比较麻烦: 1、为了实现在不同屏幕上面的适配,必须动态的…

    2025年3月10日
    200
  • 利用SVG和CSS3实现炫酷的边框动画

    这篇文章主要介绍了利用svg和css3来实现一个炫酷的边框动画,不使用javascript使得编写过程轻松了不少,需要的朋友可以参考下 今天我们来探索一下Carl Philipe Brenner的网站上一个微妙而有趣的动画效果。当鼠标经过网…

    2025年3月10日
    200
  • 利用CSS3实现了八组超炫酷鼠标滑过图片动画

    这篇文章主要为大家分享了8组超炫酷纯css3鼠标滑过图片动画效果,每一个动画效果都很精彩,值得大家学习借鉴,感兴趣的小伙伴们可以参考一下 这是一款效果超酷的纯CSS3鼠标滑过图片动画效果,它共分为8组不同的效果,它们分别在鼠标滑过图片时,以…

    2025年3月10日
    200
  • CSS3实现的图片放大镜特效

    一款用纯css3实现的图片放大镜特效。页面打开五个小图显示于页面。当鼠标经过图片时,当前图片以灰色背景图的形式展示,需要的朋友不要错过 今天要给大家分享的的一款用纯css3实现的图片放大镜特效。页面打开五个小图显示于页面。当鼠标经过图片时,…

    2025年3月10日
    200

发表回复

登录后才能评论