首页 > 其他分享 >炫酷CSS加载动画

炫酷CSS加载动画

时间:2023-12-11 20:32:17浏览次数:28  
标签:动画 00ff0a -- transform loader rotate 炫酷 CSS 加载

HTML结构

首先是HTML代码,定义了一个类名container<div>容器:

  • 在这个容器里面包含了一些加载器.loader,每个加载器都具有不同的旋转角度自定义属性--r(1~4),而每个加载器里面有20<span>元素,并且也都具有不同的旋转角度自定义属性--r(1~20)
  • 后面会通过CSS设置不同的旋转角度属性--r和旋转角度子属性--i,创建多个加载器,并且每个加载器都具有不同的动画表现。
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>CSS Animation</title>

  <link rel="stylesheet" href="./index.css">
</head>

<body>
  <div class="container">
    <div class="loader" style="--r: 1">
      <span style="--i: 1"></span>
      <span style="--i: 2"></span>
      <span style="--i: 3"></span>
      <span style="--i: 4"></span>
      <span style="--i: 5"></span>
      <span style="--i: 6"></span>
      <span style="--i: 7"></span>
      <span style="--i: 8"></span>
      <span style="--i: 9"></span>
      <span style="--i: 10"></span>
      <span style="--i: 11"></span>
      <span style="--i: 12"></span>
      <span style="--i: 13"></span>
      <span style="--i: 14"></span>
      <span style="--i: 15"></span>
      <span style="--i: 16"></span>
      <span style="--i: 17"></span>
      <span style="--i: 18"></span>
      <span style="--i: 19"></span>
      <span style="--i: 20"></span>
    </div>

    <div class="loader" style="--r: 2">
      <span style="--i: 1"></span>
      <span style="--i: 2"></span>
      <span style="--i: 3"></span>
      <span style="--i: 4"></span>
      <span style="--i: 5"></span>
      <span style="--i: 6"></span>
      <span style="--i: 7"></span>
      <span style="--i: 8"></span>
      <span style="--i: 9"></span>
      <span style="--i: 10"></span>
      <span style="--i: 11"></span>
      <span style="--i: 12"></span>
      <span style="--i: 13"></span>
      <span style="--i: 14"></span>
      <span style="--i: 15"></span>
      <span style="--i: 16"></span>
      <span style="--i: 17"></span>
      <span style="--i: 18"></span>
      <span style="--i: 19"></span>
      <span style="--i: 20"></span>
    </div>

    <div class="loader" style="--r: 3">
      <span style="--i: 1"></span>
      <span style="--i: 2"></span>
      <span style="--i: 3"></span>
      <span style="--i: 4"></span>
      <span style="--i: 5"></span>
      <span style="--i: 6"></span>
      <span style="--i: 7"></span>
      <span style="--i: 8"></span>
      <span style="--i: 9"></span>
      <span style="--i: 10"></span>
      <span style="--i: 11"></span>
      <span style="--i: 12"></span>
      <span style="--i: 13"></span>
      <span style="--i: 14"></span>
      <span style="--i: 15"></span>
      <span style="--i: 16"></span>
      <span style="--i: 17"></span>
      <span style="--i: 18"></span>
      <span style="--i: 19"></span>
      <span style="--i: 20"></span>
    </div>

    <div class="loader" style="--r: 4">
      <span style="--i: 1"></span>
      <span style="--i: 2"></span>
      <span style="--i: 3"></span>
      <span style="--i: 4"></span>
      <span style="--i: 5"></span>
      <span style="--i: 6"></span>
      <span style="--i: 7"></span>
      <span style="--i: 8"></span>
      <span style="--i: 9"></span>
      <span style="--i: 10"></span>
      <span style="--i: 11"></span>
      <span style="--i: 12"></span>
      <span style="--i: 13"></span>
      <span style="--i: 14"></span>
      <span style="--i: 15"></span>
      <span style="--i: 16"></span>
      <span style="--i: 17"></span>
      <span style="--i: 18"></span>
      <span style="--i: 19"></span>
      <span style="--i: 20"></span>
    </div>
  </div>
</body>

</html>

CSS样式

接下来看CSS代码,重置全局样式后,给.container元素定义了水平垂直居中布局,然后使用filter样式属性来应用色相旋转(hue-rotate)滤镜,将背景色调整为90度的色相。因此,子元素的任何颜色同样会天剑滤镜。

  • 首先,每个.loader元素通过transform: rotate()属性根据--r值设置旋转角度 (45deg * 1/2/3/4 = 45/90/135/180deg)
  • 其次,每个span元素使用定位设置初始位置在左侧,以及通过transform: rotate()属性根据--i值设置旋转角度 (18deg * 1~20 = 18 ~ 360deg)
  • 然后,每个span::before定义固定的宽度和高度及背景颜色。使用box-shadow属性定义了一个由多个投影组成的阴影效果,产生一种立体感。
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

.container {
  min-height: 100vh;
  background-color: #042104;
  filter: hue-rotate(90deg);

  display: flex;
  justify-content: center;
  align-items: center;
}

.loader {
  position: relative;
  transform: rotate(calc(var(--r) * 45deg));
}

