如何利用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翻书效果的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:31:43
下一篇 2025年12月24日 01:31:51

相关推荐

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

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

    好文分享 2025年12月24日
    000
  • 用css3实现走马灯的效果

    这篇文章主要介绍了纯css3实现走马灯效果,主要用到的css3技术有:keyframes、perspective、perspective-origin、transform(translate、rotate)、animation、transform-origin,有需要的小伙伴参考下 纯css3实现了…

    2025年12月24日
    000
  • 利用Css3和Js制作时钟的代码

    这篇文章主要介绍了关于利用Css3和Js制作时钟的代码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Css3+Js实现漂亮时钟,浏览器支持IE9/GoogleChrome/FireFox/Safari等等,感兴趣的朋友可以下载测试,希望对你学习css3有所帮助 Css3+Js 漂亮…

    2025年12月24日
    000
  • CSS3中线性颜色渐变的实现

    这篇文章主要介绍了css3中线性颜色渐变的一些实现方法,包括分safari和chrome的webkit内核与firefox的gecko内核两种情况,需要的朋友可以参考下 为了显示一个渐变而专门制作一个图片的做法是不灵活的,而且很快会成为一种不好的做法。但是遗憾的是,截至写这篇文章,可能还必须这样做,…

    2025年12月24日
    000
  • 利用CSS3实现的文字定时向上滚动

    大家以前基本是用javascript来实现文字定时向上滚动的效果,那么今天给大家分享下利用css3来实现这一效果,有需要的可以参考学习。 话不多说,直接上实例代码 moveUp ul,li{ margin:0; padding:0; } li{ list-style:none; } .contain…

    好文分享 2025年12月24日
    000
  • 利用css3仿造window7的开始菜单

    相当逼真,css3果然强悍。要留意的点依旧是哪几项,难点在于细节的微调,尤其是渐变背景的制作,css3中非常灵活,下次有机会,发篇css3渐变背景的详细教程。   相当逼真,css3果然强悍。友情提示:请勿在IE下浏览。来看下原作者的设计草图: 简明创建过程  第一步 :创建如下菜单结构 @@##@…

    2025年12月24日
    000
  • IE下模拟css3中box-shadow的效果

    这篇文章主要介绍了关于ie下模拟css3中box-shadow的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 在ie下模拟css3中的box-shadow(阴影)可以使用ie的Shadow(阴影)滤镜来实现,需要注意的是该滤镜必须配合background属性一起使用,否则该滤镜…

    好文分享 2025年12月24日
    000
  • 关于CSS3网格的的解析

    在这篇文章中,我们将来看一些css3新属性,从而用html和css处理网格的时候更容易。但首先让我们讨论一点html和css网格的历史,了解清楚为什么以前很困难 一、网格简史 曾几何时,我们的布局是一团糟。表格和框架是用于创建多列布局的主要工具。虽然他们能完成工作(但其实非常糟糕)。 把目光投向今天…

    2025年12月24日
    000
  • 如何使用css3实现input输入框颜色渐变发光的效果

    这篇文章主要介绍了关于如何使用css3实现input输入框颜色渐变发光的效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 css3都推出好久了,虽然各大主流浏览器对其兼容性还不是很好,特别是IE…但通过添加-moz- -webkit-这样的前缀可以在chrome和Firefox下获…

    好文分享 2025年12月24日
    000
  • 如何实现用css3显示隐藏一个div特效

    这篇文章主要介绍了关于如何实现用css3显示隐藏一个div特效,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 显示隐藏一个p特效的方法有很多,下为大家介绍下使用纯css3是如何实现的,感兴趣的朋友可以参考下 #showp { background-color:red; width:3…

    好文分享 2025年12月24日
    000
  • 如何用css3实现当鼠标移进去时当前亮其他变灰的效果

    这篇文章主要介绍了用css3实现当鼠标移进去时当前亮其他变灰效果,需要的朋友可以参考下 用css3实现鼠标移进去当前亮其他变灰 *{margin: 0;padding: 0;font-size:12px;} .wrapper{border: 1px #708090 solid;width: 900p…

    好文分享 2025年12月24日
    000
  • 如何使用CSS3中的calc()属性来表达尺寸

    这篇文章主要介绍了关于如何使用css3中的calc()属性来表达尺寸,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 calc()的用法十分巧妙,可以像我们在学校做数学应用题那样列式子来计算长度宽度等值,从而一定程度上实现自适应布局,下面我们就来介绍如何使用CSS3中的calc()属性…

    好文分享 2025年12月24日
    000
  • 如何使用HTML和CSS3绘制基本卡通图案

    这篇文章主要介绍了使用css3绘制基本卡通图案的示例分享,不过必须承认,这样做的代码量并不是很少…well,需要的朋友可以参考下 纯HTML+CSS实现阿童木头像先上最终效果图: 在里面主要用的了CSS中的几个属性:position—定位;border-radius—圆角;box-sha…

    2025年12月24日 好文分享
    000
  • 关于CSS3中常见transformation图形变化的用法

    这篇文章主要介绍了css3的常见transformation图形变化用法小结,共整理了旋转、缩放、平移、倾斜以及矩阵的使用方法,需要的朋友可以参考下 1.rotate旋转旋转图片,单位deg,为“度”的意思 -moz-transform: rotate(20deg); -webkit-transfo…

    2025年12月24日 好文分享
    000
  • 使用CSS3实现扇形动画菜单

    这篇文章主要给大家介绍了利用纯css3实现扇形动画菜单(简化版)实例源码,文中给出了完整的示例源码,实现后的效果非常动感漂亮时尚,需要的朋友可以参考借鉴,下面来一起看看吧。 之前的一篇文章介绍这种效果的实现,但实现代码太过繁琐,所以在这里分享以下简化版的实现方法,有需要的可以参考学习。 原文章请点击…

    2025年12月24日
    000
  • 关于CSS3中currentColor关键字的使用方法

    这篇文章主要介绍了CSS3中currentColor关键字的妙用,合理地使用currentColor往往会让CSS代码更加简洁,同时也能与SVG图标很好地结合使用,需要的朋友可以参考下 初识 它是何物?具有怎样的功效?它从哪里来?带着这些疑问我们继续。 下面是来自MDN的解释: currentCol…

    2025年12月24日 好文分享
    000
  • 关于CSS3定位和浮动的解析

    这篇文章主要为大家详细介绍了css3定位和浮动的概念,以及实例代码讲解css3定位和浮动的使用方法,感兴趣的小伙伴们可以参考一下 本文为大家分享CSS3定位和浮动的基础概念,与使用方法,供大家参考,具体内容如下 一、定位 1、 css定位: 改变元素在页面上的位置 立即学习“前端免费学习笔记(深入)…

    好文分享 2025年12月24日
    000
  • 如何使用CSS3中appearance属性改变元素的外观

    这篇文章主要介绍了关于如何使用css3中appearance属性改变元素的外观,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 大家都知道每个浏览器对HTML元素渲染都不一样,比如说button,在chrome和ff中,渲染出来的效果都是不尽相同的。这样一来就有了今天这个思路,利用浏览…

    2025年12月24日
    000
  • 关于CSS3的@font face规则的解析

    这篇文章主要介绍了真正了解css3背景下的@font face规则,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 很多人只要一提到 @font face 规则,心中就会不由自主“哦~~”的一声:“这个我知道,可以用来生成自定义字符小图标!”话是没错,问题在于很多人就以为生成字符小图标就是 @fo…

    2025年12月24日 好文分享
    000
  • 如何使用CSS3制作彩色进度条样式

    这篇文章主要介绍了关于如何使用css3制作彩色进度条样式,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 用CSS3的border-radius、box-shadow、transition、-moz-linear-gradient、-webkit-gradient等样式就可以完成一个时…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信