当前位置:首页 > 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暂停动画进行调试

分享给朋友:

相关文章

vue实现tag效果

vue实现tag效果

实现基本标签结构 使用 Vue 的模板语法创建标签容器和单个标签元素。通过 v-for 动态渲染标签列表,结合 v-bind:key 确保渲染性能。 <template> <…

vue实现过渡效果

vue实现过渡效果

Vue 过渡效果实现方法 Vue 提供了内置的 <transition> 和 <transition-group> 组件,用于在元素或组件进入/离开 DOM 时应用过渡效果。以…

vue 实现toggle效果

vue 实现toggle效果

使用 v-show 实现 Toggle 通过 v-show 指令可以控制元素的显示与隐藏,适合频繁切换的场景。v-show 仅切换 CSS 的 display 属性,不会销毁和重建 DOM。 <…

vue实现钟表效果

vue实现钟表效果

Vue 实现钟表效果 创建基础结构 在 Vue 项目中创建一个组件,用于显示钟表。组件的模板部分包含钟表的外观,如时针、分针、秒针和钟面。 <template> <div cl…

vue实现框选效果

vue实现框选效果

实现框选效果的基本思路 在Vue中实现框选效果,通常需要监听鼠标事件,记录起始和结束位置,动态绘制一个矩形框,并根据框选范围判断哪些元素被选中。以下是具体实现方法: 监听鼠标事件 在Vue组件的模板…

vue实现切换效果

vue实现切换效果

Vue 实现切换效果的方法 使用 v-if 和 v-else 指令 通过条件渲染实现切换效果,适合简单的内容切换。利用 v-if 和 v-else 控制元素的显示与隐藏。 <template&…