美文网首页让前端飞Web前端之路
纯CSS实现动态的天气图标

纯CSS实现动态的天气图标

作者: alanwhy | 来源:发表于2019-07-17 23:16 被阅读15次

原文链接:单标签!纯CSS实现动态晴阴雨雪

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>单标签!纯CSS实现动态晴阴雨雪</title>
</head>

<body>
  <div class="weather sunny"></div>
  <div class="weather cloudy"></div>
  <div class="weather rainy"></div>
  <div class="weather snowy"></div>
</body>
<style>
  .weather {
    position: relative;
    display: inline-block;
    width: 180px;
    height: 240px;
    background: #23b7e5;
    border-radius: 8px;
  }

  .sunny:before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 60px;
    height: 60px;
    background: #F6D963;
    border-radius: 50%;
    box-shadow: 0 0 20px #ff0;
    z-index: 2;
  }

  .sunny:after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -45px 0 0 -45px;
    width: 90px;
    height: 90px;
    background: #FFEB3B;
    clip-path: polygon(50% 0%,
        65.43% 25%,
        93.3% 25%,
        78.87% 50%,
        93.3% 75%,
        64.43% 75%,
        50% 100%,
        35.57% 75%,
        6.7% 75%,
        21.13% 50%,
        6.7% 25%,
        35.57% 25%);
    z-index: 1;
    animation: sunScale 2s linear infinite;
  }

  @keyframes sunScale {
    0% {
      transform: scale(1);
    }

    50% {
      transform: scale(1.1);
    }

    100% {
      transform: scale(1);
    }
  }

  .cloudy:before,
  .rainy:before,
  .snowy:before {
    content: "";
    position: absolute;
    top: 50%;
    left: 25%;
    transform: translate(-50%, -50%);
    width: 36px;
    height: 36px;
    background: #fff;
    border-radius: 50%;
    box-shadow:
      #fff 22px -15px 0 6px,
      #fff 57px -6px 0 2px,
      #fff 87px 4px 0 -4px,
      #fff 33px 6px 0 6px,
      #fff 61px 6px 0 2px,
      #ccc 29px -23px 0 6px,
      #ccc 64px -14px 0 2px,
      #ccc 94px -4px 0 -4px;
    z-index: 2;
  }

  .cloudy:before {
    animation: cloudMove 2s linear infinite;
  }

  @keyframes cloudMove {
    0% {
      transform: translate(-50%, -50%);
    }

    50% {
      transform: translate(-50%, -60%);
    }

    100% {
      transform: translate(-50%, -50%);
    }
  }

  .rainy:after {
    content: "";
    position: absolute;
    top: 50%;
    left: 25%;
    width: 4px;
    height: 14px;
    background: #fff;
    border-radius: 2px;
    box-shadow:
      #fff 25px -10px 0,
      #fff 50px 0 0,
      #fff 75px -10px 0,
      #fff 0 25px 0,
      #fff 25px 15px 0,
      #fff 50px 25px 0,
      #fff 75px 15px 0,
      #fff 0 50px 0,
      #fff 25px 40px 0,
      #fff 50px 50px 0,
      #fff 75px 40px 0;
    animation: rainDrop 2s linear infinite;
  }

  @keyframes rainDrop {
    0% {
      transform: translate(0, 0) rotate(10deg);
    }

    100% {
      transform: translate(-4px, 24px) rotate(10deg);
      box-shadow:
        #fff 25px -10px 0,
        #fff 50px 0 0,
        #fff 75px -10px 0,
        #fff 0 25px 0,
        #fff 25px 15px 0,
        #fff 50px 25px 0,
        #fff 75px 15px 0,
        rgba(255, 255, 255, 0) 0 50px 0,
        rgba(255, 255, 255, 0) 25px 40px 0,
        rgba(255, 255, 255, 0) 50px 50px 0,
        rgba(255, 255, 255, 0) 75px 40px 0;
    }
  }

  .snowy:after {
    content: "";
    position: absolute;
    top: 50%;
    left: 25%;
    width: 8px;
    height: 8px;
    background: #fff;
    border-radius: 50%;
    box-shadow:
      #fff 25px -10px 0,
      #fff 50px 0 0,
      #fff 75px -10px 0,
      #fff 0 25px 0,
      #fff 25px 15px 0,
      #fff 50px 25px 0,
      #fff 75px 15px 0,
      #fff 0 50px 0,
      #fff 25px 40px 0,
      #fff 50px 50px 0,
      #fff 75px 40px 0;
    animation: snowDrop 2s linear infinite;
  }

  @keyframes snowDrop {
    0% {
      transform: translateY(0);
    }

    100% {
      transform: translateY(25px);
      box-shadow:
        #fff 25px -10px 0,
        #fff 50px 0 0,
        #fff 75px -10px 0,
        #fff 0 25px 0,
        #fff 25px 15px 0,
        #fff 50px 25px 0,
        #fff 75px 15px 0,
        rgba(255, 255, 255, 0) 0 50px 0,
        rgba(255, 255, 255, 0) 25px 40px 0,
        rgba(255, 255, 255, 0) 50px 50px 0,
        rgba(255, 255, 255, 0) 75px 40px 0;
    }
  }
</style>

</html>

效果图(动态)

image.png

相关文章

  • 纯CSS实现动态的天气图标

    原文链接:单标签!纯CSS实现动态晴阴雨雪 效果图(动态)

  • web前端特效演示合集

    前端特效01:使用纯CSS实现书籍3D翻页效果 前端特效02:使用纯CSS实现动态太极 前端特效03:HTML5画...

  • 随手收集

    one div实现icon one div 实现动态天气 css实现文字3D CSS实现文本干扰效果 CSS实现文...

  • css3动画--图标翻转效果

    这个效果不复杂,纯CSS就可以实现,可以给网站增加些动态效果。下面看看怎么实现的吧。 HTML CSS

  • 一些与前端开发有关的有趣的网站

    纯CSS设计的网页图标网站:one-div.com/ 用CSS设计的文件类型图标:Fileicon.css Demo

  • 各种纯css图标

    各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...

  • css实现input聚焦底部边框动态

    记录,如何用纯css实现input聚焦失焦的底部边框动态。实现效果: 具体实现:下面是具体实现代码,关于原理可以看...

  • 纯纯css如何hover之后变成动态图标呢

    今天学习一个炫酷的小技能,纯纯css实现动态图标,hover之后静止在某一个图标。 Demo效果如下: 首先我们需...

  • 纯CSS实现动态波浪效果

    在预备做这个动效之前,参考了网上的教程,结果当然是需要借助贝塞尔曲线。本人却偏好css,因为纯css实现贝赛尔曲线...

  • 纯CSS实现苹果系统的相册图标

    一、定义图标容器 定义一个容器: 居中显示: 使用flex布局做左右和垂直居中 定义icon容器的尺寸: 二、画出...

网友评论

    本文标题:纯CSS实现动态的天气图标

    本文链接:https://www.haomeiwen.com/subject/qjuhlctx.html