想要个可爱天气面板:写了个云朵飘动的静态挂件,纯 CSS 动起来

举报
静水流深-云海 发表于 2026/09/17 10:33:18 2026/09/17
【摘要】 想给博客或桌面加个天气小挂件,但不想接接口也不想切图。纯 CSS 做了个云朵天气面板:几层云慢慢飘、太阳偶尔露脸、整体暖色治愈,不联网不引图。技术内核是多层 div + @keyframes translateX 不同速度 + 层级错落 + 伪元素画云。

给个人页加个天气小挂件,接真实接口要 key、要联网,太重。我想要个纯装饰的:几朵云慢慢飘、背景暖暖的,挂那就是个氛围,不依赖任何数据。纯 CSS 就能做,云用圆角矩形拼,飘动用 keyframes,零 JS 也行。

一、云怎么画:圆角矩形拼

一朵云不用图片,三四个圆角块叠出轮廓:

.cloud { position: relative; width: 120px; height: 40px;
  background: #fff; border-radius: 20px; }
.cloud::before, .cloud::after {
  content: ''; position: absolute; background: #fff; border-radius: 50%;
}
.cloud::before { width: 50px; height: 50px; top: -22px; left: 18px; }
.cloud::after  { width: 36px; height: 36px; top: -14px; left: 64px; }

主体是个扁圆角条,两个伪元素是大圆当"云包",叠出蓬松感。颜色全白,靠阴影或背景衬托。要不同大小的云,复制几份改宽高即可。

二、飘动:不同层不同速度

云的"活"靠横向平移,每层速度错开才有远近:

@keyframes drift { from { transform: translateX(-140px); }
  to { transform: translateX(680px); } }
.c1 { animation: drift 22s linear infinite; }
.c2 { animation: drift 34s linear infinite; opacity: .8; }
.c3 { animation: drift 48s linear infinite; opacity: .6; transform: scale(.7); }

drift 从左边移出到右边,linear 匀速像被风吹;三朵云周期 22/34/48 秒不同,慢的更小更透,像远处的云。无限循环,挂件一直有动静。

三、加个太阳和暖背景

光有云偏冷,叠个太阳和渐变天空更治愈:

.sky { background: linear-gradient(180deg,#ffe9c7,#ffd1e0); }
.sun { width: 56px; height: 56px; border-radius: 50%;
  background: radial-gradient(circle,#fff3b0,#ffd166);
  animation: glow 6s ease-in-out infinite alternate; }
@keyframes glow { to { transform: scale(1.08); } }

天空用暖色渐变,太阳 radial-gradient 做出光晕,glow 轻微缩放像呼吸。整体不放真实温度数字,纯粹氛围件,适合做页脚或桌面角落。

四、几种天气挂件路线

路线 是否联网 适合
真实接口 是,要 key 看实时天气
纯 CSS 装饰(本文) 否 氛围、颜值
GIF 背景 否 不能微调

小结

云朵挂件用圆角矩形加两个伪元素圆拼出云形,不引任何图片;飘动靠 @keyframes drift 横向平移,三层周期 22/34/48 秒错开、慢者更小更透,做出远近层次。暖色渐变天空叠 radial-gradient 太阳,轻微缩放像呼吸。纯 CSS 零 JS,不联网不依赖数据,适合当个人页或桌面的治愈一角。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。