参考资料

  1. Vanta.js 如何与 CSS 过渡结合?
  2. 伪元素选择器详细说明以及案例
  3. Flex布局如何优化页面加载速度?
  4. 背景属性详细说明以及案例
  5. css布局格式
  6. CSS弹性盒子详细说明以及案例
  7. 如何避免Flex容器高度塌陷?
  8. 有没有推荐的 CSS 过渡动画库?

Flex布局在动画制作中的应用

1. 基本概念

  • Flex布局(弹性盒子)用于高效排列、对齐和分配容器内项目的空间

  • 主要属性:display: flexflex-directionjustify-contentalign-items

2. 动画制作优势

  • 简化元素排列和定位

  • 轻松实现响应式动画效果

  • 结合CSS过渡/动画实现复杂交互

3. 典型应用示例

示例1:菜单展开动画

<div class="menu-container">
  <div class="menu-item">Home</div>
  <div class="menu-item">About</div>
  <div class="menu-item">Contact</div>
</div>

<style>
.menu-container {
  display: flex;
  overflow: hidden;
  width: 50px;
  transition: width 0.5s ease;
}
.menu-container:hover {
  width: 300px;
}
.menu-item {
  flex: 0 0 auto;
  white-space: nowrap;
}
</style>

示例2:卡片轮播

<div class="carousel">
  <div class="card">1</div>
  <div class="card">2</div>
  <div class="card">3</div>
</div>

<style>
.carousel {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
}
.card {
  flex: 0 0 100%;
  scroll-snap-align: start;
  transition: transform 0.3s;
}
</style>

示例3:加载动画

<div class="loader">
  <div class="dot"></div>
  <div class="dot"></div>
  <div class="dot"></div>
</div>

<style>
.loader {
  display: flex;
  justify-content: space-around;
}
.dot {
  width: 20px;
  height: 20px;
  animation: bounce 1.4s infinite ease-in-out;
}
.dot:nth-child(2) {
  animation-delay: 0.2s;
}
.dot:nth-child(3) {
  animation-delay: 0.4s;
}
@keyframes bounce {
  0%, 80%, 100% { transform: scale(0) }
  40% { transform: scale(1) }
}
</style>

4. 常用技巧

  • 使用flex-grow/flex-shrink控制动画过程中的尺寸变化

  • 结合order属性实现动态重排

  • 利用justify-content实现不同的对齐动画效果

  • 配合transformtransition创建流畅动画

5. 注意事项

  • 考虑性能影响,避免过多嵌套flex容器

  • 移动端注意硬件加速优化

  • 旧版浏览器需要添加前缀(-webkit-等)