当前位置:   article > 正文

CSS3动画-transition、animation、transform(translate/scale/rotate)_css动画

css动画

目录

一、transition(过渡)

1、transition-duration 

2、transition-property

3、transition-timing-function

4、transition-delay

二、animation

1、@keyframes

2、animation-timing-function

3、animation-delay

4、animation-iteration-count:检索或设置对象动画的循环次数

5、animation-play-state:检索或设置对象动画的状态(running\paused)

6、animation-direction;是否反向运动

三、transform

rotate

rotateX

rotateY

translate

translateX

translateY

scale

scaleX

scaleY

 


一、transition(过渡)

  • transition-duration    transition效果需要指定多少秒或毫秒才能完成
  • transition-property    指定CSS属性的name,transition效果
  • transition-timing-function    指定transition效果的转速曲线
  • transition-delay    定义transition效果开始的时候

1、transition-duration 

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. transition-duration: 1s;
  11. &:hover {
  12. width: 4rem;
  13. height: 4rem;
  14. }
  15. }
  16. </style>

2、transition-property

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. transition-duration: 1s;
  11. transition-property: height;
  12. &:hover {
  13. width: 4rem;
  14. height: 4rem;
  15. }
  16. }
  17. </style>

3、transition-timing-function

  • linear(默认属性)    规定以相同速度开始至结束的过渡效果(等于 cubic-bezier(0,0,1,1))。    匀速
  • ease    规定慢速开始,然后变快,然后慢速结束的过渡效果(cubic-bezier(0.25,0.1,0.25,1))。    快-慢-慢
  • ease-in    规定以慢速开始的过渡效果(等于 cubic-bezier(0.42,0,1,1))。    快-快
  • ease-out    规定以慢速结束的过渡效果(等于 cubic-bezier(0,0,0.58,1))。    慢-慢
  • ease-in-out    规定以慢速开始和结束的过渡效果(等于 cubic-bezier(0.42,0,0.58,1))。    慢-快-慢
  • cubic-bezier(n,n,n,n)    在 cubic-bezier 函数中定义自己的值。可能的值是 0 至 1 之间的数值。    自定义
     

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. transition-duration: 1s;
  11. transition-timing-function: ease-in-out;
  12. &:hover {
  13. width: 4rem;
  14. height: 4rem;
  15. }
  16. }
  17. </style>

4、transition-delay

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. transition-delay: 1s;
  11. &:hover {
  12. width: 4rem;
  13. height: 4rem;
  14. }
  15. }
  16. </style>

几个属性的简写,如下:

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. transition: all 1s ease-in-out 2s;//动画持续一秒,缓进缓出,并在两秒钟后开始执行
  11. &:hover {
  12. width: 4rem;
  13. height: 4rem;
  14. }
  15. }
  16. </style>

二、animation

  • @keyframes    定义一个动画,@keyframes定义的动画名称用来被animation-name所使用
  • animation-name    检索或设置对象所应用的动画名称 ,必须与规则@keyframes配合使用,因为动画名称由@keyframes定义
  • animation-duration    检索或设置对象动画的持续时间
  • animation-timing-function    检索或设置对象动画的过渡类型
  • animation-delay    检索或设置对象动画的延迟时间
  • animation-iteration-count    检索或设置对象动画的循环次数
  • animation-direction    检索或设置对象动画在循环中是否反向运动
  • animation-play-state    检索或设置对象动画的状态

1、@keyframes

 

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. &:hover {
  11. animation: mymove 2s;
  12. }
  13. }
  14. @keyframes mymove {
  15. 0% {
  16. width: 2rem;
  17. height: 2rem;
  18. }
  19. 50% {
  20. width: 4rem;
  21. height: 4rem;
  22. }
  23. 100% {
  24. width: 2rem;
  25. height: 2rem;
  26. margin-left: 5rem;
  27. }
  28. }
  29. </style>

其实上面的animation: mymove 2s;就是animation-name:mymove  和 animation-duration:2s;  的简写形式

2、animation-timing-function

  • linear    动画从头到尾的速度是相同的。
  • ease    默认。动画以低速开始,然后加快,在结束前变慢。
  • ease-in    动画以低速开始。
  • ease-out    动画以低速结束。
  • ease-in-out    动画以低速开始和结束。
  • cubic-bezier(n,n,n,n)    在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。
     

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. &:hover {
  11. animation: mymove 2s;
  12. animation-timing-function: ease-in-out;
  13. }
  14. }
  15. @keyframes mymove {
  16. 0% {
  17. width: 2rem;
  18. height: 2rem;
  19. }
  20. 50% {
  21. width: 4rem;
  22. height: 4rem;
  23. }
  24. 100% {
  25. width: 2rem;
  26. height: 2rem;
  27. margin-left: 5rem;
  28. }
  29. }
  30. </style>