.loader span {
  position: absolute;
  top: 0;
  left: -200px;

  width: 200px;
  height: 2px;
  transform-origin: right;
  transform: rotate(calc(var(--i) * 18deg));
}

.loader span::before {
  content: "";
  display: block;

  width: 15px;
  height: 15px;
  background-color: #00ff0a;
  border-radius: 15px;
  box-shadow: 0 0 10px #00ff0a, 
              0 0 20px #00ff0a, 
              0 0 40px #00ff0a, 
              0 0 60px #00ff0a, 
              0 0 80px #00ff0a, 0 0 100px #00ff0a;
  animation: animate 5s linear infinite;
  animation-delay: calc(-0.5s * var(--i));
}
@keyframes animate {
  0% {
    transform: translateX(200px) scale(1);
    opacity: 0;
  }

  10% {
    opacity: 1;
  }

  80% {
    opacity: 1;
  }

  100% {
    transform: translateX(0) scale(0);
    opacity: 1;
  }
}



@media screen and (max-width: 576px) {
  .container .loader {
    scale: .6;
  }  
}

此外,通过animation属性和@keyframes规则,定义了名为animate的关键帧动画。该动画在5秒内线性地进行,无限循环播放。动画的每个关键帧设置了不同的变换效果,包括 平移、缩放和透明度 变化。根据时间的进展,加载器的形状和位置会发生变化,从而创造出动态的效果。

标签:动画,00ff0a,--,transform,loader,rotate,炫酷,CSS,加载
From: https://blog.51cto.com/u_15997490/8777519

相关文章

  • css中伪元素使用
    1.:after  ::after单双引号的区别其实无论是单引号还是双引号,他们的本质都是伪元素,只不过因为伪类使用的也是单引号,同时他们的写法类似,写法也相仿,但实际上css3为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。但因为兼容性的问题,所以现在大部......
  • php css 改变宽度,img标签设置display:block属性时宽度无法设定为100%的解决办法
    本篇文章所说的内容是img标签设置display:block属性时宽度无法设定为100%的解决办法,方法很详细,有一定的参考价值,有需要的朋友可以参考一下,希望可以对你有所帮助。现象如下代码,img标签设置了display:block,尺寸宽度无法设定为100%img标签设置display:block,宽度无法100%原因替换......
  • CSS让整个网站变成灰色的做法
    CSS让整个网站变成灰色的做法方法一:直接在css样式文件里加上这段代码html{-webkit-filter:grayscale(100%);filter:progid:DXImageTransform.Microsoft.BasicImage(graysale=1);}<!–可以是整个网站变成灰色的–>方法二:可以直接插入到网页/模板文件里html{filter:progidXImag......
  • 图片铺满div元素不变形,超出部分隐藏,保留中心部分css代码
    在我们网站更新文章的时候,经常会插入图片,丰富信息。但是我们插入的图片长宽比例并不一定是固定的。我们在调用缩略图的时候,常常会出现图片变形的情况,高和宽不成比例。那么如何让图片不变形,又能铺满div元素呢?我们可以使用css代码中object-fit属性来实现。object-fit属性指定元素的......
  • css:两个行内块元素和图片垂直居中对齐
    (目录)两个行内块元素垂直居中对齐先看一段代码:<style>.box{width:200px;height:200px;line-height:200px;font-size:20px;text-align:center;display:inline-block;background-color:green;}</style><divclass="box&q......
  • CSS学习
    学习CSS 一、概述 CSS(层叠样式表)是一种用于描述HTML(或XML和SVG等其他标记语言)文档样式的样式表语言。它被广泛用于网页和用户界面的设计和布局。通过使用CSS,开发人员可以分离内容和样式,使网页更易于维护,提高用户体验。 二、学习资源 W3Schools、菜鸟教程三、核心概念......
  • 前端:bootstrap基本样式,css3定位,响应式布局
    前端:bootstrap基本样式,css3定位,响应式布局Css3中的position属性:css3的定位方式Css3的几种定位方式:流定位、浮动定位、相对定位、绝对定位、固定定位,默认为流定位。流定位页面中的块级元素框从上到下一个接一个地排列。每一个块级元素都会出现在一个新行中(比如<p>元素、<div>元素)。......
  • css vertical-align \ text-align 居中
    vertical-align:1、只能作用在子元素display 值为inline,inline-block,inline-table,table-cell的元素上,2、子元素设置vertical-align3、父元素高度是由line-height决定(不要乱给父元素添加height)<divclass="father"><spanclass="son">a</span></div&g......
  • 《安富莱嵌入式周报》第328期:自主微型机器人,火星探测器发射前失误故障分析,微软推出12
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 更新一期视频教程:【实战技能】单步运行源码分析,一期视频整明白FreeRTOS内核源码框架和运行机制,RTOSTrace链表功能展示https://www.armbbs.cn/forum.php?mod=viewthread&tid......
  • CSS笔记
    1.CSS选择器是用于选取HTML文档中的元素的一种方式。常见的选择器包括:元素选择器:通过元素的标签名来选取元素,例如p、div等。类选择器:通过元素的class属性来选取元素,使用.符号加上类名,例如.my-class。ID选择器:通过元素的id属性来选取元素,使用#符号加上id值,例如#my-id。属性选......