新闻详情

新闻详情

首页 / 资讯中心 / 详情

微信小程序实战:checkbox 与 radio 组件的动态样式控制

发布时间:2026/9/30 17:12:27来源:尧图网络
微信小程序实战:checkbox 与 radio 组件的动态样式控制
在微信小程序开发中表单组件是非常基础且高频使用的部分。本文将通过一个完整的实战案例带大家掌握checkbox复选框和radio单选框组件的用法并实现通过它们动态控制文本样式的效果。一、案例效果预览我们要实现的功能是页面上方展示一段文字《满江红·写怀》下方提供两组控制组件三个 checkbox分别控制文字是否加粗、是否倾斜、是否加下划线四个 radio分别控制文字字号为30rpx、40rpx、50rpx、60rpx当用户勾选或切换选项时文字样式会实时变化。二、核心知识点在动手之前先了解几个关键点checkbox-group与radio-group单独的checkbox或radio不会触发change事件必须包裹在对应的group组件中才能生效。checkbox-group的change事件返回的是一个数组所有被选中项的值。radio-group的change事件返回的是一个单值当前选中项的值。动态样式绑定小程序中可以通过style{{变量}}的方式动态绑定样式配合setData实现实时更新。三、项目结构text复制下载├── app.json ├── app.wxss └── pages └── index ├── index.wxml ├── index.wxss └── index.js四、代码实现1. app.json 配置如果你使用的是较新的开发者工具默认可能开启了skyline渲染引擎。由于skyline对部分 CSS 属性如text-indent支持不完善建议在app.json中移除renderer: skyline配置使用默认的webview引擎json复制下载{ pages: [ pages/index/index ], window: { navigationBarTextStyle: black, navigationStyle: custom }, style: v2, sitemapLocation: sitemap.json }2. app.wxss 全局样式css复制下载/**app.wxss**/ .box { margin: 20rpx; padding: 20rpx; border: 2rpx solid silver; } .title { font-size: 40rpx; font-weight: bolder; text-align: center; margin-bottom: 30rpx; color: red; }3. index.wxml 页面结构关键点在于style属性使用了数据绑定让文字样式随变量变化html复制下载运行!--index.wxml-- navigation-bar titlecheckbox 和 radio 组件 backfalse colorblack background#fff/navigation-bar scroll-view classscrollarea scroll-y typelist view classbox view classtitle满江红·写怀/view !-- 动态绑定样式加粗、倾斜、下划线、字号 -- view classtxt stylefont-weight: {{myBold}}; font-style: {{myItalic}}; text-decoration: {{myUnderline}}; font-size: {{myFontSize}}; view 怒发冲冠凭栏处、潇潇雨歇。抬望眼、仰天长啸壮怀激烈。三十功名尘与土、八千里路云和月。莫等闲、白了少年头空悲切。 /view view 靖康耻犹未雪。臣子恨何时灭。驾长车踏破贺兰山缺。壮志饥餐胡虏肉笑谈渴饮匈奴血。待从头、收拾旧山河朝天阙。 /view /view view classother !-- checkbox 组控制字体样式 -- checkbox-group bindchangecheckboxChange checkbox valueisBold加粗/checkbox checkbox valueisItalic倾斜/checkbox checkbox valueisUnderline下划线/checkbox /checkbox-group !-- radio 组控制字体大小 -- radio-group bindchangeradioChange radio value30rpx checkedtrue30rpx/radio radio value40rpx40rpx/radio radio value50rpx50rpx/radio radio value60rpx60rpx/radio /radio-group /view /view /scroll-view4. index.wxss 页面样式css复制下载/**index.wxss**/ page { height: 100vh; display: flex; flex-direction: column; } .scrollarea { flex: 1; overflow-y: hidden; } radio, checkbox { margin: 20px; } .txt { text-align: justify; text-indent: 2em; margin: 60px 0; } .other { text-align: center; margin: 60px 0; }5. index.js 逻辑处理这是整个案例的核心需要处理两个change事件javascript复制下载// index.js Page({ data: { myFontSize: 30rpx, // 默认字号 myBold: , myItalic: , myUnderline: }, /** * checkbox-group 事件处理 * e.detail.value 是一个数组包含所有被选中项的 value */ checkboxChange(e) { console.log(e); let selected []; let myBold ; let myItalic ; let myUnderline ; // 获取所有选中项 selected e.detail.value; // 遍历选中项设置对应样式 for (let index 0; index selected.length; index) { const element selected[index]; if (element isBold) { myBold bold; } if (element isItalic) { myItalic italic; } if (element isUnderline) { myUnderline underline; } } // 更新数据视图自动刷新 this.setData({ myBold: myBold, myItalic: myItalic, myUnderline: myUnderline }); }, /** * radio-group 事件处理 * e.detail.value 是当前选中项的值 */ radioChange(e) { console.log(e); this.setData({ myFontSize: e.detail.value }); } });五、常见问题与避坑指南为什么点击 checkbox 没反应检查是否把checkbox放在了checkbox-group里面并且绑定了bindchange事件。单独使用checkbox是无法触发change事件的。文字缩进text-indent不生效如果app.json中配置了renderer: skyline部分 CSS 属性会不兼容。建议删掉该配置改用默认的webview渲染。如何设置默认选中项checkbox在组件上添加checkedtrue。radio在需要默认选中的那个radio上添加checkedtrue同时data中的初始值要与它的value一致。console.log(e)能看到什么checkbox-groupe.detail.value是数组如[isBold, isItalic]。radio-groupe.detail.value是字符串如40rpx。六、总结通过这个案例我们掌握了checkbox-group和radio-group的基本用法及事件处理通过e.detail.value获取用户选择结果利用setData配合动态style绑定实现样式的实时更新这类“表单控制视图”的模式在小程序中非常常见比如设置页面的主题切换、字体调节、权限开关等场景都可以套用这个思路。掌握它你就迈出了小程序交互开发的重要一步。、
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频 2026/9/30 23:59:44

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证 2026/9/30 23:59:36

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
MCP Kubernetes Server 实战:用 TaoToken 统一 Key 打通集群管理工具链 2026/9/30 23:59:30

MCP Kubernetes Server 实战:用 TaoToken 统一 Key 打通集群管理工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置) 2026/9/30 23:59:30

2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱 2026/9/30 23:59:23

游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱

游戏引擎原理与实践 02:揭开3A游戏背后的技术面纱Bilibili 同步视频游戏逻辑 vs 游戏引擎,剧本和摄影机的区别现代游戏引擎都包含哪些模块?游戏编辑器:游戏开发者的工作台数学,游戏引擎的内功根基需要重点掌握的数学知…

阅读更多 →
中科院青藏高原所李新团队提出 READY 框架|地学数据光“开放共享”还不够,得先过“AI 就绪”这道关 2026/9/30 23:59:23

中科院青藏高原所李新团队提出 READY 框架|地学数据光“开放共享”还不够,得先过“AI 就绪”这道关

近日,中国科学院青藏高原研究所、国家青藏高原科学数据中心联合国内多个地学数据中心科研人员,系统提出了“人工智能就绪地球科学数据(AI-ready geoscience data)”的定义框架与实现路径。当前,“人工智能就绪数据&…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