3、animation-delay

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. &:hover {
  11. animation: mymove 2s;
  12. animation-delay: 1s;
  13. }
  14. }
  15. @keyframes mymove {
  16. 0% {
  17. width: 2rem;
  18. height: 2rem;
  19. }
  20. 50% {
  21. width: 4rem;
  22. height: 4rem;
  23. }
  24. 100% {
  25. width: 2rem;
  26. height: 2rem;
  27. margin-left: 5rem;
  28. }
  29. }
  30. </style>

4、animation-iteration-count:检索或设置对象动画的循环次数

animation-iteration-count: infinite;表示无限循环

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. animation: mymove 2s;
  11. animation-iteration-count: infinite;
  12. }
  13. @keyframes mymove {
  14. 0% {
  15. width: 2rem;
  16. height: 2rem;
  17. }
  18. 50% {
  19. width: 4rem;
  20. height: 4rem;
  21. }
  22. 100% {
  23. width: 2rem;
  24. height: 2rem;
  25. margin-left: 5rem;
  26. }
  27. }
  28. </style>

当然,还可以指定具体的循环次数,如下:

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. animation: mymove 2s;
  11. animation-iteration-count: 3;//只循环三次
  12. }
  13. @keyframes mymove {
  14. 0% {
  15. width: 2rem;
  16. height: 2rem;
  17. }
  18. 50% {
  19. width: 4rem;
  20. height: 4rem;
  21. }
  22. 100% {
  23. width: 2rem;
  24. height: 2rem;
  25. margin-left: 5rem;
  26. }
  27. }
  28. </style>

5、animation-play-state:检索或设置对象动画的状态(running\paused)

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <script>
  5. export default {
  6. name: "",
  7. components: {},
  8. data() {
  9. return {};
  10. },
  11. mounted() {
  12. setTimeout(() => {
  13. this.$refs.ref_test.style.animationPlayState = "paused";
  14. }, 3000);
  15. setTimeout(() => {
  16. this.$refs.ref_test.style.animationPlayState = "running";
  17. }, 5000);
  18. }
  19. };
  20. </script>
  21. <style lang="scss" scoped>
  22. .test {
  23. background-color: orange;
  24. width: 2rem;
  25. height: 2rem;
  26. border-radius: 50%;
  27. animation: mymove 2s;
  28. animation-iteration-count: 3;//只循环三次
  29. }
  30. @keyframes mymove {
  31. 0% {
  32. width: 2rem;
  33. height: 2rem;
  34. }
  35. 50% {
  36. width: 4rem;
  37. height: 4rem;
  38. }
  39. 100% {
  40. width: 2rem;
  41. height: 2rem;
  42. margin-left: 5rem;
  43. }
  44. }
  45. </style>

6、animation-direction;是否反向运动

  • normal    默认值。动画按正常播放。
  • reverse    动画反向播放。
  • alternate    动画在奇数次(1、3、5…)正向播放,在偶数次(2、4、6…)反向播放。
  • alternate-reverse    动画在奇数次(1、3、5…)反向播放,在偶数次(2、4、6…)正向播放。
  • initial    设置该属性为它的默认值。
  • inherit    从父元素继承该属性。
     

  1. <template>
  2. <div class="test"></div>
  3. </template>
  4. <style lang="scss" scoped>
  5. .test {
  6. background-color: orange;
  7. width: 2rem;
  8. height: 2rem;
  9. border-radius: 50%;
  10. animation: mymove 2s;
  11. animation-iteration-count: infinite;
  12. animation-direction: alternate;
  13. }
  14. @keyframes mymove {
  15. 0% {
  16. width: 2rem;
  17. height: 2rem;
  18. }
  19. 50% {
  20. width: 4rem;
  21. height: 4rem;
  22. }
  23. 100% {
  24. width: 2rem;
  25. height: 2rem;
  26. margin-left: 5rem;
  27. }
  28. }
  29. </style>

三、transform

rotate

  1. <template>
  2. <img src="./二哈.jpg" />
  3. </template>
  4. <style lang="scss" scoped>
  5. img {
  6. width: 3rem;
  7. height: 4rem;
  8. border-radius: 50%;
  9. animation: myRotate 2s infinite linear;
  10. }
  11. @keyframes myRotate {
  12. 0% {
  13. transform: rotate(0);
  14. }
  15. 100% {
  16. transform: rotate(360deg);
  17. }
  18. }
  19. </style>

 

 

