Css实现云向四周散开的效果

1. 效果设计

  • 先找一张合适的云朵的图,透明底色。(这里就不提供了,可以根据个人喜好去自行搜索)
  • 先在容器中间放4朵云。
  • 让4朵云分别向容器的4个角移动。
  • 让云在移动的过程中,逐渐变淡,制造一种逐渐消散的感觉。
  • 示意图
    在这里插入图片描述

2. 实现

2.1 先在容器中间放4朵云

2.1.1 DOM元素

<body>
    <div id="cloud1" class="cloud"></div>
    <div id="cloud2" class="cloud"></div>
    <div id="cloud3" class="cloud"></div>
    <div id="cloud4" class="cloud"></div>
</body>

2.1.2 htmlbody样式

  *, html {
    
    
    width: 100%;
    height: 100%;
  }
  body {
    
    
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
    background: #000000; 
  }
  • 云是白色的,需要给body一个黑色(#000000)的底色,可以更好地衬托出白云的效果。
  • overflow: hidden;, 让云散出去的部分隐藏,不可见。
  • position: relative;

2.1.3 效果

在这里插入图片描述

2.2 让4朵云分别向容器的4个角的方向移动,并且逐渐透明

2.2.1 关键帧动画编写说明

  • -webkit- - 代表safari、chrome私有属性
  • forwards - 保留最后一帧时设置的样式。

2.2.2 “cloud1”(向左上角移动的云)

@keyframes cloud1 {
    
    
  0% {
    
    
    left: 5vw;
    top: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    left: 100vw;
    top: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

@-webkit-keyframes cloud1 {
    
    
  0% {
    
    
    left: 5vw;
    top: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    left: 100vw;
    top: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

2.2.3 “cloud2”(向左下角移动的云)

@keyframes cloud2 {
    
    
  0% {
    
    
    left: 5vw;
    bottom: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    left: 100vw;
    bottom: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

@-webkit-keyframes cloud2 {
    
    
  0% {
    
    
    left: 5vw;
    bottom: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    left: 100vw;
    bottom: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

2.2.4 “cloud3”(向右上角移动的云)

@keyframes cloud3 {
    
    
  0% {
    
    
    right: 5vw;
    top: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    right: 100vw;
    top: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

@-webkit-keyframes cloud3 {
    
    
  0% {
    
    
    right: 5vw;
    top: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    right: 100vw;
    top: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

2.2.5 “cloud4”(向右下角移动的云)

@keyframes cloud4 {
    
    
  0% {
    
    
    right: 5vw;
    bottom: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    right: 100vw;
    bottom: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

@-webkit-keyframes cloud4 {
    
    
  0% {
    
    
    right: 5vw;
    bottom: 5vh;
    opacity: 0.8;
    visibility: visible;
  }
  100% {
    
    
    right: 100vw;
    bottom: 100vh;
    opacity: 0.05;
    visibility: hidden;
  }
}

2.2.6 将动画绑定到对应的“云朵”DOM元素上

#cloud1 {
    
    
  left: 5vw;
  top: 5vh;
  animation: cloud1 5s forwards;
  -webkit-animation: cloud1 5s forwards;
}

#cloud2 {
    
    
  left: 5vw;
  bottom: 5vh;
  animation: cloud2 5s forwards;
  -webkit-animation: cloud2 5s forwards;
}

#cloud3 {
    
    
  right: 5vw;
  top: 5vh;
  animation: cloud3 5s forwards;
  -webkit-animation: cloud3 5s forwards;
}

#cloud4 {
    
    
  right: 5vw;
  bottom: 5vh;
  animation: cloud4 5s forwards;
  -webkit-animation: cloud4 5s forwards;
}

2.2.7 最终效果

在这里插入图片描述

2.2.8 完整代码

<!doctype html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CSS实现云向四周散开的效果</title>
</head>
<body>
<div id="cloud1" class="cloud"></div>
<div id="cloud2" class="cloud"></div>
<div id="cloud3" class="cloud"></div>
<div id="cloud4" class="cloud"></div>
</body>
<style>
  *, html {
      
      
    width: 100%;
    height: 100%;
  }

  body {
      
      
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: #000000;
  }

  @keyframes cloud1 {
      
      
    0% {
      
      
      left: 5vw;
      top: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      left: 100vw;
      top: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @-webkit-keyframes cloud1 {
      
      
    0% {
      
      
      left: 5vw;
      top: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      left: 100vw;
      top: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @keyframes cloud2 {
      
      
    0% {
      
      
      left: 5vw;
      bottom: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      left: 100vw;
      bottom: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @-webkit-keyframes cloud2 {
      
      
    0% {
      
      
      left: 5vw;
      bottom: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      left: 100vw;
      bottom: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @keyframes cloud3 {
      
      
    0% {
      
      
      right: 5vw;
      top: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      right: 100vw;
      top: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @-webkit-keyframes cloud3 {
      
      
    0% {
      
      
      right: 5vw;
      top: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      right: 100vw;
      top: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @keyframes cloud4 {
      
      
    0% {
      
      
      right: 5vw;
      bottom: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      right: 100vw;
      bottom: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  @-webkit-keyframes cloud4 {
      
      
    0% {
      
      
      right: 5vw;
      bottom: 5vh;
      opacity: 0.8;
      visibility: visible;
    }
    100% {
      
      
      right: 100vw;
      bottom: 100vh;
      opacity: 0.05;
      visibility: hidden;
    }
  }

  .cloud {
      
      
    background: url("./cloud.png") no-repeat;
    width: 650px;
    height: 481px;
    background-size: 100% 100%;
    position: absolute;
    opacity: 0.8;
    scale: 500%;
  }

  #cloud1 {
      
      
    left: 5vw;
    top: 5vh;
    animation: cloud1 5s forwards;
    -webkit-animation: cloud1 5s forwards;
  }

  #cloud2 {
      
      
    left: 5vw;
    bottom: 5vh;
    animation: cloud2 5s forwards;
    -webkit-animation: cloud2 5s forwards;
  }

  #cloud3 {
      
      
    right: 5vw;
    top: 5vh;
    animation: cloud3 5s forwards;
    -webkit-animation: cloud3 5s forwards;
  }

  #cloud4 {
      
      
    right: 5vw;
    bottom: 5vh;
    animation: cloud4 5s forwards;
    -webkit-animation: cloud4 5s forwards;
  }
</style>
</html>

猜你喜欢

转载自blog.csdn.net/u010657801/article/details/129882938
今日推荐