news 2026/10/14 13:21:38

微信小程序:自动随机变化的颜色

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序:自动随机变化的颜色

小案例:页面上摆一首诗,每行颜色随机乱蹦,隔几秒自己变一次,点按钮也能手动换。扩展——让标题跟着第一行诗一起变色。

第一,随机数的用法。Math.random()生成的是[0, 1)的小数,要想变成 0~15 的整数,得配Math.floor()往下取整。

第二,十六进制颜色的拼法。颜色本质上是#加上 6 位十六进制字符。与其用现成的颜色库,不如自己拿'0123456789ABCDEF'这个字符集拼,既直观又能顺便复习一下进制。

第三,定时刷新 + 数据驱动视图。setInterval负责周期性触发,this.setData()负责把新颜色推给页面。小程序不像网页那样能直接操作 DOM,所有界面变化都得走setData这条路。

最终效果

  • 页面上显示《望庐山瀑布》的标题、作者、四行正文

  • 每行诗颜色随机,可能撞色也可能各不相同

  • 每隔 5 秒自动换一批颜色

  • 点"改变颜色"按钮,立刻换

  • 控制台每次打印一个长度为 4 的数组,四个元素就是四行诗的颜色

扩展:标题颜色跟着第一行诗同步变化,自动和手动都生效。

主要代码:

<!--index.wxml--> <navigation-bar title="自动随机变化的颜色" back="{{false}}" color="black" background="#FFF"></navigation-bar> <scroll-view class="scrollarea" scroll-y type="list"> <view class="box"> <!-- 标题用 colors[0],与第一行诗同色 --> <view class="title" style="color:{{colors[0]}}">望庐山瀑布</view> <view class="subtitle">李白</view> <view class="flex-wrap"> <view style="color:{{colors[0]}}">日照香炉生紫烟,</view> <view style="color:{{colors[1]}}">遥看瀑布挂前川。</view> <view style="color:{{colors[2]}}">飞流直下三千尺,</view> <view style="color:{{colors[3]}}">疑是银河落九天。</view> </view> <button type="primary" bind:tap="changeColor">改变颜色</button> </view> </scroll-view>
/**index.wxss**/ page { height: 100vh; display: flex; flex-direction: column; } .scrollarea { flex: 1; overflow-y: hidden; } .flex-wrap { margin-top: 40rpx; font-size: 40rpx; text-align: center; line-height: 2em; letter-spacing: 1em; } button { margin-top: 40rpx; margin-bottom: 40rpx; }
// index.js Page({ data: { colors: [] }, // 页面加载 onLoad() { // 首次先来一批颜色 this.createColor(); // 每 5 秒刷新一次 setInterval(() => { this.createColor(); }, 5000); }, // 点击按钮 changeColor() { this.createColor(); }, // 生成 4 种随机颜色 createColor() { let colors = []; // 十六进制字符集 const letters = '0123456789ABCDEF'; // 外层:生成 4 种颜色 for (let i = 0; i < 4; i++) { // 颜色开头的 # let c = '#'; // 内层:每种颜色拼 6 位 for (let j = 0; j < 6; j++) { c += letters[Math.floor(Math.random() * 16)]; } colors.push(c); } // 控制台打印 console.log(colors); // 更新数据,驱动视图 this.setData({ colors }); } });

结果展示:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 13:21:20

AI安全测评实战指南:从框架到落地的99页白皮书精读

人工智能安全测评这件事&#xff0c;过去两年我从零散地看论文、跟标准、到实际给几个内部项目做上线前的安全评估&#xff0c;踩过的坑不算少。最早接触这个概念的时候&#xff0c;市面上能参考的系统性材料非常有限&#xff0c;大多是几页PPT或者某个厂商的产品宣传册&#x…

作者头像 李华
网站建设 2026/10/14 13:21:03

VideoJAM:轻量可插拔视频理解框架,专注多模态融合快速验证

简介&#xff1a;本资源是基于 Electron 框架构建的音视频剪辑工具 VideoJAM 的完整项目工程&#xff0c;面向前端开发者及桌面应用初学者&#xff0c;聚焦于跨平台音视频处理类桌面应用的从零搭建与打包实践。项目已集成 electron-quick-start 基础架构&#xff0c;预置 elect…

作者头像 李华
网站建设 2026/10/14 13:20:51

PyTorch模型冻结层原理与四大实操策略

1. 项目概述&#xff1a;为什么“冻结层”是PyTorch模型微调的底层刚需在实际做模型迁移学习时&#xff0c;我几乎每天都会遇到一个看似简单、但稍不注意就让整个训练崩掉的问题&#xff1a;想用预训练好的ResNet50做图像分类&#xff0c;但只希望最后两层全连接层参与训练&…

作者头像 李华
网站建设 2026/10/14 13:20:48

LACP与PAgP协议原理及链路聚合实战配置指南

1. 项目概述&#xff1a;为什么链路聚合不是“多接几根网线”那么简单你有没有遇到过这样的场景&#xff1a;两台核心交换机之间用一根千兆光纤连着&#xff0c;业务高峰期一上来&#xff0c;端口就持续跑满&#xff0c;延迟飙升&#xff0c;监控告警像过年放鞭炮一样噼里啪啦响…

作者头像 李华
网站建设 2026/10/14 13:20:46

二维前缀和在算法竞赛中的应用与优化

1. 题目背景与核心考点解析这道来自湖南省选&#xff08;HNOI2003&#xff09;的编程题目&#xff0c;表面上是关于激光炸弹的军事模拟场景&#xff0c;实则考察的是二维前缀和这一经典算法思想在实际问题中的应用能力。题目描述的是在一个坐标系中有若干个价值点&#xff0c;需…

作者头像 李华
网站建设 2026/10/14 13:20:44

单细胞整合中CCA与DTW算法原理及Seurat v2实战指南

1. 单细胞整合到底在解决什么问题 做单细胞测序分析的人&#xff0c;迟早会撞上一个绕不开的坎&#xff1a;手上有好几批样本&#xff0c;可能是不同时间点采的&#xff0c;可能是不同病人来源的&#xff0c;也可能是不同实验批次跑出来的。你单独分析每一批&#xff0c;聚类结…

作者头像 李华