当前位置:首页 > CSS

css动画制作效果

2026-04-01 17:55:59CSS

CSS动画基础语法

CSS动画通过@keyframes规则定义动画序列,结合animation属性实现效果。基本结构如下:

@keyframes 动画名称 {
  0% { /* 初始状态 */ }
  100% { /* 结束状态 */ }
}

.element {
  animation: 动画名称 持续时间 速度曲线 延迟 播放次数 方向 填充模式;
}

常用动画属性

  • animation-name: 指定@keyframes名称
  • animation-duration: 动画持续时间(如2s
  • animation-timing-function: 速度曲线(ease/linear/cubic-bezier()
  • animation-delay: 延迟开始时间
  • animation-iteration-count: 播放次数(infinite表示无限循环)
  • animation-direction: 播放方向(normal/reverse/alternate
  • animation-fill-mode: 动画前后如何应用样式(forwards保留结束状态)

基础动画示例

淡入效果:

css动画制作效果

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.element {
  animation: fadeIn 1.5s ease-out;
}

旋转效果:

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

.spinner {
  animation: spin 2s linear infinite;
}

复合动画制作

同时实现移动和颜色变化:

css动画制作效果

@keyframes slideAndColor {
  0% {
    transform: translateX(0);
    background: blue;
  }
  50% {
    transform: translateX(200px);
    background: purple;
  }
  100% {
    transform: translateX(0);
    background: red;
  }
}

.box {
  animation: slideAndColor 3s ease-in-out infinite alternate;
}

响应式动画技巧

使用CSS变量动态控制动画:

:root {
  --anim-duration: 1s;
}

.element {
  animation: bounce var(--anim-duration);
}

@media (max-width: 768px) {
  :root {
    --anim-duration: 0.5s;
  }
}

性能优化建议

  • 优先使用transformopacity属性,这些属性不会触发重排
  • 避免动画影响width/height/margin等会触发布局变化的属性
  • 对动画元素使用will-change: transform;提示浏览器优化
  • 硬件加速:添加transform: translateZ(0)

高级动画案例

3D翻转卡片效果:

.card {
  perspective: 1000px;
}

.card-inner {
  transition: transform 0.8s;
  transform-style: preserve-3d;
}

.card:hover .card-inner {
  transform: rotateY(180deg);
}

.card-front, .card-back {
  backface-visibility: hidden;
}

.card-back {
  transform: rotateY(180deg);
}

动画调试工具

  • Chrome开发者工具的Animations面板
  • Firefox的Animation Inspector
  • 在线工具:CSS Animations Inspector
  • 使用animation-play-state: paused暂停动画进行调试

分享给朋友:

相关文章

js实现图片滚动效果

js实现图片滚动效果

使用CSS动画实现图片滚动 通过CSS的@keyframes和animation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。 <style> .scroll-c…

vue实现基金效果

vue实现基金效果

Vue 实现基金效果 在 Vue 中实现基金效果,通常指的是模拟基金的增长、波动或可视化展示。以下是几种常见的实现方式: 数据绑定与动态更新 通过 Vue 的数据绑定特性,可以动态展示基金净值的变化…

vue实现抽屉效果

vue实现抽屉效果

Vue 实现抽屉效果的方法 使用 Vue 过渡动画和 CSS 在 Vue 中可以通过 v-if 或 v-show 控制抽屉的显示隐藏,结合 <transition> 组件实现平滑动画效果。…

vue实现弹窗效果

vue实现弹窗效果

使用 Vue 实现弹窗效果 组件化弹窗实现 创建独立的弹窗组件 Modal.vue,通过 v-if 或 v-show 控制显示状态: <template> <div class…

vue实现弹幕效果

vue实现弹幕效果

实现弹幕效果的基本思路 在Vue中实现弹幕效果,通常需要结合CSS动画和动态数据渲染。弹幕的核心是让文字从右向左平滑移动,同时支持多行显示和碰撞检测。 使用CSS动画实现移动效果 通过CSS的@ke…

vue实现回弹效果

vue实现回弹效果

Vue 实现回弹效果的方法 回弹效果(Bounce Effect)常见于移动端交互,可以通过 CSS 动画或 JavaScript 实现。以下是几种在 Vue 中实现回弹效果的方案: 使用 CSS…