学习css过渡动画-transition

本文介绍了CSStransition属性的使用,通过实例展示了如何在Vue组件中实现宽度、透明度和位置的平滑过渡效果,以及如何设置延迟。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

  • 前言
  • transition属性语法
  • 宽度改变效果
  • 透明度改变效果
  • 位置改变效果
    • `如有启发,可点赞收藏哟~`


前言

通常,当一个元素的样式属性值发生变化时,会立即看到页面发生变化。
css属性transition能让页面元素不是立即的、而是慢慢的从一种状态变成另外一种状态,从而表现出一种动画过程。

transition属性语法

属性介绍
transition-property元素的哪一个属性将用过渡表现。例如, opacity,color。默认值是all。
transition-duration元素过渡过程持续时间。例如,1s。默认值是0s。
transition-timing-function元素过渡时的速率函数。例如, linear、 ease-in、steps动画分段函数或自定义的 cubic-bezier 函数)。默认值是ease,中间快,两头慢。
transition-delay元素过渡延迟的时间。例如,1s。默认值是0s
transition没有定义上述的,可以按照上述的属性依次填写,空格格式。且可以以逗号隔开操作多种不同元素属性的配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

属性和方法太多,可按实际效果调试


宽度改变效果

<template>
  <div class="content" :class="{'content-fade': fade}"></div>
</template>

<script>
import { defineComponent, ref } from "vue";

export default defineComponent({
  name: "App",
  components: {},
  setup() {
    const fade = ref(true);
    const change = () => (fade.value = !fade.value);
    setInterval(() => {
      change()
    }, 4000);
    return {
      fade,
    };
  },
});
</script>
<style scoped>
.content {
  width: 200px;
  height: 120px;
  background-color: aqua;
  transition: width 3s;
  /* transition: width 3s steps(+3); */
}
.content-fade {
  width: 50px;
};
</style>

透明度改变效果

<template>
  <div class="content" :class="{'content-fade': fade}"></div>
</template>

<script>
import { defineComponent, ref } from "vue";

export default defineComponent({
  name: "App",
  components: {},
  setup() {
    const fade = ref(true);
    const change = () => (fade.value = !fade.value);
    change()
    setInterval(() => {
      change()
    }, 3000);
    return {
      fade,
    };
  },
});
</script>
<style scoped>
.content {
  width: 200px;
  height: 120px;
  background-color: aqua;
  transition: opacity 3s ;
}
.content-fade {
  opacity: 0;
};
</style>

位置改变效果

<template>
  <div class="page">
    <div
      class="circle"
      :class="[fade ? 'circle-fade-in' : 'circle-fade-out']"
    ></div>
  </div>
</template>

<script>
import { defineComponent, ref } from "vue";

export default defineComponent({
  name: "App",
  components: {},
  setup() {
    const fade = ref(true);
    const change = () => (fade.value = !fade.value);
    setInterval(() => {
      change();
    }, 5000);
    return {
      fade,
    };
  },
});
</script>
<style scoped>
.page {
  width: 100vw;
  height: 100vh;
  position: relative;
}
.circle {
  position: absolute;
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background-color: aqua;
  transition: all 5s linear;
}
.circle-fade-in {
  top: 0px;
  left: 0px;
}
.circle-fade-out {
  top: calc(100vh - 120px);
  left: calc(100vw - 120px);
}
</style>

如有启发,可点赞收藏哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值