007-CSS-动画效果


💡 Tips:动画效果会有影响浏览器加载性能,无特殊要求,尽量减少动画使用

1、transition 实现动画

以 Vue 项目举例,通过 js 代码,给元素添加 点击 事件

toggle() {
  this.show = !this.show;
}

控制 DOM 添加不同类名

<div @click="toggle">按钮</div>
<div class="el transition" :class="{ active: show }"></div>

控制 高度、位移(transform) 等动态变化,实现动画

.el {
	height: 0px;
  width: 100px;
  border: 1px solid #ccc;
  background: #007aff;
}
.active {
  height: 100px;
}
.transition {
  -webkit-transition: all 0.5s;
  -moz-transition: all 0.5s;
  -ms-transition: all 0.5s;
  -o-transition: all 0.5s;
  transition: all 0.5s;
}

2、keyframes 动画

💡 Tips:如果需要实现 loading 效果,或其他稍复杂动画,可采用 keyframes 进行封装

@keyframes loadRotate {
  from {
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@-moz-keyframes loadRotate {
  from {
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@-webkit-keyframes loadRotate {
  from {
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@-o-keyframes loadRotate {
  from {
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

@-ms-keyframes loadRotate {
  from {
    -o-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -o-transform: rotate(360deg);
    -ms-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
.move-rotate {
  transform-origin: 50% 50%;
  animation: loadRotate .5s linear 0s infinite normal;
  -webkit-animation: loadRotate .5s linear 0s infinite normal;
  -moz-animation: loadRotate .5s linear 0s infinite normal;
  -o-animation: loadRotate .5s linear 0s infinite normal;
}
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-Animate-CSS 是一个 Vue.js 的插件,它可以让你很容易地在 Vue.js 应用中使用 Animate.css 动画库。 要使用 Vue-Animate-CSS,首先需要安装它。你可以通过 npm 安装: ``` npm install vue-animate-css --save ``` 安装完成后,将其添加到你的 Vue.js 应用中。在 main.js 文件中添加以下代码: ```javascript import Vue from 'vue' import VueAnimateCss from 'vue-animate-css' Vue.use(VueAnimateCss) ``` 现在,你可以在 Vue.js 组件中使用 Vue-Animate-CSS 了。假设你想要为某个元素添加 Animate.css 中的 "bounce" 动画,你可以这样写: ```html <template> <div class="animated bounce"> Hello World! </div> </template> ``` 这里的 "animated" 是 Animate.css 中定义的一个 CSS 类,它可以让元素使用 Animate.css 中的动画。而 "bounce" 则是 Animate.css 中的一个动画类,它可以让元素跳动。 你也可以将动画绑定到 Vue.js 的过渡效果中,比如在元素显示和隐藏时使用不同的动画。下面是一个例子: ```html <transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight"> <div v-if="show"> Hello World! </div> </transition> ``` 这里我们使用了 Vue.js 的过渡效果,并将 "enter-active-class" 和 "leave-active-class" 属性设置为 Animate.css 中的 "bounceInLeft" 和 "bounceOutRight" 动画类。当元素显示时,它会从左侧弹出;当元素隐藏时,它会向右侧弹出。 以上就是使用 Vue-Animate-CSS 的基本方法。你可以在其官网上查看更多使用方法和示例:https://github.com/asika32764/vue-animate-css

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值