css
主页 > 网页 > css >

css3 实现icon刷新转动效果的代码

2025-02-21 | 佚名 | 点击:

先了解一下-webkit-transform、animation、@keyframes这三个属性吧

-webkit-transform 可以实现平移、旋转、缩放和倾斜等效果 有以下几个属性

translate(x,y) :元素平移

rotate(angle): 旋转元素 比如0deg到360deg 0度到360度

scale(x,y):缩放元素 x,y分别表示水平和垂直方向的缩放比例

skew(x-angle,y-angle) :倾斜元素,分别表示水平和垂直方向的倾斜角度

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

 @keyframes 定义动画的关键帧的 比如 想初始状态 过度到中间时 结束时 几个时间段不同的动画状态

常见 0% 、50%、100%

30%时旋转到100度 ,50%时旋转到180度 ........ rotates是这个动画的名字 

1

2

3

4

5

6

7

@keyframes rotates {

    0% { -webkit-transform: rotate(0deg) }

    30% { -webkit-transform: rotate(100deg) }

    50% { -webkit-transform: rotate(180deg) }

    70% { -webkit-transform: rotate(270deg) }

    100% {-webkit-transform: rotate(360deg) }

  }

 简单写个例子吧 就一个加载的状态

让这个element组件的icon五角星转起来

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<template>

  <div>

    <el-icon :size="29" :class="{'refresh-loading':isRefresh}" @click="loading"><StarFilled /></el-icon>

  </div>

</template>

<script>

import { StarFilled } from "@element-plus/icons-vue";

import { ref } from "vue";

export default {

  setup() {

    const isRefresh = ref(false)

    const loading = ()=>{

        isRefresh.value = !isRefresh.value

    }

    return {

      isRefresh,

      loading

    };

  },

};

</script>

<style lang="less">

  .refresh-loading{

    animation: rotates 1s linear infinite;

  }

  @keyframes rotates {

    0% { -webkit-transform: rotate(0deg) }

    30% { -webkit-transform: rotate(100deg) }

    50% { -webkit-transform: rotate(180deg) }

    70% { -webkit-transform: rotate(270deg) }

    100% {-webkit-transform: rotate(360deg) }

  }

</style>

原文链接:
相关文章
最新更新