当前位置:首页 > CSS

css3菊花动画制作

2026-04-01 01:12:52CSS

使用 CSS3 制作菊花动画

菊花动画(Loading Spinner)是一种常见的加载动画效果,通过旋转的线条或点模拟花瓣效果。以下是几种实现方法:

css3菊花动画制作

基础旋转动画

通过 @keyframestransform: rotate 实现旋转效果:

css3菊花动画制作

.spinner {
  width: 40px;
  height: 40px;
  position: relative;
  animation: rotate 1s linear infinite;
}

.spinner::before {
  content: "";
  display: block;
  width: 100%;
  height: 100%;
  border: 3px solid transparent;
  border-top-color: #3498db;
  border-radius: 50%;
}

@keyframes rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

多花瓣效果

通过多个子元素和延迟动画实现花瓣效果:

<div class="spinner">
  <div class="petal"></div>
  <div class="petal"></div>
  <div class="petal"></div>
  <div class="petal"></div>
</div>
.spinner {
  width: 40px;
  height: 40px;
  position: relative;
}

.petal {
  position: absolute;
  width: 100%;
  height: 100%;
}

.petal::before {
  content: "";
  display: block;
  width: 10px;
  height: 10px;
  background: #3498db;
  border-radius: 50%;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.petal:nth-child(1) { transform: rotate(0deg); }
.petal:nth-child(2) { transform: rotate(90deg); }
.petal:nth-child(3) { transform: rotate(180deg); }
.petal:nth-child(4) { transform: rotate(270deg); }

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

.petal::before {
  animation: pulse 1.2s ease-in-out infinite;
}

.petal:nth-child(1)::before { animation-delay: 0s; }
.petal:nth-child(2)::before { animation-delay: 0.3s; }
.petal:nth-child(3)::before { animation-delay: 0.6s; }
.petal:nth-child(4)::before { animation-delay: 0.9s; }

使用 box-shadow 简化结构

通过单个元素和 box-shadow 生成多个花瓣:

.spinner {
  width: 40px;
  height: 40px;
  position: relative;
}

.spinner::before {
  content: "";
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: transparent;
  box-shadow: 
    0 -18px 0 #3498db,
    12.7px -12.7px 0 #3498db,
    18px 0 0 #3498db,
    12.7px 12.7px 0 #3498db,
    0 18px 0 #3498db,
    -12.7px 12.7px 0 #3498db,
    -18px 0 0 #3498db,
    -12.7px -12.7px 0 #3498db;
  animation: pulse 1.2s ease-in-out infinite;
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

关键点说明

  • 使用 border-radius: 50% 实现圆形花瓣
  • 通过 transform: rotate 控制花瓣位置
  • 利用 animation-delay 实现交错动画效果
  • box-shadow 可减少 DOM 节点数量

以上方法均可通过调整尺寸、颜色和动画时间来适应不同场景需求。

分享给朋友:

相关文章

css3菊花制作方法

css3菊花制作方法

CSS3菊花制作方法 使用CSS3的animation和transform属性可以轻松实现菊花加载动画效果。以下是两种常见的实现方式: 基础旋转菊花 .spinner { widt…

css动画制作弹球

css动画制作弹球

使用CSS动画制作弹球效果 创建一个弹球动画需要结合CSS的@keyframes规则和animation属性,模拟弹球的弹跳和移动效果。以下是实现方法: HTML结构 <div cl…

css动画制作效果

css动画制作效果

CSS 动画基础语法 CSS 动画通过 @keyframes 规则定义动画序列,再通过 animation 属性将动画应用到元素上。 定义关键帧: @keyframes slideIn {…

css路径动画制作

css路径动画制作

CSS路径动画制作方法 CSS路径动画可以通过offset-path和animation属性实现元素沿自定义路径运动。现代浏览器支持SVG路径或CSS基本形状作为运动轨迹。 定义路径 使用SVG路径…

css打勾动画制作

css打勾动画制作

CSS打勾动画制作方法 使用CSS制作打勾动画可以通过伪元素和关键帧动画实现,以下是具体实现方式: HTML结构 <div class="checkmark"></div>…

css帧动画制作视频

css帧动画制作视频

CSS帧动画制作方法 使用CSS的@keyframes规则和animation属性可以创建帧动画效果。以下是一个基本示例: @keyframes example { 0% {backgrou…