You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mantine中根据Checkbox输入状态修改其body样式?

解决Mantine Checkbox选中时修改body样式的问题

你原来的写法无法生效,因为Mantine的StylesAPI不能直接把input:checked作为独立样式键嵌套修改body样式。正确的做法是利用CSS选择器关联状态,或者借助组件根元素的data-checked属性实现需求,以下是几种可行方案:

方案一:利用兄弟选择器关联input状态

通过CSS的:has伪类(现代浏览器均支持),让body在同级input被选中时变更样式:

Checkbox: {
  styles: theme => ({
    body: {
      background: "white",
      // 相邻input被选中时,修改body背景色
      '&:has(~ input:checked)': {
        background: "black"
      }
    },
  }),
},

方案二:借助根元素的data-checked属性

Mantine的Checkbox在选中时会给根元素添加data-checked="true"属性,可通过该属性控制body样式:

Checkbox: {
  styles: theme => ({
    body: {
      background: "white",
      // 父级root处于选中状态时,修改body样式
      '[data-checked="true"] &': {
        background: "black"
      }
    }
  }),
},

方案三:通过root样式嵌套修改

在root的样式中,针对选中状态下的body进行样式覆盖:

Checkbox: {
  styles: theme => ({
    body: {
      background: "white"
    },
    root: {
      '&[data-checked="true"]': {
        '& .mantine-Checkbox-body': {
          background: "black"
        }
      }
    }
  }),
},

这三种方案都能实现需求,推荐方案二,写法简洁且兼容性更好。

内容的提问来源于stack exchange,提问作者Otavio Augusto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:42:54