rotateX

  1. <template>
  2. <img src="./二哈.jpg" />
  3. </template>
  4. <style lang="scss" scoped>
  5. img {
  6. width: 3rem;
  7. height: 4rem;
  8. border-radius: 50%;
  9. animation: myRotateX 2s infinite linear;
  10. }
  11. @keyframes myRotateX {
  12. 0% {
  13. transform: rotateX(0);
  14. }
  15. 100% {
  16. transform: rotateX(360deg);
  17. }
  18. }
  19. </style>

rotateY

  1. <template>
  2. <img src="./二哈.jpg" />
  3. </template>
  4. <style lang="scss" scoped>
  5. img {
  6. width: 3rem;
  7. height: 4rem;
  8. border-radius: 50%;
  9. animation: myRotateY 2s infinite linear;
  10. }
  11. @keyframes myRotateY {
  12. 0% {
  13. transform: rotateY(0);
  14. }
  15. 100% {
  16. transform: rotateY(360deg);
  17. }
  18. }
  19. </style>

translate

  1. <template>
  2. <div>
  3. <img src="./二哈.jpg" />
  4. </div>
  5. </template>
  6. <style lang="scss" scoped>
  7. img {
  8. width: 3rem;
  9. height: 4rem;
  10. border-radius: 50%;
  11. animation: myTranslate 2s infinite linear;
  12. }
  13. @keyframes myTranslate {
  14. 0% {
  15. transform: translate(0, 0);
  16. }
  17. 100% {
  18. transform: translate(8rem, 8rem);
  19. }
  20. }
  21. </style>

translateX

  1. <template>
  2. <div>
  3. <img src="./二哈.jpg" />
  4. </div>
  5. </template>
  6. <style lang="scss" scoped>
  7. img {
  8. width: 3rem;
  9. height: 4rem;
  10. border-radius: 50%;
  11. animation: myTranslateX 2s infinite linear;
  12. }
  13. @keyframes myTranslateX {
  14. 0% {
  15. transform: translateX(0);
  16. }
  17. 100% {
  18. transform: translateX(8rem);
  19. }
  20. }
  21. </style>

translateY

  1. <template>
  2. <div>
  3. <img src="./二哈.jpg" />
  4. </div>
  5. </template>
  6. <style lang="scss" scoped>
  7. img {
  8. width: 3rem;
  9. height: 4rem;
  10. border-radius: 50%;
  11. animation: myTranslateY 2s infinite linear;
  12. }
  13. @keyframes myTranslateY {
  14. 0% {
  15. transform: translateY(0);
  16. }
  17. 100% {
  18. transform: translateY(8rem);
  19. }
  20. }
  21. </style>

scale

  1. <template>
  2. <div>
  3. <img src="./二哈.jpg" />
  4. </div>
  5. </template>
  6. <style lang="scss" scoped>
  7. img {
  8. width: 3rem;
  9. height: 4rem;
  10. border-radius: 50%;
  11. animation: myScale 2s infinite linear;
  12. }
  13. @keyframes myScale {
  14. 0% {
  15. transform: scale(0, 0);
  16. }
  17. 100% {
  18. transform: scale(1, 1);
  19. }
  20. }
  21. </style>

scaleX

  1. <template>
  2. <div>
  3. <img src="./二哈.jpg" />
  4. </div>
  5. </template>
  6. <style lang="scss" scoped>
  7. img {
  8. width: 3rem;
  9. height: 4rem;
  10. border-radius: 50%;
  11. animation: myScaleX 2s infinite linear;
  12. }
  13. @keyframes myScaleX {
  14. 0% {
  15. transform: scaleX(0);
  16. }
  17. 100% {
  18. transform: scaleX(1);
  19. }
  20. }
  21. </style>

scaleY

  1. <template>
  2. <div>
  3. <img src="./二哈.jpg" />
  4. </div>
  5. </template>
  6. <style lang="scss" scoped>
  7. img {
  8. width: 3rem;
  9. height: 4rem;
  10. border-radius: 50%;
  11. animation: myScaleY 2s infinite linear;
  12. }
  13. @keyframes myScaleY {
  14. 0% {
  15. transform: scaleY(0);
  16. }
  17. 100% {
  18. transform: scaleY(1);
  19. }
  20. }
  21. </style>

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号