网站已运行
22天 0时 50分 16秒

HTML&CSS 动态天气图标实现教程 - 前端开发必备技能

小不© 允许规范转载
名人名言:谁对时间越吝啬,时间就对谁越慷慨

HTML&CSS:必学!手把手教你实现动态天气图标

在 Web 开发中,动态图标可以为页面增添活力与趣味。今天,就让我们一起探索如何利用 HTML 和 CSS 打造一组精美的动态天气图标,为你的项目增色不少。

演示效果

动态天气图标.png


CSS 样式与动画

接下来,我们通过 CSS 为这些元素添加样式和动画效果,让图标动起来。

基础样式设置


css 复制  


html {
    box-sizing: border-box;
}

html *,
html *:before,
html *:after {
    box-sizing: inherit;
}

body {
    max-width42em;
    padding2em;
    margin0 auto;
    color#161616;
    font-family'Roboto', sans-serif;
    text-align: center;
    background-color: currentColor;
}

h1 {
    margin-bottom1.375em;
    color#fff;
    font-weight100;
    font-size2em;
    text-transform: uppercase;
}

图标容器样式


css 复制  


.icon {
    position: relative;
    display: inline-block;
    width12em;
    height10em;
    font-size1em;
    margin1em;
}

云朵样式


css 复制  


.cloud {
    position: absolute;
    z-index1;
    top50%;
    left50%;
    width3.6875em;
    height3.6875em;
    margin: -1.84375em;
    background: currentColor;
    border-radius50%;
    box-shadow: -2.1875em 0.6875em 0 -0.6875em2.0625em 0.9375em 0 -0.9375em0 0 0 0.375em #fff, -2.1875em 0.6875em 0 -0.3125em #fff2.0625em 0.9375em 0 -0.5625em #fff;
}

.cloud:after {
    content'';
    position: absolute;
    bottom0;
    left: -0.5em;
    display: block;
    width4.5625em;
    height1em;
    background: currentColor;
    box-shadow0 0.4375em 0 -0.0625em #fff;
}

太阳样式


css 复制  


.sun {
    position: absolute;
    top50%;
    left50%;
    width2.5em;
    height2.5em;
    margin: -1.25em;
    background: currentColor;
    border-radius50%;
    box-shadow0 0 0 0.375em #fff;
    animation: spin 12s infinite linear;
}

.rays {
    position: absolute;
    top: -2em;
    left50%;
    display: block;
    width0.375em;
    height1.125em;
    margin-left: -0.1875em;
    background#fff;
    border-radius0.25em;
    box-shadow0 5.375em #fff;
}

.rays:before,
.rays:after {
    content'';
    position: absolute;
    top0em;
    left0em;
    display: block;
    width0.375em;
    height1.125em;
    transformrotate(60deg);
    transform-origin50% 3.25em;
    background#fff;
    border-radius0.25em;
    box-shadow0 5.375em #fff;
}

.rays:before {
    transformrotate(120deg);
}

雨滴样式


css 复制  


.rain:after {
    content'';
    position: absolute;
    z-index2;
    top50%;
    left50%;
    width1.125em;
    height1.125em;
    margin: -1em 0 0 -0.25em;
    background#0cf;
    border-radius100% 0 60% 50% / 60% 0 100% 50%;
    box-shadow0.625em 0.875em 0 -0.125em rgba(2552552550.2), -0.875em 1.125em 0 -0.125em rgba(2552552550.2), -1.375em -0.125em 0 rgba(2552552550.2);
    transformrotate(-28deg);
    animation: rain 3s linear infinite;
}

动画定义


css 复制  


/* 旋转动画 */
@keyframes spin {
    100% {
        transformrotate(360deg);
    }
}

/* 云朵动画 */
@keyframes cloud {
    0% {
        opacity0;
    }
    50% {
        opacity0.3;
    }
    100% {
        opacity0;
        transformscale(0.5translate(-200%, -3em);
    }
}

/* 雨滴动画 */
@keyframes rain {
    0% {
        background#0cf;
        box-shadow0.625em 0.875em 0 -0.125em rgba(2552552550.2), -0.875em 1.125em 0 -0.125em rgba(2552552550.2), -1.375em -0.125em 0 #0cf;
    }
    25% {
        box-shadow0.625em 0.875em 0 -0.125em rgba(2552552550.2), -0.875em 1.125em 0 -0.125em #0cf, -1.375em -0.125em 0 rgba(2552552550.2);
    }
    50% {
        backgroundrgba(2552552550.3);
        box-shadow0.625em 0.875em 0 -0.125em #0cf, -0.875em 1.125em 0 -0.125em rgba(2552552550.2), -1.375em -0.125em 0 rgba(2552552550.2);
    }
    100% {
        box-shadow0.625em 0.875em 0 -0.125em rgba(2552552550.2), -0.875em 1.125em 0 -0.125em rgba(2552552550.2), -1.375em -0.125em 0 #0cf;
    }
}

/* 闪电动画 */
@keyframes lightning {
    45% {
        color#fff;
        background#fff;
        opacity0.2;
    }
    50% {
        color#0cf;
        background#0cf;
        opacity1;
    }
    55% {
        color#fff;
        background#fff;
        opacity0.2;
    }
}

总结

通过上述 HTML 和 CSS 代码,我们成功实现了一组生动的动态天气图标。这些图标不仅外观精美,还能通过简单的 CSS 动画实现各种天气状态的动态展示,如太阳雨、雷暴、多云、雪花、晴天和雨天等。你可以将这些图标应用到天气应用、网站天气展示模块等场景中,为用户带来更加直观和生动的体验。快动手试试吧,相信你能创作出更多精彩的动态图标!


相关标签

前端开发技能
天气图标实现
CSS 动画教程
网页设计技巧