效果预览

在线演示

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

https://codepen.io/comehope/pen/qKOPGw

可交互视频教程

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/p/pEgDAM/c6GV2Ay

源代码下载

本地下载

每日前端实战系列的全部源代码请从 github 下载:

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,一个 book 容器中包含一个 page 容器,page 中再包含 5 个 <span>,page 用于绘制书页,<span> 用于绘制笔划:

    &lt;div class="book"&gt;&lt;div class="page"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;

重定义盒模型:

* {box-sizing: border-box;
}

定义书的尺寸:

.book {--sw: 0.3em; /* stroke width */width: 15em;height: 10em;background-color: white;border: var(--sw) solid cadetblue;border-radius: var(--sw);font-size: 20px;
}

定义书页的尺寸:

.book {position: relative;
}.book .page {height: inherit;width: calc(50% + var(--sw) + var(--sw) / 2);background-color: inherit;border: inherit;border-radius: inherit;position: absolute;top: calc(-1 * var(--sw));right: calc(-1 * var(--sw));
}

绘制书页上的笔划:

.book .page {display: flex;flex-direction: column;justify-content: space-between;padding: 8% 5%;
}.book .page span {display: block;width: 100%;border-top: var(--sw) solid cadetblue;border-radius: inherit;
}

定义笔划动画效果,依次画出 5 个笔划:

.book .page span {animation: 4s linear infinite;transform-origin: left;transform: scaleX(0);
}.book .page span:nth-child(1) {animation-name: stroke-1;
}.book .page span:nth-child(2) {animation-name: stroke-2;
}.book .page span:nth-child(3) {animation-name: stroke-3;
}.book .page span:nth-child(4) {animation-name: stroke-4;
}.book .page span:nth-child(5) {animation-name: stroke-5;
}@keyframes stroke-1 {0% {transform: scaleX(0);}10%, 100% {transform: scaleX(1);}
}@keyframes stroke-2 {10% {transform: scaleX(0);}20%, 100% {transform: scaleX(1);}
}@keyframes stroke-3 {20% {transform: scaleX(0);}30%, 100% {transform: scaleX(1);}
}@keyframes stroke-4 {30% {transform: scaleX(0);}40%, 100% {transform: scaleX(1);}
}@keyframes stroke-5 {40% {transform: scaleX(0);}50%, 100% {transform: scaleX(1);}
}

最后,定义书页翻动的效果:

.book .page {animation: flip 4s linear infinite;transform-origin: left;transform-style: preserve-3d;
}@keyframes flip {55% {transform: rotateY(0) translateX(0) skewY(0);}70% {transform: rotateY(-90deg) translateX(calc(-1 * var(--sw) / 2)) skewY(-20deg);}80%, 100% {transform: rotateY(-180deg) translateX(calc(-1 * var(--sw))) skewY(0);}
}.book .page span {backface-visibility: hidden;
}

大功告成!

原文地址:https://segmentfault.com/a/1190000015142453

转载于:https://www.cnblogs.com/lalalagq/p/10000304.html

如何用纯 CSS 创作一个记事本翻页动画相关推荐

  1. 如何用纯 CSS 创作一个小球上台阶的动画

    如何用纯 CSS 创作一个小球上台阶的动画 效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/come ...

  2. 如何用纯 CSS 创作一个小球上台阶的动画 1

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/PBGJwL 可交互视频 ...

  3. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视 ...

  4. 如何用纯 CSS 创作一个荧光脉冲 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视 ...

  5. 如何用纯 CSS 创作一个冒着热气的咖啡杯

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/xjXxoz 可交互视频教程 此视 ...

  6. 如何用纯 CSS 创作一个渐变色动画边框

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/odpRKX 可交互视频教 ...

  7. 如何用纯 CSS 创作一个金属光泽 3D 按钮特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/full/MGeRRO 可交互视频教程 此 ...

  8. 如何用纯 CSS 创作一个金属光泽 3D 按钮特效 1

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/full/MGeRRO 可交互视频教程 此 ...

  9. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKzjqK 可交互视频教程 此视频 ...

  10. 如何用纯 CSS 创作一个单元素抛盒子的 loader

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/qKwXbx 可交互视频 ...

最新文章

  1. python黑科技库:FuckIt.py,让你代码从此远离bug
  2. android简单app实例_Android安卓小项目实战视频教程集锦
  3. SQL2008R2 Reporting Services 報表產生器 3.0 快速上手
  4. md5碰撞Java_java现在MD5加密不安全了吗?
  5. POJ2446-Chessboard【最大匹配,二分图,奇偶建图】
  6. java xmpp openfire_搭建Xmpp服务器Openfire
  7. [转]暴牛!全国女生录用老公统一考试试卷
  8. 计算机word数字逆序输出,如何让word中的内容倒序排列
  9. java ==陷阱_Java小陷阱
  10. linux awk
  11. python简介pdf_Python以及QuTip包简介.PDF
  12. Windows USB驱动开发点滴积累备忘录
  13. 关于linux学习的热身知识八
  14. UIPageControl 分页
  15. STM32开关总中断
  16. 跨域访问JQuery+.NET实现的一种思路,以及极简单Demo
  17. 决策树_Python3实现代码及注释
  18. java随机不重复点名_怎样用java做一个点名器,除重复,并且用键盘输入
  19. 解读| 支付宝催泪视频背后的反欺诈升级战
  20. 向左还是向右,网约车聚合平台还是高精度地图数据收集站

热门文章

  1. java读取csv文件忽略bom头_PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法...
  2. 二位数组的示例 go语言
  3. show processlis
  4. 版mysql客户端工具_【小白福利—初级DBA入门必看】MySQL常用工具介绍(三)——客户端工具MySQL...
  5. 购物搜索引擎架构的变与不变
  6. 一个五年Java程序员的从业总结,献给还在迷茫中的你
  7. x-pack 功能介绍及配置传输层安全性(TLS / SSL)
  8. Go语言中正则表达式的使用
  9. SQL Server 计算汉字笔画函数
  10. Linux由管道组成的值得学习的命令