其他代码

纯CSS3扁平风格动态天气图标效果

阿里云


这是一组使用 纯 CSS3 animation 制作的扁平风格动态天气图标效果。这组天气图标共 7 个,分别为:晴天,多云,下雨,彩虹,夜间,闪电和下雪。

HTML 结构

各个图标都是使用一个空的<div>作为容器。有 7 个预置的 class 类分别代表各种天气:

也想出现在这里?联系我们
创客主机
  1. <div class="container">
  2.   <div class="sunny"></div> 
  3.   <div class="cloudy"></div>
  4.   <div class="rainy"></div>
  5.   <div class="snowy"></div>
  6.   <div class="rainbow"></div>
  7.   <div class="starry"></div>
  8.   <div class="stormy"></div>
  9. </div>

CSS 样式

以下雪图标为例,它执行 snowy 动画,并通过 box-shadow 属性来这组云朵效果。

  1. .snowy {
  2.   -webkit-animation: snowy 5s ease-in-out infinite 1s;
  3.           animation: snowy 5s ease-in-out infinite 1s;
  4.   background: #FFFFFF; 
  5.   border-radius: 50%;
  6.   box-shadow: 
  7.     #FFFFFF 65px -15px 0 -5px, 
  8.     #FFFFFF 25px -25px, 
  9.     #FFFFFF 30px 10px, 
  10.     #FFFFFF 60px 15px 0 -10px, 
  11.     #FFFFFF 85px 5px 0 -5px;
  12.   display: block;
  13.   height: 50px;
  14.   width: 50px;
  15.   margin-left: -60px;
  16.   position: absolute;
  17.   left: 1112px;
  18.   top: 70px;
  19. }

然后使用:after 伪元素来制作云朵的阴影效果。

  1. .snowy:after {
  2.   -webkit-animation: snowy_shadow 5s ease-in-out infinite 1s;
  3.           animation: snowy_shadow 5s ease-in-out infinite 1s;
  4.   background: #000000;
  5.   border-radius: 50%;
  6.   content: '';
  7.   height: 15px;
  8.   width: 120px;
  9.   opacity: 0.2;
  10.   position: absolute;
  11.   left: 8px;
  12.   bottom: -60px;
  13.   -webkit-transform: scale(.7);
  14.           transform: scale(.7);
  15. }

使用:before 伪元素来制作雪花效果。

  1. .snowy:before {
  2.   -webkit-animation: snowy_snow 2s infinite linear;
  3.           animation: snowy_snow 2s infinite linear;
  4.   content: '';
  5.   border-radius: 50%;
  6.   display: block;
  7.   height: 7px;
  8.   width: 7px;
  9.   opacity: 0.8;
  10.   -webkit-transform: scale(.9);
  11.           transform: scale(.9);
  12. }

这个下雪图标共执行了 3 个帧动画。

  1. @keyframes snowy {
  2.   50% { transform: translateY(-20px); transform: translateY(-20px); }
  3. }
  4. @keyframes snowy_shadow {
  5.   50% { transform: translateY(20px) scale(1); transform: translateY(20px) scale(1); opacity: 0.05; }
  6. }
  7. @keyframes snowy_snow {
  8.   0% {  
  9.     box-shadow: 
  10.       rgba(238,238,238,0) 30px 30px, 
  11.       rgba(238,238,238,0) 40px 40px,  
  12.       #EEEEEE 50px 75px, 
  13.       #EEEEEE 55px 50px, 
  14.       #EEEEEE 70px 100px, 
  15.       #EEEEEE 80px 95px, 
  16.       #EEEEEE 110px 45px, 
  17.       #EEEEEE 90px 35px; 
  18.   }
  19.   25% {  
  20.       box-shadow: 
  21.       #EEEEEE 30px 45px,
  22.       #EEEEEE 40px 60px,
  23.       #EEEEEE 50px 90px,
  24.       #EEEEEE 55px 65px,
  25.       rgba(238,238,238,0) 70px 120px,
  26.       rgba(238,238,238,0) 80px 120px,
  27.       #EEEEEE 110px 70px,
  28.       #EEEEEE 90px 60px;
  29.   }
  30.   26% {  
  31.     box-shadow:
  32.       #EEEEEE 30px 45px,
  33.       #EEEEEE 40px 60px,
  34.       #EEEEEE 50px 90px,
  35.       #EEEEEE 55px 65px,
  36.       rgba(238,238,238,0) 70px 40px,
  37.       rgba(238,238,238,0) 80px 20px,
  38.       #EEEEEE 110px 70px,
  39.       #EEEEEE 90px 60px; 
  40.   }
  41.   50% { 
  42.     box-shadow:
  43.       #EEEEEE 30px 70px,
  44.       #EEEEEE 40px 80px,
  45.       rgba(238,238,238,0) 50px 100px,
  46.       #EEEEEE 55px 80px,
  47.       #EEEEEE 70px 60px,
  48.       #EEEEEE 80px 45px,
  49.       #EEEEEE 110px 95px,
  50.       #EEEEEE 90px 85px;
  51.   }
  52.   51% {
  53.     box-shadow:
  54.       #EEEEEE 30px 70px,
  55.       #EEEEEE 40px 80px,
  56.       rgba(238,238,238,0) 50px 45px,
  57.       #EEEEEE 55px 80px,
  58.       #EEEEEE 70px 60px,
  59.       #EEEEEE 80px 45px,
  60.       #EEEEEE 110px 95px,
  61.       #EEEEEE 90px 85px;
  62.   }
  63.   75% {
  64.     box-shadow:
  65.       #EEEEEE 30px 95px,
  66.       #EEEEEE 40px 100px,
  67.       #EEEEEE 50px 60px,
  68.       rgba(238,238,238,0) 55px 95px,
  69.       #EEEEEE 70px 80px,
  70.       #EEEEEE 80px 70px,
  71.       rgba(238,238,238,0) 110px 120px,
  72.       rgba(238,238,238,0) 90px 110px;
  73.   }
  74.   76% {
  75.     box-shadow:
  76.       #EEEEEE 30px 95px,
  77.       #EEEEEE 40px 100px,
  78.       #EEEEEE 50px 60px,
  79.       rgba(238,238,238,0) 55px 35px,
  80.       #EEEEEE 70px 80px,
  81.       #EEEEEE 80px 70px,
  82.       rgba(238,238,238,0) 110px 25px,
  83.       rgba(238,238,238,0) 90px 15px;
  84.   }
  85.   100% {
  86.     box-shadow:
  87.       rgba(238,238,238,0) 30px 120px,
  88.       rgba(238,238,238,0) 40px 120px,
  89.       #EEEEEE 50px 75px,
  90.       #EEEEEE 55px 50px,
  91.       #EEEEEE 70px 100px,
  92.       #EEEEEE 80px 95px,
  93.       #EEEEEE 110px 45px,
  94.       #EEEEEE 90px 35px;
  95.   }
  96. }

纯 CSS3 扁平风格动态天气图标效果

已有 360 人购买
  • dhna
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!