我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue transition实现点赞动画效果的示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue transition实现点赞动画效果的示例

效果一览

爱心效果

材料:爱心图标两个,没有我这种 icon 组件的用 png 图片代替


<transition :name=" isLike ? 'zoom' : '' " mode="out-in">
    <!-- 爱心图标 -->
    <icon data="@icon/like.svg" color="#FF0000" v-if="isLike" key="like"></icon>
    <icon data="@icon/unlike.svg" color="#333333" v-else key="unlike"></icon>
</transition>

因为在点赞时有动画,取消点赞不要动画,所以 transition 的 name 属性需要根据 isLike 变量变化,当 isLiketrue 时,给他 zoom 动画,否则不给动画。动画模式是 out-in 即先出后进。原来的图标先从大变小,然后新图标再从小变大。

这里注意当两个切换的组件名称一致时,需要加 key 属性,以区分两个组件,否则动画不会生效

接下来写 css



.zoom-enter-active, .zoom-leave-active {
    transition: all .15s cubic-bezier(0.42, 0, 0.34, 1.55);
}


.zoom-enter, .zoom-leave-to {
    transform: scale(0);
}


.zoom-enter-to, .zoom-leave {
    transform: scale(1);
}

根据官方文档描述,.name-enter-active 和 .name-leave-active 会在动画进行时设置到 icon 组件的 class 中,所以这里我们设置 transition 的动画属性,时间以及曲线。

因为我们需要在放大时略微比 scale(1) 要大一点再回到正常大小,所以要自定义动画曲线 cubic-bezier(0.42, 0, 0.34, 1.55) 。这个曲线怎么来的呢?

打开 chrome 的调试面板,随便找个 dom 设置 transition-timing-function: ease; 然后点击 ease 旁边的曲线小图标

拖动拉杆就可以调整曲线

在动画快结尾的时候,使曲线超出结束点即可。

然后复制曲线面板下面的值 cubic-bezier(0.25, 0.1, 0.27, 1.32) 即可。

更多关于动画时间曲线的知识,这里就不赘述了,网上有很多相关知识。

关于缩放部分,按照上述 css 设定以及 mode="out-in" 动画模式是先出后进,在点赞时。

  1. 原来的爱心开始离场,此时原来爱心缩放状态为 1,即大小的 100%
  2. 爱心离场动画进行中,此时开始从 1 缩放到 0,即大小的 0%
  3. 原爱心离场完成,新爱心开始进场,此时新爱心缩放状态为 0
  4. 新爱心进场动画进行中,此时开始从 0 动画缩放到结束状态 1

当取消点赞的时候,isLikefalse,transition 的 name 就等于空字符串,此时就不会有动画了。

数字滚动动画

因为只是数字的变化,因此 transition 里只需要一个 div 即可。只是要注意 div 设置 key,以标识数据变动。


<div class="like-num-wrapper">
    <transition :name="item.is_like ? 'plus' : 'minus'">
        <div
                class="like-num"
                :style="{color: item['is_like'] ? 'red': '#333'}"
                :key="item['like_num']"
        >
            {{item['like_num']}}
        </div>
    </transition>
</div>

  .like-num-wrapper {
    position: relative;
    margin-left: 16px;
    text-align: end;
    font-size: 13px;
    height: 17px;
    overflow-y: hidden;

    .like-num {
      top: 0;
      left: 0;
      position: relative;
      line-height: 17px;
    }
  }

需要注意我们为了好计算上下滚动的距离,所以需要把数字的高度定死在 17px,接下来写 transition 的动画 class。我们通过点赞状态来判断应该用那一套动画,点赞时 transition 的 name 是 plus ,取消点赞时是 minus


// 点赞数字+1动画
.plus-enter-active, .plus-leave-active {
  transition: all .3s ease-in;
}

.plus-enter, .plus-leave {
  transform: translateY(0);
}

.plus-enter-to, .plus-leave-to {
  transform: translateY(-17px);
}

// 点赞数字-1动画
.minus-enter-active, .minus-leave-active {
  transition: all .3s ease-in;
}

.minus-enter {
  transform: translateY(-34px);
}

.minus-enter-to {
  transform: translateY(-17px);
}

.minus-leave {
  transform: translateY(0);
}

.minus-leave-to {
  transform: translateY(17px);
}

点赞动画

点赞动画很简单,在点赞时会在老的数字div下面生成一个新数字div。此时只需要让他们都往上移动 17px 即可。

因为取消点赞是数字从上往下滚动,所以需要让数字 1 的初始位置在 2 上面。所以写出如下代码,设定数字 1 的动画初始位置


.minus-enter {
  transform: translateY(-34px);
}

为什么是 -34px ?因为数字div的高度是 17px 往上移 17px 会和 2 重叠,那么数字 1 再往上移动 17px 就会出现在 2 的上面。-17-17 = 34 这一切都发生在电光火石之间。

接下来在 .minus-enter-to 中位移到 -17px 就可以实现 1 往下滚动到 2 这个效果了。

数字 2 的离场动画就简单多了 直接从 0 到 17px 就可以滚出去了。

至此整个点赞效果就完成了

以上就是Vue transition实现点赞动画效果的示例的详细内容,更多关于vue transition实现点赞效果的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue transition实现点赞动画效果的示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用Vue transition 实现点赞动画效果

要实现点赞动画效果,你可以使用Vue的过渡(transition)组件。下面是一个简单的示例代码:```html 点赞<
2023-09-21

iOS实现抖音点赞动画效果

本文实例为大家分享了iOS实现抖音点赞动画的具体代码,供大家参考,具体内容如下 1. 概述 最近看到抖音点赞爱心的动画效果比较好,出于好奇,自己也研究仿照动画效果写了一个,不喜欢的朋友可不要喷我噢!!! 话不多说,先来看一下执行效果。2.
2022-05-31

Android怎么实现点赞动画效果

今天小编给大家分享一下Android怎么实现点赞动画效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言对接下来功能实
2023-06-29

iOS实现点赞动画特效

本文实例为大家分享了iOS实现点赞动画特效的具体代码,供大家参考,具体内容如下 动画的基本使用 动画的实现基本上是基于对View控件和View的layer属性进行操作,对视图进行移动,尺寸变换,透明度变换,旋转等一系列操作。 关键帧动画:
2022-06-05

利用Android实现一种点赞动画效果的全过程

最近做项目需要实现点赞动画,下面这篇文章主要给大家介绍了关于利用Android实现一种点赞动画效果的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-12-08

如何通过Jetpack Compose实现双击点赞动画效果

这篇文章主要介绍如何通过Jetpack Compose实现双击点赞动画效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现步骤先红色画个爱心Icon( Icons.Filled.Favorite, "爱
2023-06-28

基于WPF实现3D画廊动画效果的示例代码

这篇文章主要为大家详细介绍了如何基于WPF实现简单的3D画廊动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
2023-02-28

编程热搜

目录