前端每日实战:31# 视频演示如何利用 CSS 的动画原理,创作一个乒乓球对打动画
效果预览
按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。
https://codepen.io/comehope/pen/rvgLzK
可交互视频教程
此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。
请用 chrome, safari, edge 打开观看。
https://scrimba.com/p/pEgDAM/cW7gZfb
源代码下载
每日前端实战系列的全部源代码请从 github 下载:
https://github.com/comehope/front-end-daily-challenges
代码解读
定义 dom,容器中包含左拍、小球和右拍:
<div class="court">
<div class="left-paddle"></div>
<div class="ball"></div>
<div class="right-paddle"></div>
</div>
居中显示:
body {
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(silver, dimgray);
}
调整盒模型:
* {
box-sizing: border-box;
}
画出球案:
.court {
width: 20em;
height: 20em;
color: white;
border: 1em solid currentColor;
}
画出左拍:
.court {
position: relative;
}
.left-paddle
width: 1em;
height: calc(50% - 1em);
background-color: currentColor;
position: absolute;
top: 1em;
left: 1em;
}
让左拍动起来:
.left-paddle {
animation: left-moving 1s linear infinite alternate;
}
@keyframes left-moving {
to {
transform: translateY(100%);
}
}
类似地,画出右拍:
.right-paddle
width: 1em;
height: calc(50% - 1em);
background-color: currentColor;
position: absolute;
top: 1em;
left: 1em;
bottom: 1em;
right: 1em;
}
类似地,让右拍动起来:
.right-paddle {
animation: right-moving 1s linear infinite alternate;
}
@keyframes right-moving {
to {
transform: translateY(-100%);
}
}
画出小球:
.ball {
width: 100%;
height: 1em;
border-left: 1em solid currentColor;
position: absolute;
left: 2em;
top: calc(50% - 1.5em);
}
让小球动起来:
.ball {
animation: bounce 1s linear infinite alternate;
}
@keyframes bounce {
to {
left: calc(100% - 3em);
}
}
最后,重构一下左右拍的代码,合并共有属性:
.left-paddle,
.right-paddle {
width: 1em;
height: calc(50% - 1em);
background-color: currentColor;
position: absolute;
animation: 1s linear infinite alternate;
}
.left-paddle {
top: 1em;
left: 1em;
animation-name: left-moving;
}
.right-paddle {
bottom: 1em;
right: 1em;
animation-name: right-moving;
}
大功告成!
前端每日实战:31# 视频演示如何利用 CSS 的动画原理,创作一个乒乓球对打动画的更多相关文章
- 如何利用 CSS 的动画原理,创作一个乒乓球对打动画
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/rvgLzK 可交互视频教 ...
- 31.用 CSS 的动画原理,创作一个乒乓球对打动画
原文地址:https://segmentfault.com/a/1190000015002553 感想:纯属动画 HTML代码: <div class="court"> ...
- 前端每日实战:36# 视频演示如何利用 CSS 动画原理,在页面上表现日蚀现象
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OELvrK 可交互视频教程 此视频 ...
- 前端每日实战:141# 视频演示如何用 CSS 的 Grid 布局创作一枚小狗邮票
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/BOeEYV 可交互视频 此视频是可 ...
- 前端每日实战:142# 视频演示如何用 CSS 的 Grid 布局创作一枚小鸡邮票
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mGZbmQ 可交互视频 此视频是可 ...
- 前端每日实战:116# 视频演示如何用 CSS 和原生 JS 开发一个监控网络连接状态的页面
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/oPjWvw 可交互视频 此视频是可 ...
- 前端每日实战:144# 视频演示如何用 D3 和 GSAP 创作一个集体舞动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gdVObN 可交互视频 此视频是可 ...
- 前端每日实战:125# 视频演示如何用纯 CSS 创作一个失落的人独自行走的动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MqpOdR/ 可交互视频 此视频是 ...
- 前端每日实战:134# 视频演示如何用 CSS 和 GSAP 创作一个树枝发芽的 loader
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/LJmpXZ 可交互视频 此视频是可 ...
随机推荐
- django,模板继承常用标签和规则
一.定义基础模板 在html内容中定义多个block块,block由子模板引用同名block块,来决定是否替换这些部分{% block title %}一些内容,这里可不填{% endblock %} ...
- 32)PHP,遍历对象的属性或者属性值
首先是遍历属性: <?php class A{ ; ; ; function fetchAllProp(){ //遍历时,key取得属性名,value取得对应值 foreach($this as ...
- 吴裕雄--天生自然python学习笔记:python 用 Tesseract 识别验证码
用 Selenium 包实现网页自动化操作的案例中,发现很多网页都因 需输入图形验证码而导致实验无法进行 . 解决的办法就是对验证码进行识别 . 识 别的方法之 一 是通过图形处理包将验证码的大部分背 ...
- 吴裕雄--天生自然C语言开发:字符串
] = {'H', 'e', 'l', 'l', 'o', '\0'}; char greeting[] = "Hello"; #include <stdio.h> i ...
- jsonConfig用法
1.先编写jsonConfig的初始化代码 private JsonConfig jsonConfig; public action构造方法() { jsonConfig = new JsonConf ...
- KMP算法 详解+模板
本文大部分摘自szy学长的ppt<string>中的KMP部分. %%%膜拜szy大神orz 1.概述 KMP 算法是用来解决单模匹配问题的一种算法. 如果暴力的进行单模匹配,那么时间复杂 ...
- github傻瓜的食用方法
配置Git 首先在本地创建ssh key: 1 $ ssh-keygen -t rsa -C "your_email@youremail.com" 后面的your_email@yo ...
- plsql登录,tables表为空解决方案
共两种方法,第一种不行,再试下第二种: 第一种: plsql tables 表存在,但是看不到所有的表信息 将C:\Windows\Prefetch目录下,几个PLSQL DEVELOPER***** ...
- 疯狂收集个人信息的谷歌,为何不像Facebook那样让人毛骨悚然?
自从Facebook信息泄露丑闻事件发生后,互联网上的个人隐私及安全成为大众的"心病".而大众最讨厌的,是互联网企业收集自己的信息,因此都在积极讨伐这种行为.但他们却忘了,收集用户 ...
- 网页中常见返回HTTP状态码含义
在日常网页浏览的过程中大家经常会碰到400,403,404,500,502等HTTP状态码,这些状态码对于一般用户来说出现什么都是一样的,反正就是页面打不开了,但是作为网站开发人员或者从事相关工作者认 ...