「HTML+CSS」--自定义加载动画【012】

简介: 「HTML+CSS」--自定义加载动画【012】

前言

Hello!小伙伴!
首先非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
哈哈 自我介绍一下
昵称:海轰
标签:程序猿一只|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,有幸拿过国奖、省奖等,已保研。目前正在学习C++/Linux(真的真的太难了~)
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!

效果展示

在这里插入图片描述

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><span></span></section>
</body>
</html>

CSS

html,body{
  margin: 0;
  height: 100%;
}
body{
  display: flex;
  justify-content: center;
  align-items: center;
  background: #263238;
}
section {
    width: 650px;
    height: 300px;
    padding: 10px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    /* 红色边框仅作提示 */
    border: 2px solid red;
}

span{
  width : 96px;
  height: 96px;
  border: 10px solid white;
  border-radius: 50%; 
    display: flex;
  justify-content: center; 
  position: relative; 
  animation: rotation 2s linear infinite;
}
span::before{
  position: absolute;
  top: -21px;
  content: '';
  width:  32px;
  height:  32px;
  background: red;
  border-radius: 50%;
}

@keyframes rotation {
  0% { transform: rotate(0deg) }
  100% { transform: rotate(360deg)
  }
}

原理详解

步骤1

设置span元素

  • 宽度/高度均为:96px
  • 边框为:白色 10px solid
width : 96px;
height: 96px;
border: 10px solid white;

效果图如下
在这里插入图片描述

步骤2

使用span::before伪类,作为红色小球部分

设置span::before

  • 宽度、高度均为:32px
  • 背景色:红色
  • 绝对定位
position: absolute;
width:  32px;
height:  32px;
background: red;

效果图如下
在这里插入图片描述

步骤3

将span::before移动至水平中间

这是海轰的方法是使用flex布局(对span设置)

display: flex;
justify-content: center; /*水平正中*/

效果图如下
在这里插入图片描述

步骤4

将红色方块中心移动至白色边框中轴(重点!)

 top: -21px;

效果图如下
在这里插入图片描述
上述效果图解
在这里插入图片描述

步骤5

对两个元素进行圆角化

border-radius: 50%;

效果图如下
在这里插入图片描述

步骤6

添加旋转动画

animation: rotation 2s linear infinite;
// 动画实现
@keyframes rotation {
  0% { transform: rotate(0deg) }
  100% { transform: rotate(360deg)
  }
}

效果图如下

在这里插入图片描述

疑点解释

疑问1

为什么需要将红色方块中心和上边框中心重合啊?

答:两个中心重合,从视觉上可以感觉到二者是粘附在一起的,完全重合就可以体现这一点。如果不是完全重合,就会感觉小球有点摇摇欲坠的感觉,参考下图:在这里插入图片描述

疑问2

top=-21px是如何计算出来的?

首先理解移动的初始、终点位置关系
在这里插入图片描述
通过前面的设置我们可以知道

  1. 边框的总高度为10px,那么中心的高度就是10/2=5px
  2. 红色部分的宽度/高度均为32px,那么中心高度就是32/2=16px

在这里插入图片描述
所以

下面中心欲与上面中心重合,那么下面的中心就需要向上移动(5+16px),故top=-21px

结语

学习来源:

https://codepen.io/bhadupranjal/pen/vYLZYqQ

文章仅作为学习笔记,记录从0到1的一个过程。希望对您有所帮助,如有错误欢迎小伙伴指正~

我是海轰ଘ(੭ˊᵕˋ)੭,如果您觉得写得可以的话,请点个赞吧

写作不易,「点赞」+「收藏」+「转发」

谢谢支持❤️

在这里插入图片描述

目录
相关文章
|
3月前
|
前端开发
2s 利用 HTML+css动画实现企业官网效果
2s 利用 HTML+css动画实现企业官网效果
HTML+CSS 实现通用的企业官网页面(记得收藏)
HTML+CSS 实现通用的企业官网页面(记得收藏)
|
1月前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML和CSS之旅
【9月更文挑战第32天】在这个数字化的时代,拥有一个个人博客不仅是展示自我的平台,也是技术交流的桥梁。本文将引导初学者理解并实现一个简单的个人博客网站的搭建,涵盖HTML的基础结构、CSS样式的美化技巧以及如何将两者结合来制作一个完整的网页。通过这篇文章,你将学会如何从零开始构建自己的网络空间,并在互联网世界留下你的足迹。
|
14天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
64 6
|
1月前
|
前端开发 JavaScript 搜索推荐
打造个人博客网站:从零开始的HTML与CSS之旅
【9月更文挑战第31天】在这个数字时代,拥有一个个人博客网站是展示自我、分享知识和连接世界的重要方式。本文将引导你通过简单的HTML和CSS知识,一步步构建起你的在线空间。无论你是编程新手还是希望通过实践加深理解,这篇文章都将是你的理想指南。我们将探索基本概念,实现页面布局,并点缀以个性化样式,最终将静态页面转变为动态交互式网站。准备好了吗?让我们开始吧!
|
2月前
|
前端开发 数据安全/隐私保护 容器
HTML+CSS 水滴登录页
该代码实现了一个创意的水滴登录页面,包含一个水滴形状的登录框与两个按钮(忘记密码和注册)。登录框包括用户名、密码输入框及登录按钮。页面设计独特,采用渐变色与动态效果,增强了交互性和视觉美感。以下为关键实现步骤: - 重置默认样式。 - 设置页面背景颜色和尺寸。 - 定义登录表单容器的布局、位置和尺寸。 - 设置登录表单内容样式,包括3D效果和过渡动画。 - 创建伪元素增强水滴效果。 - 设定输入框容器和输入框样式。 - 为提交按钮、忘记密码和注册按钮设定特定样式,并添加悬停效果。
|
2月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
3月前
|
前端开发 JavaScript
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!
HTML+CSS如何打造撒花动画效果?3分钟学会,炫酷到爆!
|
3月前
|
前端开发 JavaScript
HTML+CSS助你轻松打造惊艳登录页,零基础也能学会!
HTML+CSS助你轻松打造惊艳登录页,零基础也能学会!