当前位置:   article > 正文

div旋转 vue_详细解析:uniapp项目|vue组件形式实现的水珠晃动loading纯CSS动效

科技感特效 vue

前言

上一篇文件给大家分享了一个颇具科技感的loading动效,【→传送门】这篇文章,小凡再来跟大家分享一个很酷的水珠晃动loading动效,依然是纯CSS实现的哦!


一、效果展示及思路分析

1.效果展示

9ad774cbebda4e615c1b38552d2caa90.png

2.思路分析

我们可以将该动效拆成三部分:

  • 第一部分 中间最前端圆形图标以及百分比进度文字

  • 第二部分 圆形图标后面第一块晃动的水珠图形

  • 第三部分 圆形图标后面第二块晃动的水珠图形

84ff6fd6fe8eb06545adfca5968d7dff.png

二、实现步骤

1.准备工作

在正式开始写代码之前,需要先下载相应的IDE,以及进行必要的配置工作。

小凡在【uni-app项目|vue组件形式实现的科技感loading纯CSS动效】文章中详细讲解过如何进行必要的配置工作,点击右侧链接查看→科技感Loading动效详解

  • 下载Hbuilder X

  • 新建uni-app项目

  • 在pages文件夹下创建home文件夹,在此文件夹下创建home.vue文件

  • 修改配置文件pages.json,设置新创建的home.vue文件为应用启动项

  • 项目根目录下新建components文件夹,在此文件夹下创建BubbleLoading.vue自定义组件文件

2.代码实现

(1)在home.vue应用启动页中添加一个布局

152ecbc9281f1d98e9b9bdd93e6b2b0c.png

(2) 引入创建好的自定义vue组件,并注册到当前页面中

这里我们提前在uni-app项目中的components文件夹下创建好了自定义vue组件 BubbleLoading.vue

726ca6d4b96768251793ea8cd666c036.png

(3) 在当前页面中使用自定义vue组件

注意:在使用自定义组件时,需要在最外层再包裹一个view标签,这样做的目的是为了避免在home.vue页面中元素使用了transform样式以后,在自定义vue组件页面样式中元素z-index样式无效的问题。(本例中就存在这个大坑哦,一定要注意!一定要注意!一定要注意!重要的事情说三遍!)

fe70f0721428368257854f742cf241f6.png

(4)编写自定义vue组件BubbleLoading.vue

注意:样式代码并没有考虑浏览器兼容性问题,本代码的测试环境是谷歌浏览器

  • 在模版代码块中,添加uni-app提供的view组件元素(类似于HTML中的div)并设置class属性为bubble-loading(嗯,你没有看错,就只有这么一个view组件元素,通过CSS样式就能实现文章开头演示的动效!别着急,继续往下看......)

301a8c6f492c1ea34bb329becfad2c2a.png

  • 设置view元素的样式

e31e3894bbf67e74343867d5de443da0.png

 说明:用到的知识点有“相对定位和绝对定位”、“弹性布局”、border-radius、linear-gradient以及box-shadow,如果对这些知识点不是太了解的话,可以去翻一下资料哦,不难。这里我就不再做过多的解释了。

  • 利用CSS:before与:after选择器,创建伪元素

分析:创建的两个伪元素,大小与view元素一样,只是背景色不同而已,通过设置伪元素Y轴显示的位置,从而让伪元素从与view元素的上边缘显示出来一小部分;这时大家可以想象一下,两个露出来的小边缘,通过设置什么样的动画,才可以模拟出水珠晃动的效果呢?没错,就是旋转!通过设置两个伪元素的不同的旋转速度,就可以模拟出逼真的水珠晃动效果

df8021cbe245542670fe05a7a0446bfb.png

4c99968dd5a0dc9c6e98bc1178f88bb5.png

d213a1e9bff7633166ea85ef14ae5b18.png

4cb9facd51b80dcf5777f86ecde96b9f.png

  • 给伪元素添加CSS3动效

说明:伪元素中添加的animation属性与@keyframes一起使用,从而实现不同的动画效果,0%表示开始动画,100%表示结束动画,当然我们还可以在中间设置新的关键帧,例如:在0%和100%中间再设置一个50%。为了做出水珠晃动的效果,我们需要分别给before创建的元素和after创建的元素设置不同的动画播放速度,@keyframes规则中,除了设置旋转角度,还需要设置translateY属性,否则的话,动效会被最前面的view元素遮挡住。

5335efc106fa9dd0ae50e03377692706.png


总结

怎么样?效果做出来了吗?是不是很像水滴在晃动呀?简单总结下本文用到的知识点:

  • 伪元素中添加的animation属性与@keyframes一起使用,从而实现不同的动画效果,0%表示开始动画,100%表示结束动画,当然我们还可以在中间设置新的关键帧,例如:在0%和100%中间再设置一个50%

  • 编写自定义vue组件中用到了“相对定位与绝对定位”、“弹性布局”、border-radius、linear-gradient以及box-shadow

  • 添加CSS3动效时用到的animation属性、@keyframes规则以及transform属性,理解为什么要设置translateY的值

好啦,以上就是本文中用到的知识点,大家都学会了吗?

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/280511
推荐阅读
相关标签
  

闽ICP备14008679号