使用CSS3 ,jQuery实现点击翻书动画效果,完整效果可在firefox中查看

HTML

<div class="desktop">
<div class="book">
<div class="page bg end">
<div class="front">谢谢阅读</div>
</div>
<div class="page">
<div class="back">
<p>JavaScript很重要</p>
</div>
<div class="front">JavaScript </div>
</div>
<div class="page">
<div class="back">
<p>CSS3非常强大</p>
</div>
<div class="front">CSS3</div>
</div>
<div class="page">
<div class="back">
<p>HTML5新特性不错哦</p>
</div>
<div class="front">HTML5</div>
</div>
<div class="page bg">
<div class="back">
<p>作者:M先生</p>
<p>个人博客:</p>
<a href="https://home.cnblogs.com/u/mp1994/">https://home.cnblogs.com/u/mp1994/</a>
</div>
<div class="front">前端技术栈</div>
</div>
</div>
</div>

CSS

/* 简单翻书动画开始 */
.desktop{
background-size: cover;
display: flex;
justify-content: center;
align-items: center;
width: 300px;
height: 400px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.book{
width: 300px;
height: 400px;
position: absolute;
/* 倾斜30度角 */
transform: rotateX(30deg);
transform-style: preserve-3d;
perspective:;
font-size: 30px;
color: #9ACD32;
box-shadow: 0 6px 10px 0 rgba(0,0,0,.6);
}
.page{
width: 100%;
height: 100%;
position: absolute;
background-color: #eee; /* 翻转轴left */
transform-origin: left;
/* backface-visibility: hidden; */
border-left: 2px solid saddlebrown;
box-sizing: border-box;
z-index: ;
}
.bg{
background-color: #1D7DB1;
}
.end{
z-index: -999999;
}
/* 正面 */
.front{
position: absolute;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background-color: inherit;
}
/* 背面 */
.back{
position: absolute;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: inherit;
color: red;
font-size: 12px;
font-weight: bold;
transform: rotateY(180deg);
}
@keyframes turning {
to{
transform: rotateY(-160deg);
}
}
@keyframes resetBook{
from{
transform: rotateY(-160deg);
}
to{
transform: rotateY(0deg);
}
} /* 简单翻书动画结束 */

JavaScript

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script>
$(function () {
const $page = $('.page')
let isClick = true
$page.click(function (e){
// 动画执行时禁止再次点击
if (isClick) {
isClick = false
setTimeout( () => {
isClick = true
}, 2000) // 获取当前点击元素下标
const index = $(this).index()
const $childFront = $(this).children('.front')
const $childBack = $(this).children('.back') // 由于背部封面(下标0)是不动的 因此判断下标大于0才增减class
if (index > 0) {
// 判断是否已经翻过 已经翻过则翻回
if ( $(this).hasClass('flag') ) {
// 设置css执行动画效果
$(this).css({
"animation": "resetBook 2s linear 1"
})
// 转到一半时 设置正反面 z-index
setTimeout(() => {
$(this).css({
"z-index": index
})
$childFront.css({'z-index': index})
$childBack.css({'z-index': index - 1})
}, 1000) // 去除标记
$(this).removeClass('flag') } else {
// 设置css执行动画效果
$(this).css({
"animation": "turning 2s linear 1",
"animation-fill-mode": "forwards",
}) // 动画完成后将设置翻转后的z-index
// 兼容chrome浏览器
const isChrome = navigator.userAgent.indexOf('Chrome')
if (isChrome > -1) {
setTimeout(() => {
$(this).css({
'z-index': index,
"box-shadow": "0 6px 10px rgba(0,0,0,.2)"
})
},2000)
} else {
setTimeout(() => {
$(this).css({
'z-index': index * -1,
"box-shadow": "0 6px 10px rgba(0,0,0,.2)"
})
},2000)
}
// 转到一半时 设置正反面 z-index
setTimeout(() => {
$childFront.css({'z-index': index})
$childBack.css({'z-index': index + 1})
}, 1000) // 添加标记
$(this).addClass('flag')
}
}
}
})
})
</script>

效果如下:

CSS3、jQuery实现3D翻书动画的更多相关文章

  1. 【原创】jQuery插件 - Booklet翻书特效教程(一) 一般设置

    jQuery插件 - Booklet翻书特效教程(一) 一般设置 本文由五月雨恋提供,转载请注明出处. 一.宽高(width/height) 1.自定义大小 $(function(){ // 自定义页 ...

  2. 使用 CSS3 & jQuery 制作漂亮的书签动画

    今天的教程是关于创建使用 CSS 旋转变换和 JavaScript 制作动画书签效果.我们的想法是展现出样书状结构,使单一的色板或列表点击切换.当点击其中一项,我们就会旋转以显示所选择的项目. 在线演 ...

  3. jQuery+turn.js翻书、文档和杂志3种特效演示

    很好用的一款插件jQuery+turn.js翻书.文档和杂志3种特效演示 在线预览 下载地址 实例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  4. 一款纯css3实现的机器人看书动画效果

    今天要给大家介绍一款纯css3实现的机器人看书动画效果.整个画面完全由css3实现的绘制,没有使用任何图片元素.机器人的眼睛使用了动画元素.我们一起看下效果图: 在线预览   源码下载 实现的代码. ...

  5. PPT中翻书动画的制作

    一.新建一个空白的PowerPoint文档.   二.制作两个页面:   1.点击“自选图形”右边的小三角,选择“基本图形”下的“折角形”图形,在PowerPoint中画出一个书页样的图形,宽度最好小 ...

  6. HTML5 3D翻书效果(双面效应)

    最后使用HTML5翻书效果达到测试,比较简单,它的升级版是 最后一个问题: 1)后,原来的页面连环画将成为一面镜子 2)无法实现双面翻书. 3)明显感觉页面似有近遮挡标志. 这次的升级版本号实现过程比 ...

  7. jquery css3问卷答题卡翻页动画效果

    这个选项调查的特效以选项卡的形式,每答完一道题目自动切换到下一条,颇具特色.使用jQuery和CSS3,适合HTML5浏览器. 效果展示 http://hovertree.com/texiao/jqu ...

  8. [原创]纯CSS3打造的3D翻页翻转特效

    刚接触CSS3动画,心血来潮实现了一个心目中自己设计的翻页效果的3D动画,页面纯CSS3,目前只能在Chrome中玩,理论上可以支持Safari. 1. 新建HTML,代码如下(数据和翻页后的数据都是 ...

  9. css3+jquery制作3d旋转相册

    首先来看一下今天的炫酷效果: 首先分析一下这张图片: 1.每张图片都有倒影 2.这11张图片呈圆形均匀排列 3.可旋转,上下移动(当然这是效果做出来以后,图片是分析不出来的) 那下面就开始吧. 一.准 ...

随机推荐

  1. charles DNS欺骗

    本文参考:charles DNS欺骗 DNS欺骗/DNS Spoofing 功能:通过将您自己的主机名指定给远程地址映射来欺骗DNS查找 一般的开发流程中,在上线之前都需要在测试环境中先行进行验证,而 ...

  2. Linux 笔记 - 第八章 文档的打包与压缩

    博客地址:http://www.moonxy.com 一.前言 在 Linux 系统中,文件的后缀名没有实际的意义,加或者不加都无所谓.但是为了便于区分,我们习惯在定义文件名时加一个后缀名,比如常见的 ...

  3. Day 8 面试题

    一.选择题(每题2分) #####1.1 设超级用户root当前所在目录为:/usr/local,键入cd命令后, 用户当前所在目录为(B) A:/home B:/root C:/home/root ...

  4. Quartz Version=3.0.4.0,Culture=neutral,PublickeyToken=f6b8c98a402cc8a4或它的一个依赖项。找到的程序集清单定义与程序集引用不匹配

    报这种错误,就是比对Quartz的版本 ,右击引用的dll,属性查看版本. 一个项目中要一样  或者接口和调用接口的要一样  . 思路:解决这种问题的思路就是比对版本号.有可能是其它的dll,但是思路 ...

  5. Session和Cookie的用法及区别

    1. Session.Cookie是什么 1.1 概念理解 要了解session和cookie是什么,先要了解以下几个概念. 1.1.1 无状态的HTTP协议 协议:是指计算机通信网络中两台计算机之间 ...

  6. Python 2.X和3.X主要区别和下载安装

    一.python 2.X和3.X的区别 https://wenda.so.com/q/1459639143721779?src=140 二.Python的下载安装 1.Python下载 在python ...

  7. VM虚拟机,如何放大虚拟机屏幕,如何导出虚拟机ovf

    放大屏幕:,第一打开虚拟机,第二在需要放大的虚拟机上安装VMware tools   第三步查看>自动调节大小>自适应客户机.这样就可以放大屏幕了. 没有放大的屏幕 找到安装VMware  ...

  8. 用Python怎么telnet到网络设备

    0.前言 Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但是,它的缺陷太明显了,就是不安全,信息明文传送,极容易被攻击窃取 ...

  9. 品Spring:SpringBoot发起bean定义注册的“二次攻坚战”

    上一篇文章整体非常轻松,因为在容器启动前,只注册了一个bean定义,就是SpringBoot的主类. OK,今天接着从容器的启动入手,找出剩余所有的bean定义的注册过程. 具体细节肯定会颇为复杂,同 ...

  10. 使用maven开发javaweb项目

    想重新学习一下java web的知识,之前也学习过一些但是也没有用在开发中所以也忘的七七八八了,因为从事Android开发免不了要与服务器打交道,有时候想自己写一个小DEMO需要服务器的时候感觉真是很 ...