跳到主要内容
输入关键词开始搜索,↑ ↓ 选择,Enter 打开
没有找到匹配的文档

动效

使用运动工具禁用或应用单个元素的 CSS 过渡和动画。

类名样式
.transition-nonetransition: none;
.animation-noneanimation: none;
.animation-shakeanimation: animation-shake 0.82s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
.animation-popanimation: animation-pop 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both;

概览

Bootstrap 使用 CSS 转换和动画为许多组件添加动画效果。运动工具类让你可以在单个元素上禁用该动画(.transition-none, .animation-none)或应用一个小的预定义动画(.animation-shake, .animation-pop)。

要在构建时全局禁用动画,请将 $enable-transitions Sass 选项改为 false。

过渡

将 .transition-none 添加到集合 transition: none,这样属性更改会立即应用,而不是进行动画。将鼠标悬停在下面两个按钮上:默认按钮会平滑过渡其悬停颜色变化,而第二个按钮则会立即切换。

HTML
<button type="button" class="btn-solid theme-primary">Default</button>
<button type="button" class="btn-solid theme-primary transition-none">No hover transition</button>

动画

禁用动画

将 .animation-none 添加到集合 animation: none,这会停止该元素上任何正在运行的关键帧动画(例如加载动画)。

加载中...
[!代码 高亮] 加载中...
HTML
<div class="spinner-border" role="status">
  <span class="visually-hidden">Loading...</span>
</div>
<div class="spinner-border animation-none" role="status">
  <span class="visually-hidden">Loading...</span>
</div>

摇动

添加 .animation-shake 可以播放一次简短的水平抖动效果。它与无效表单反馈配合良好——将其应用于字段(或在验证失败时通过 JavaScript 切换)以引起对需要修复内容的注意。

HTML
<input type="text" class="form-control is-invalid animation-shake" id="motionShakeDemo" value="Not quite right">

流行

将 .animation-pop 添加到缩放元素中以实现轻微的超出效果。这非常适合动态出现的内容,例如计数刚刚更新的徽章。

新
HTML
<span class="badge theme-primary animation-pop" id="motionPopDemo">New</span>

减少动画

.transition-none 和 .animation-none 总是被应用,无论用户的运动偏好如何——当你想在每种情况下都移除动画时,请使用它们。Bootstrap 已经为其自身组件支持 prefers-reduced-motion 媒体特性,因此你不需要仅仅为了遵守该设置而使用它们。

添加动作的工具.animation-shake和.animation-pop是装饰性的,因此当用户选择减少动画时,它们会自动被禁用。

CSS

变量

组件将它们的运动声明为 -duration 和 -timing 代币对,因此你可以独立调整速度和缓动。例如,淡出和折叠过渡分别读取 --bs-transition-fade-duration / --bs-transition-fade-timing 和 --bs-transition-collapse-duration / --bs-transition-collapse-timing。

$fade-tokens: defaults(
  (
    --transition-fade-duration: .15s,
    --transition-fade-timing: linear,
  ),
  $fade-tokens
);
// stylelint-disable custom-property-no-missing-var-function
$collapse-tokens: defaults(
  (
    --transition-collapse-property: "block-size, display",
    --transition-collapse-duration: .35s,
    --transition-collapse-timing: ease,
  ),
  $collapse-tokens
);
// stylelint-enable custom-property-no-missing-var-function

我们的覆盖组件——对话框、抽屉和菜单——在 :root 级别共享一个缓动曲线,因此单一的重写可以重新设置这三者的样式。

// Shared easing curve for overlay components (dialog, drawer, menu)
--transition-timing-overlay: cubic-bezier(.22, 1, .36, 1),

Sass 工具 API

运动工具在我们的工具 API scss/_utilities.scss 中声明。了解如何使用工具 API。

"transition": (
  property: transition,
  class: transition,
  values: (
    none: none,
  )
),
"animation": (
  property: animation,
  class: animation,
  values: (
    none: none,
    shake: animation-shake .82s cubic-bezier(.36, .07, .19, .97) both,
    pop: animation-pop .3s cubic-bezier(.34, 1.56, .64, 1) both,
  )
),