🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

CSS 动画 - 弹跳加载

2019-07-06

描述

创建一个弹跳的加载动画。

HTML

<div class="bouncing-loader">
  <div></div>
  <div></div>
  <div></div>
</div> 

CSS

@keyframes bouncing-loader {
  to {
    opacity: 0.1;
    transform: translate3d(0, -1rem, 0);
  }
}
.bouncing-loader {
  display: flex;
  justify-content: center;
}
.bouncing-loader > div {
  width: 1rem;
  height: 1rem;
  margin: 3rem 0.2rem;
  background: #8385aa;
  border-radius: 50%;
  animation: bouncing-loader 0.6s infinite alternate;
}
.bouncing-loader > div:nth-child(2) {
  animation-delay: 0.2s;
}
.bouncing-loader > div:nth-child(3) {
  animation-delay: 0.4s;
}

Demo

说明

注意: 1rem 通常等于 16px.

  1. @keyframes 定义了有两个状态的动画,修改元素的 opacity 和使用 transform: translate3d() 使其在 2D 平面上进行向上的移动。在 transform: translate3d() 上使用一个轴的移动来改进移动的性能。
  2. .bouncing-loader 是弹跳圆圈的父容器,使用 display: flex 和 justify-content: center 可以让他们剧中。
  3. .bouncing-loader > div 是父元素下的三个 div 子元素的样式。这三个 div 的宽度和高度都是 1rem,使用 border-radius: 50% 可以让他们从正方形转换为圆形。
  4. margin: 3rem 0.2rem 指定每一个圆的上下边距为 3rem,左右边距为 0.2rem。这样他们彼此就拥有了呼吸的空间,就不会挤在一起了。
  5. animation 属性是 animation-nameanimation-durationanimation-timing-functionanimation-delayanimation-iteration-countanimation-directionanimation-fill-modeanimation-play-state 属性的一个简写属性形式。
  6. nth-child(n) 是父元素中的第 n 个子元素
  7. animation-delay 分别用于第二个和第二个 div,这样一来,元素之间的动画开始时间就不会相同。

浏览器支持

支持率:97.4%
支持情况:https://caniuse.com/#feat=css-animation

返回总目录

每天 30 秒系列之 CSS


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步