【动画消消乐|CSS】083.纯CSS实现卡通齿轮效果
前言
Hello!小伙伴!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,有幸拿过国奖、省奖等,已保研。目前正在学习C++/Linux(真的真的太难了~)
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
【动画消消乐】 平时学习生活比较枯燥,无意之间对一些网页、应用程序的过渡/加载动画产生了浓厚的兴趣,想知道具体是如何实现的? 便在空闲的时候学习下如何使用css实现一些简单的动画效果,文章仅供作为自己的学习笔记,记录学习生活,争取理解动画的原理,多多“消灭”动画!
效果展示

Demo代码
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<section>
<div class="gear">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="hole"></div>
</section>
</body>
</html>
CSS
html, body {
margin: 0;
height: 100%;
}
body {
display: flex;
justify-content: center;
align-items: center;
background: gainsboro;
/* background: #222f3e; */
}
section {
width: 650px;
height: 300px;
padding: 10px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid orange;
}
.gear {
width: 120px;
height: 120px;
border-radius: 50%;
background-color: #f98db9;
display: flex;
justify-content: center;
align-items: center;
animation: rotate 12s infinite linear;
}
.gear div {
position: absolute;
width: 30px;
height: 150px;
background: #f98db9;
border-radius: 8px;
}
.gear div:nth-child(1) {
transform: rotate(0deg);
}
.gear div:nth-child(2) {
transform: rotate(45deg);
}
.gear div:nth-child(3) {
transform: rotate(90deg);
}
.gear div:nth-child(4) {
transform: rotate(135deg);
}
.hole {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 50px;
height: 50px;
background-color: white;
border-radius: 50%;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
原理详解
步骤1
使用两个div,一个作为齿轮外部,一个作为内部空心部分
<div class="gear"></div>
<div class="hole"></div>
设置gear
- 宽度、高度均为120px
- 背景色为粉红色
- flex布局(上下左右都居中)
.gear {
width: 120px;
height: 120px;
background-color: #f98db9;
display: flex;
justify-content: center;
align-items: center;
}
效果图如下

再设置hole
- 绝对定位(使其位于正中心)
- 宽度、高度均为50px
- 背景色为白色
.hole {
/*位于正中心*/
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 50px;
height: 50px;
background-color: white;
}
效果图如下

步骤2
gear和hole同时圆角化
.gear {
border-radius: 50%;
}
.hole {
border-radius: 50%;
}
效果图如下

步骤3
添加齿轮外部分的凹凸不平的那个部分(不知道具体叫啥??)

一共设置8个 需要使用到4个div (一个div可以显示出2个)
<div class="gear">
<div></div>
<div></div>
<div></div>
<div></div>
</div>
设置div为
- 绝对定位(重要!)
- 宽度30px 高度150px
- 颜色:粉色
- border-radius: 8px;
.gear div {
position: absolute;
width: 30px;
height: 150px;
background: #f98db9;
border-radius: 8px;
}
效果图如下

步骤4
给每个div设置旋转角度,分别是
- 0deg
- 45deg
- 90deg
- 135deg
.gear div:nth-child(1) {
transform: rotate(0deg);
}
.gear div:nth-child(2) {
transform: rotate(45deg);
}
.gear div:nth-child(3) {
transform: rotate(90deg);
}
.gear div:nth-child(4) {
transform: rotate(135deg);
}
效果图如下

步骤5
最后再为gear添加一个旋转动画
.gear {
animation: rotate 12s infinite linear;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
得到最终效果图

举一反三
修改
- 增加2个div
- 修改旋转角度(0 30 60 90 120 150deg)
效果图如下:

结语
文章仅作为学习笔记,记录从0到1的一个过程
希望对您有所帮助,如有错误欢迎小伙伴指正~
我是 海轰ଘ(੭ˊᵕˋ)੭
如果您觉得写得可以的话,请点个赞吧
谢谢支持️

【动画消消乐|CSS】083.纯CSS实现卡通齿轮效果的更多相关文章
- CSS之纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
图形包括基本的矩形.圆形.椭圆.三角形.多边形,也包括稍微复杂一点的爱心.钻石.阴阳八卦等.当然有一些需要用到CSS3的属性,所以在你打开这篇文章的时候,我希望你用的是firefox或者chrome, ...
- 【CSS】纯css实现立体摆放图片效果
1. 元素的 width/height/padding/margin 的百分比基准 设置 一个元素 width/height/padding/margin 的百分比的时候,大家可知道基准是什么? 举 ...
- css之纯css实现流程导航效果
:::tip 使用纯css线上 流程导航效果. 本文统一采取 flex 布局 ,你也可以采用其他布局实现,核心原理不变 ::: ## 方法一 利用裁剪 该方法IE下不支持 利用裁剪 clip ...
- 【css】纯css实现文字循环滚动效果
不用js来实现. html: <div class="box"> <p class="animate"> 文字滚动的内容文字滚动的内容文 ...
- 瀑布流的实现纯CSS实现Jquery实现
瀑布流的实现 注:本文部分图片自百度下载,如有侵权,联系删图. 首先,选择几张图片布局到HTML内容中.HTML如下所示. <div class="wrapper"> ...
- 【动画消消乐】HTML+CSS 自定义加载动画 061
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- 【动画消消乐】HTML+CSS 自定义加载动画 064(currentColor的妙用!)
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...
- 【动画消消乐】HTML+CSS 自定义加载动画 065
前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍 ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计 ...
随机推荐
- 01 JumpServer安装
1.0.环境说明: 操作系统类型 主机名称 用户及密码 角色 eth0(Vmnet8) eth1(Vmnet1) 防火墙状态 selinux centos7.4 controlnode root:12 ...
- css图片显示文字(上浮)
<html> <head lang="en"> <meta charset="UTF-8"> <title>&l ...
- SpringBoot:SpringBoot中@Value注入失败
1. 第一步检测语法是否正确 @Value("${test}") private String test; 2.第二步检测配置文件中是否有进行配置 url=testusername ...
- 想成为Java高手的25个学习目标
本文将告诉你学习Java需要达到的25个目标,希望能够对你的学习及找工作有所帮助.对比一下自己,你已经掌握了这25条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD).涉及模式(GO ...
- 部署JAX-WS Web服务作为战争中的Apache Tomcat(Deploying JAX-WS webservice as War in Apache Tomcat)
问 题 I have developed a webservice using JAXWS and able to run it from the eclipse on Tomcat 7 with ...
- bugKu变量1
重点:两个$$,这暗示着第二个$变量的值,作为第一个$的名称. 而且代码审计之后,发现只含有字母. 又暗示在变量中,那么猜想是在全局变量中,而php中全局变量是$GLOBALS.
- Robotframework学习笔记之一Common Resource导入的Library库显示红色(导入失败)
第一次使用Robotframework,所以也遇到了很多的坑,导入项目后 ,一些自带的库显示红色,导入失败!(ps:自带的库也显示红色) Ride日志如下(Tools--view ride log): ...
- spring cloud 微服务介绍(转)
一.理解微服务 我们通过软件架构演进过程来理解什么是微服务,软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1. 单体架构 1.1 特点(1)所有的功能集成在一个项目工程 ...
- docker容器技术基础之linux cgroup、namespace
一.开头 接触过docker的同学多多少少听过这样一句话"docker容器通过linux namespace.cgroup特性实现资源的隔离与限制".今天我们来尝试学习一下这两个东 ...
- odoo12常用的方法
2019-09-13 今天是中秋节,星期五 #自定义显示名称 def name_get(self): result = [] for order in self: rec_name = "% ...