天气卡片(城市切换 + 摄氏华氏换算 CSS 源码)

CSSJS 许可:自研原创

天气卡片组件源码:城市下拉切换、摄氏/华氏一键换算、小时预报条与湿度风速 AQI 详情,纯 CSS + 原生 JS 实现,适合天气应用与信息面板。

效果演示(真实可交互)

下方为天气卡片:顶部可切换摄氏/华氏单位,温度数字带淡出淡入过渡;中部展示天气图标、当前温度与天气描述,底部为湿度、风速、AQI 三项详情和未来 6 小时预报条;通过下拉框切换广州、北京、上海、成都四座城市,所有数据会联动刷新。

广州

2026-09-01 · 周二

⛅
32°
多云转晴 · 东南风 2 级
湿度62%
风速11 km/h
AQI38 优
14:00⛅32°
15:00☀️33°
16:00☀️33°
17:00🌤️31°
18:00🌥️29°
19:00🌙27°

完整代码

HTML 结构:卡片分为顶部(城市名 + 单位切换)、主体(图标 + 温度)、详情区、小时预报条四个区块:

<div class="wc-card">
  <div class="wc-top">
    <div class="wc-city"><h3>广州</h3><p>2026-09-01 · 周二</p></div>
    <div class="wc-unit">
      <button data-unit="c">°C</button>
      <button data-unit="f">°F</button>
    </div>
  </div>
  <div class="wc-main">
    <span class="wc-icon">⛅</span>
    <div class="wc-temp"><b>32</b><span>°</span></div>
    <p class="wc-desc">多云转晴 · 东南风 2 级</p>
  </div>
  <div class="wc-detail">
    <div class="wc-item"><span>湿度</span><b>62%</b></div>
    <div class="wc-item"><span>风速</span><b>11 km/h</b></div>
    <div class="wc-item"><span>AQI</span><b>38 优</b></div>
  </div>
</div>

核心 CSS:温度数字使用渐变文字 + 切换时的透明度过渡,单位切换按钮为胶囊分段控件:

.wc-temp b {
  font-size: 58px; font-weight: 800;
  background: linear-gradient(180deg, #fff, #9db4ff);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.wc-temp.pop b { opacity: .4; }   /* 切换时的淡出反馈 */
.wc-unit-btn.active { background: linear-gradient(135deg, #6c8cff, #a96cff); color: #fff; }

原生 JS 温度换算与渲染(无第三方库):

const DATA = { guangzhou: { temp: 32, ... }, beijing: { temp: 26, ... } };
function c2f(c) { return Math.round(c * 9 / 5 + 32); }
function fmtC(c) { return unit === 'c' ? c : c2f(c); }
citySel.addEventListener('change', () => render(true));
unitBtns.forEach(btn => {
  btn.addEventListener('click', () => {
    unit = btn.dataset.unit;
    render(true);   // 带淡入淡出动画刷新
  });
});

参数说明

参数默认值说明
单位制式 unitcc 摄氏 / f 华氏,换算公式 C×9/5+32
温度渐变#fff → #9db4ff大字号数字的纵向渐变,可换品牌色
小时预报条6 个hourly 数组元素个数,横向滚动展示
卡片宽度340px单卡固定宽度,居中展示
切换反馈opacity .15s温度更新瞬间的淡出过渡

兼容性与性能

常见问题

Q: 数据是写死的假数据吗? 是演示数据。生产环境可调用天气 API,在 render 前把返回数据映射到卡片结构即可,换算逻辑无需改动。

Q: 小时预报条在手机上显示不全怎么办? 已设置 overflow-x: auto 横向滚动,配合细滚动条样式,手机上可左右滑动查看全部时段。

Q: 如何显示未来 7 天预报? 在详情区下方追加一个横向滚动区,把 hourly 换成 daily 数组,字段改为星期、最高/最低温即可。

Q: 可以商用吗? 可以,粤喵自研原创组件,免费商用无需署名,接入真实数据源后即可上线。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核