分享一组天气组件

先看效果:

CSS部分代码(查看更多):

css 复制代码
    <style>
        :root {
            --bg-color: #E9F5FA;
            --day-text-color: #4DB0D3;

            /* 多云 */
            --cloudy-background: #4DB0D3;
            --cloudy-temperature: #E6DF95;
            --cloudy-content: #D3EBF4;

            /* 晴 */
            --sunny-background: #E6DF95;
            --sunny-temperature: #4DB0D3;
            --sunny-content: #247490;

            /* 暴风雨 */
            --stormy-background: #0E2E3A;
            --stormy-temperature: #E6DF95;
            --stormy-content: #D3EBF4;

            /* 雪 */
            --snowy-background: #BCE1EF;
            --snowy-temperature: #0E2E3A;
            --snowy-content: #247490;

            /* 雨 */
            --rainy-background: #4DB0D3;
            --rainy-temperature: #E6DF95;
            --rainy-content: #D3EBF4;

            /* 部分多云 */
            --partly-cloudy-background: #2B8BAD;
            --partly-cloudy-temperature: #E6DF95;
            --partly-cloudy-content: #D3EBF4;
        }


        * {
            box-sizing: border-box;
            color: var(--mine-shaft);
            font-family: 'Krona One', sans-serif;
            margin: 0;
            padding: 0;
        }

        body {
            align-items: center;
            background: var(--bg-color);
            display: flex;
            justify-content: center;
            min-height: 100vh;
            padding: 1rem;
        }

        .main {
            display: flex;
            gap: 36px;
            justify-content: center;
            max-width: 100%;
            width: 1440px;
        }

        .item {
            display: flex;
            flex-direction: column;
            flex: 1;
            max-width: 165px;
        }

        .item__date {
            color: var(--day-text-color);
            font-size: 24px;
            font-weight: 400;
            letter-spacing: 0.2em;
            line-height: 30px;
            text-align: center;
            text-transform: uppercase;
        }

        .item__day {
            color: var(--day-text-color);
            font-size: 73px;
            font-weight: 400;
            line-height: 92px;
            margin-bottom: 14px;
            text-align: center;
        }

        .item__forecast-container {
            align-items: center;
            border-radius: 50px;
            box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25), 11px 4px 34px rgba(32, 77, 92, 0.7);
            display: flex;
            flex-direction: column;
            min-height: 525px;
            padding-bottom: 14px;
            padding-top: 16px;
        }

        .item__forecast-image {
            flex: 1;
            position: relative;
            width: 100%;
        }

        .item__forecast-value {
            font-family: 'Oswald', sans-serif;
            font-size: 110px;
            font-weight: 400;
            line-height: 163px;
            margin-bottom: 27px;
            position: relative;
        }

        .item__forecast-value::before {
            border: 5px solid currentColor;
            border-radius: 50%;
            content: '';
            height: 10px;
            position: absolute;
            right: -22px;
            top: 22px;
            width: 10px;
        }

        .item__forecast-precipitation,
        .item__forecast-low {
            align-items: center;
            display: flex;
            font-size: 16px;
            font-weight: 400;
            gap: 8px;
            line-height: 20px;
            margin-bottom: 10px;
        }

        /* 多云 */
        .cloudy .item__forecast-container {
            background-color: var(--cloudy-background);
        }

        .cloudy .item__forecast-value {
            color: var(--cloudy-temperature);
        }

        .cloudy .item__forecast-precipitation,
        .cloudy .item__forecast-low {
            color: var(--cloudy-content);
        }

        .cloudy .item__forecast-image {
            left: 15px;
            width: 264px;
        }

        /* 晴天 */
        .sunny .item__forecast-container {
            background-color: var(--sunny-background);
        }

        .sunny .item__forecast-value {
            color: var(--sunny-temperature);
        }

        .sunny .item__forecast-precipitation,
        .sunny .item__forecast-low {
            color: var(--sunny-content);
        }

        .sunny .item__forecast-image {
            width: 208px;
        }

        /* 暴雨 */
        .stormy .item__forecast-container {
            background-color: var(--stormy-background);
        }

        .stormy .item__forecast-value {
            color: var(--stormy-temperature);
        }

        .stormy .item__forecast-precipitation,
        .stormy .item__forecast-low {
            color: var(--stormy-content);
        }

        .stormy .item__forecast-image {
            left: 18px;
            width: 246px;
        }

        /* 雪天 */
        .snowy .item__forecast-container {
            background-color: var(--snowy-background);
        }

        .snowy .item__forecast-value {
            color: var(--snowy-temperature);
        }

        .snowy .item__forecast-precipitation,
        .snowy .item__forecast-low {
            color: var(--snowy-content);
        }

        .snowy .item__forecast-image {
            left: 6px;
            width: 230px;
        }

        /* 部分多云 */
        .partly-cloudy .item__forecast-container {
            background-color: var(--partly-cloudy-background);
        }

        .partly-cloudy .item__forecast-value {
            color: var(--partly-cloudy-temperature);
        }

        .partly-cloudy .item__forecast-precipitation,
        .partly-cloudy .item__forecast-low {
            color: var(--partly-cloudy-content);
        }

        .partly-cloudy .item__forecast-image {
            left: 14px;
            width: 230px;
        }

        /* 雨天 */
        .rainy .item__forecast-container {
            background-color: var(--rainy-background);
        }

        .rainy .item__forecast-value {
            color: var(--rainy-temperature);
        }

        .rainy .item__forecast-precipitation,
        .rainy .item__forecast-low {
            color: var(--rainy-content);
        }

        .rainy .item__forecast-image {
            left: 25px;
            top: -30px;
            width: 160px;
        }

    </style>
相关推荐
心.c25 分钟前
深拷贝浅拷贝
开发语言·前端·javascript·ecmascript
IT_陈寒1 小时前
Vue 3.4性能优化实战:5个鲜为人知的Composition API技巧让打包体积减少40%
前端·人工智能·后端
前端九哥1 小时前
💻【急招!27届前端实习生】广州4399实习太幸福了!江景+三餐+健身房全都有😭
前端·面试·招聘
咖啡の猫1 小时前
Vue全局事件总线
前端·javascript·vue.js
Lovereo1 小时前
我的目标检测性能优化之路:预算不够、GPU 没有、但性能我得要
前端
T___T1 小时前
JavaScript 变量声明详解:var、let、const 的核心差异
javascript·面试
蒙娜丽宁2 小时前
Rust 与 WebAssembly:构建高效前端应用的全流程复盘
前端·rust·wasm
这儿有一堆花2 小时前
使用 Actix-web 开发高性能 Web 服务
前端·数据库
豆苗学前端2 小时前
10分钟带你入门websocket,并实现一个在线多人聊天室
前端·javascript·后端
白水清风2 小时前
Vue3之渲染器
前端·vue.js·面试