CSS3 的动画与过渡 (Animations and Transitions)

12. CSS3 的动画与过渡 (Animations and Transitions)

12.1 过渡 (Transitions)

过渡 允许你平滑地改变元素的样式属性,在属性值发生变化时创建渐变效果。

基本语法

.element {
  transition: property duration timing-function delay;
}
  • property: 你想要过渡的 CSS 属性。
  • duration: 过渡的持续时间(如 2s500ms)。
  • timing-function: 过渡的时间函数(如 linearease-inease-outease-in-out)。
  • delay: 过渡的延迟时间(可选)。

示例代码

/* 默认状态 */
.box {
  width: 100px;
  height: 100px;
  background-color: blue;
  transition: width 0.5s ease, background-color 0.5s ease;
}

/* 鼠标悬停时的状态 */
.box:hover {
  width: 200px;
  background-color: red;
}

解释

  • .box 元素在鼠标悬停时,宽度和背景颜色会平滑过渡,持续时间为 0.5 秒。

过渡的高级用法

  • 可以为多个属性设置不同的过渡时间和时间函数。

示例代码

.advanced-transition {
  width: 100px;
  height: 100px;
  background-color: green;
  transition: width 1s ease-in-out, height 2s linear;
}

.advanced-transition:hover {
  width: 200px;
  height: 200px;
}

解释

  • width 的过渡持续 1 秒,height 的过渡持续 2 秒,时间函数分别为 ease-in-outlinear
12.2 动画 (Animations)

动画 允许你创建复杂的动画效果,通过关键帧定义动画的不同阶段。

基本语法

@keyframes animation-name {
  from { /* 开始状态 */ }
  to { /* 结束状态 */ }
}

.element {
  animation: animation-name duration timing-function delay iteration-count direction fill-mode;
}
  • animation-name: 动画的名称(对应 @keyframes 的名字)。
  • duration: 动画的持续时间(如 2s)。
  • timing-function: 动画的时间函数(如 lineareaseease-in)。
  • delay: 动画的延迟时间(可选)。
  • iteration-count: 动画的播放次数(如 infinite1)。
  • direction: 动画的方向(如 normalreverse)。
  • fill-mode: 动画结束后的状态(如 forwardsbackwards)。

示例代码

/* 定义动画 */
@keyframes slide {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(100px);
  }
}

/* 使用动画 */
.animated-box {
  width: 100px;
  height: 100px;
  background-color: blue;
  animation: slide 2s ease-in-out infinite;
}

解释

  • @keyframes slide 定义了一个简单的动画,将元素从 translateX(0) 平移到 translateX(100px)
  • .animated-box 元素应用了该动画,动画持续时间为 2 秒,时间函数为 ease-in-out,无限循环播放。

动画的高级用法

  • 使用多个关键帧来创建更复杂的动画效果。

示例代码

@keyframes complex-animation {
  0% {
    background-color: blue;
    transform: translateX(0);
  }
  50% {
    background-color: green;
    transform: translateX(50px);
  }
  100% {
    background-color: red;
    transform: translateX(100px);
  }
}

.complex-box {
  width: 100px;
  height: 100px;
  animation: complex-animation 3s ease-in-out infinite;
}

解释

  • @keyframes complex-animation 定义了一个包含三个阶段的动画:开始时蓝色,50% 时绿色,结束时红色,并且平移效果逐渐增加。
  • .complex-box 元素应用了该动画,持续时间为 3 秒,时间函数为 ease-in-out,无限循环播放。
12.3 动画与过渡的结合

过渡和动画可以结合使用,使动画效果更具互动性。例如,可以使用过渡来创建平滑的状态变化,而动画则用于更复杂的视觉效果。

示例代码

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

.rotating-box {
  width: 100px;
  height: 100px;
  background-color: blue;
  transition: background-color 0.5s ease;
}

.rotating-box:hover {
  background-color: red;
  animation: rotate 2s linear infinite;
}

解释

  • .rotating-box 元素在鼠标悬停时,背景颜色平滑过渡,同时应用了旋转动画,持续时间为 2 秒,时间函数为 linear,无限循环播放。

以上就是 CSS3 的动画与过渡 (Animations and Transitions) 的详细讲解。通过使用过渡和动画,你可以为网页添加平滑的状态变化和复杂的视觉效果,提升用户体验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳房子的前端

你的打赏能让我更有力地创造

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值