动画

可以通过Vue Transition Component来处理 CSS 过渡效果,为组件/DOM 加上一个出现或消失时的动画。

Quasars 提供一组可以直接使用的 CSS 动画。这些动画来自Animate.css,共有 80 多种动画开箱即用,打开 Animate.css 网站查看在线演示效果。

请前往 Vue页面学习更多关于如何使用<transition>组件。

安装

修改 /quasar.config.js.

// 开启全部的动画
animations: 'all'

// 或者只开启部分动画
animations: [
  'bounceInLeft',
  'bounceOutRight'
]

如果您只是构建网站,那么您可以跳过配置 quasar.config.js 的步骤,通过 CDN 的方式引入 Animate.css,示例:

<!-- src/index.template.html -->
<head>
  ...

  <!-- CDN example for Animate.css -->
  <link
    rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.0.0/animate.min.css"
  >
</head>

WARNING

注意,若您通过 link 标签引入 Animate.css,所有的 animation CSS 类都需要添加一个animate__前缀。这是 Animate.css V3 到 V4 的破坏性更新。如果您想避免使用前缀,您可以选择导入兼容性版本:compat version。但是,如果您在使用Quasar CLI,则不需要理会这些改动。

用法

注意每个动画名前都有一个"animated"字段

<!-- 单个元素/组件的示例 -->
<transition
  appear
  enter-active-class="animated fadeIn"
  leave-active-class="animated fadeOut"
>
  <!-- Wrapping only one DOM element, defined by QBtn -->
  <q-btn
    color="secondary"
    icon="mail"
    label="Email"
  />
</transition>

多个元素的动画

也可以为一组 DOM/组件添加过渡动画。

<!-- 多个元素/组件的示例 -->
<transition-group
  appear
  enter-active-class="animated fadeIn"
  leave-active-class="animated fadeOut"
>
  <!-- We wrap a "p" tag and a QBtn -->
  <p key="text">
     Lorem Ipsum
  </p>
  <q-btn
    key="email-button"
    color="secondary"
    icon="mail"
    label="Email"
  />
</transition-group>

在上面的多元素示例中注意:

  1. 注意使用 <transition-group> 代替了 <transition>.
  2. DOM/组件都有 key 属性标记,例如key="text" 或者 key="email-button"
  3. 上面的两个示例中都使用了appear属性,这使得动画在组件渲染后将立即执行一次。此属性是可选的。