vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue实现动画效果

Vue中实现动画效果的多种方法小结

作者:常乐hhh

平时我们能在网页上看到很多动画效果,这些效果看起来就很引人注目,我们是不是也可以在自己的项目中添加一些动画效果,让我们的页面看起来更加的高端大气上档次,博人眼球,所以本文给大家介绍了Vue中实现动画效果的多种方法,需要的朋友可以参考下

平时我们能在网页上看到很多动画效果,这些效果看起来就很引人注目。所以呢,我们是不是也可以在自己的项目中添加一些动画效果,让我们的页面看起来更加的高端大气上档次,博人眼球。所以就特意的去学习了一下关于Vue的一些动画效果,下面是我对实现动画效果的一些总结,希望可以帮助大家,如果有什么不对的地方,还望大佬们批评指正一下,感谢。

前戏准备

大致代码如下:

<div class="page">
    <div class="card">
    
      <div class="card__header">
        <h3 class="card-title">{{ name }}</h3>
        <div class="card-subtitle">Transition & Animation</div>
      </div>
      
      <div class="card__content">
        <div :class="['emoji',{hidden:!isActive}]">⭐</div>
      </div>
      
      <div class="card__action">
        <button type="button" @click="isActive =!isActive">请按这里</button>
      </div>

    </div>
  </div>
import {ref} from 'vue'

const name ='Vue动画'
const isActive =ref(true)

@import './styles/app.css';
@import './styles/card.css';
.card {
    display: flex;
    flex-direction: column;
    align-items: center;
    max-width: 300px;
    box-sizing: border-box;
    padding: 32px;
    margin: 0 auto;
    background: #f8f8f8;
    border-radius: 10px;
  }

  .card__header {
    text-align: center;
    margin-bottom: 32px;
  }

  .card-title {
    margin-bottom: 8px;
  }

  .card-subtitle {
    font-size: 12px;
    color: #989898;
  }

  .card__content {
    min-height: 250px;
  }

  .card__action > button {  
    outline: none;
    border: none;
    background: none;
    border: 2px solid #d3c7c7;
    padding: 10px 24px;
    cursor: pointer;
    margin: 4px;
  }

  .card__action > button:active {
    opacity: 0.8;
  }
input[type='text'],
textarea,
select {
  padding: 4px 8px;
  margin: 8px 0;
  margin-right: 8px;
  font-size: 16px;
}

label {
  margin-left: 4px;
}
.page {
  padding: 32px;
  margin: 32px;
}

.emoji {
  font-size: 80px;
}

.hidden {
  opacity: 0;
}

这个时候的效果图是这样的:

css中的transition和transform

在 CSS 中,transition transform 是两个非常有用的属性,它们可以为网页元素的样式变化添加动画效果。那他们该怎么用呢?

transition

transition 用于创建平滑的过渡效果,当元素的某个属性值发生改变时,在指定的时间内逐渐完成过渡。

语法transition: property duration timing-function delay;

transform

transform 用于对元素进行变换操作,例如旋转、缩放、移动、倾斜等。

常见的变换函数有:

不过在实际应用中,transition 和 transform 常常结合使用,以实现更加丰富和复杂的动画效果。所以我们在app.css样式组件中的.emoji.hidden添加一点属性就好,其他不用修改。

.emoji {
  font-size: 80px;
  transition: 0.5s;
}

.hidden {
  opacity: 0;
  transform: translateX(30px);
}

来看看效果图:

css中的animation

animation 是 CSS 中用于创建更复杂和自定义动画的强大属性。

语法:

animation: name duration timing-function delay iteration-count direction fill-mode;

@keyframes 规则

通过 @keyframes 来定义动画的关键帧。

@keyframes pulse {
    from{
        transform:scale3d(1,1,1); 
    }
    50%{
        transform:scale3d(1.5,1.5,1.5);
    }
    to{
        transform:scale3d(1,1,1)
    }
}

定义了pulse动画的不同状态。通过设定transform属性中的scale3d()函数,元素在动画过程中会在三维空间内缩放。具体来说,from关键字表示动画开始时元素的状态,这里是原始大小(1,1,1);50%表示动画中间的状态,元素被放大到1.5倍(1.5,1.5,1.5);to关键字表示动画结束时元素的状态,它会回到原始大小(1,1,1),确保动画循环时的连贯性。

animation 相较于 transition 更加灵活和强大,可以创建多关键帧、更复杂的动画效果,并且能够更好地控制动画的播放次数、方向等参数。但同时,在使用时也需要注意性能优化,避免过度使用复杂的动画影响页面的加载和渲染速度。

OK,那我们再创建一个animation.css样式组件:

.pulse{
    animation-name:pulse;
    animation-duration: 1s;
    animation-iteration-count: infinite;
}
/* css 性能优化  scale3d() GPU加速  动画不要影响周围的文档流(图层)*/
@keyframes pulse {
    from{
        transform:scale3d(1,1,1); 
    }
    50%{
        transform:scale3d(1.5,1.5,1.5);
    }
    to{
        transform:scale3d(1,1,1)
    }
}

记得在vue中style lang="css" scoped部分引入:

<style lang="css" scoped>
@import './styles/app.css';
@import './styles/card.css';
@import './styles/animation.css';
</style>

并且在template部分修改代码

来看看效果图:

vue中的transition内置组件

在 Vue 中,transition 是一个内置组件,用于在元素或组件进入和离开 DOM 时应用动画效果。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。

transition 组件的一些特点和用法如下:

结合 CSS 过渡或动画:一般会搭配原生 CSS 过渡或动画一起使用,通过设置 transition或者animation CSS 属性来定义动画的属性、持续时间和速度曲线等。

当然,还有其他的用法,例如:

通过合理使用 transition 组件和相关的过渡类、钩子函数,可以实现各种丰富的动画效果,提升用户体验。同时,可以结合 CSS 过渡和动画来进一步增强动画的表现力。

第三方库Animate.css

在 Vue 项目中使用 animation.css 库,您可以按照以下步骤进行操作:

结语

制作动画的效果有很多,在我们的项目中加入这些动画效果,更能博人眼球引人注目,显得更加的高端优雅。希望这些可以帮助到你,结合你天马行空的想法,去制作多种动画效果。

以上就是Vue中实现动画效果的多种方法小结的详细内容,更多关于Vue实现动画效果的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文