> 文档中心 > 用HTML+css制作一个动态的天气图标

用HTML+css制作一个动态的天气图标


前言

本文讲解用HTML+css制作一个动态的天气图标,如果觉得对你有帮助请关注小编,你的支持就是我更新的动力!


成品展示:

本程序是一个动态的
在这里插入图片描述

一、HTML部分

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>纯css实现简约的天气图标动画特效</title>    <link rel="stylesheet" href="index.css"></head><body>    <div class="container">  <div class="sunny">     <div class="sun">  <div class="rays"></div>     </div> </div>  <div class="rainy">     <div class="cloud"></div>     <div class="rain"></div> </div>  <div class="cloudy">     <div class="cloud"></div>     <div class="cloud"></div> </div>    </div></body></html>

二、css部分

/* 初始化 */*{    margin: 0;    padding: 0;}body{    /* 100%的窗口高度 */    height: 100vh;    /* 弹性布局 水平 + 垂直居中 */    display: flex;    justify-content: center;    align-items: center;    /* 自定义属性 (变量) 通过 var函数进行调用 */    --bg-color:#161616;    background-color: var(--bg-color);}.container{    width: 700px;    display: flex;    /* 让两个div中间距离相等 */    justify-content: space-around;}/* 晴 */.sunny{    /* 相对定位 */    position: relative;    width: 100px;    height: 100px;    /* 弹性布局 水平 + 垂直居中 */    display: flex;    justify-content: center;    align-items: center;}/* 太阳 */.sunny .sun{    width: 40px;    height: 40px;    border-radius: 50%;    background-color: var(--bg-color);    box-shadow: 0 0 0 6px orange;    /* 执行动画 :动画名  时长  线性的  无限次播放 */    animation: sunny 10s linear infinite;}/* 光线 */.sunny .sun .rays{    /* 绝对定位 */    position: absolute;    top: -32px;    left: 50%;    transform: translateX(-50%);    width: 6px;    height: 18px;    background-color: yellow;    box-shadow: 0 86px yellow;    border-radius: 4px;}.sunny .sun .rays::before,.sunny .sun .rays::after{    content: "";    position: absolute;    top: 0;    left: 0;    width: 6px;    height: 18px;    background-color: yellow;    box-shadow: 0 86px yellow;    border-radius: 4px;    transform: rotate(60deg); transform-origin: 50% 52px;}.sunny .sun .rays::before{    transform: rotate(-60deg);    }/* 雨天 */.rainy{    position: relative;    width: 100px;    height: 100px;    /* 弹性布局 水平 + 垂直居中 */    display: flex;    justify-content: center;    align-items: center;    }/* 云朵 */.rainy .cloud{    width: 60px;    height: 60px;    /* --bg-color:red; */    background-color: var(--bg-color);    position: absolute;    border-radius: 50%;    box-shadow: -35px 11px 0 -11px var(--bg-color), 33px 15px 0 -15px var(--bg-color), 0 0 0 6px lightgray, -35px 11px 0 -5px lightgray, 33px 15px 0 -9px lightgray;}/* 让云朵下边为直边 */.rainy .cloud::after{    content: "";    width: 73px;    height: 16px;    background-color: var(--bg-color);    box-shadow: 0 6px 0 0 lightgray;    position: absolute;    bottom: 0;    left: -8px;}/* 雨滴背景范围 */.rainy .rain{    width: 60px;    height: 60px;    background-color: var(--bg-color);    position: absolute;    top: 55%;    left: 20%;}/* 雨滴 */.rainy .rain::after{    content: "";    position: absolute;    top: 50%;    left: 50%;    width: 18px;    height: 18px;    background-color: #0cf;    border-radius: 100% 0 60% 50% / 60% 0 100% 50%;    box-shadow: 10px 14px 0 -2px rgba(255, 255, 255, 0.2), -14px 18px 0 -2px rgba(255, 255, 255, 0.2), -22px -2px 0 rgba(255, 255, 255, 0.2);    transform: rotate(-28deg);    margin: -16px 0 0 -4px;    /* 执行动画 */    animation: rainy 2s linear infinite;}/* 多云 */.cloudy{    position: relative;    width: 100px;    height: 100px;    /* 弹性布局 水平 + 垂直居中 */    display: flex;    justify-content: center;    align-items: center;      }/* 云朵 */.cloudy .cloud{    z-index: 1;    width: 60px;    height: 60px;    /* --bg-color:red; */    background-color: var(--bg-color);    position: absolute;    border-radius: 50%;    box-shadow: -35px 11px 0 -11px var(--bg-color),    33px 15px 0 -15px var(--bg-color),    0 0 0 6px lightgray,    -35px 11px 0 -5px lightgray,    33px 15px 0 -9px lightgray;}/* 让云朵下边为直边 */.cloudy .cloud::after{    content: "";    width: 73px;    height: 16px;    background-color: var(--bg-color);    box-shadow: 0 6px 0 0 lightgray;    position: absolute;    bottom: 0;    left: -8px;}/* 小云朵 */.cloudy .cloud:nth-child(2){    z-index: 0;    background-color: #fff;    box-shadow: -35px 11px 0 -11px #fff,    33px 15px 0 -15px #fff,    0 0 0 6px #fff,    -35px 11px 0 -5px #fff,    33px 15px 0 -9px #fff;    opacity: 0.3;    transform: scale(0.5) translate(96px,-48px);    /* 执行动画 */    animation: cloudy 3s linear infinite;}/* 小云朵的下面 */.cloudy .cloud:nth-child(2)::after{    background-color: #fff;}/* 定义一个动画 *//* 太阳 */@keyframes sunny{    0%{ transform: rotate(0);    }    100%{ transform: rotate(360deg);    }}/* 雨滴 */@keyframes rainy{    0%{ background-color: #0cf; box-shadow:  10px 14px 0 -2px rgba(255, 255, 255, 0.2),     -14px 18px 0 -2px rgba(255, 255, 255, 0.2),     -22px -2px 0 rgba(255, 255, 255, 0.2);    }    25%{ box-shadow:  10px 14px 0 -2px rgba(255, 255, 255, 0.2),     -14px 18px 0 -2px #0cf,     -22px -2px 0 rgba(255, 255, 255, 0.2);    }    50%{ background-color: rgba(255, 255, 255, 0.2); box-shadow:  10px 14px 0 -2px #0cf,     -14px 18px 0 -2px rgba(255, 255, 255, 0.2),     -22px -2px 0 rgba(255, 255, 255, 0.2);    }    100%{ box-shadow:  10px 14px 0 -2px rgba(255, 255, 255, 0.2),     -14px 18px 0 -2px rgba(255, 255, 255, 0.2),     -22px -2px 0 #0cf;    }}/* 小云朵浮动 */@keyframes cloudy{    0%{ opacity: 0;    }    50%{ opacity: 0.3;    }    100%{ opacity: 0; transform: scale(0.5) translate(-200%,-48px);    }}

关注我

在这里插入图片描述