css - 如何在材质 ui 中覆盖处于禁用状态的复选框颜色(框和字体)?
问题描述
在 Material UI v4.9.12 中,我可以创建一个具有(固定)不同颜色的自定义复选框:
const GreenCheckbox = withStyles({
root: {
color: green[400],
'&$checked': {
color: green[600],
},
},
checked: {},
})((props) => {
return <Checkbox {...props} />
}
)
但这不会改变字体颜色,只会在未禁用复选框时设置颜色。
我怎样才能做到这两点?我必须覆盖什么?
到目前为止,我只设法用内联样式覆盖图标颜色:
<GreenCheckbox style={{color: green[600]}} onChange={cb} checked={checked} disabled/>
解决方案
您可以使用与状态完全相同的方法覆盖状态的默认样式:disabled
checked
import React from "react";
import ReactDOM from "react-dom";
import { withStyles } from "@material-ui/core/styles";
import Checkbox from "@material-ui/core/Checkbox";
import green from "@material-ui/core/colors/green";
const GreenCheckbox = withStyles({
root: {
color: green[400],
"&$checked": {
color: green[600]
},
"&$disabled": {
color: green[200]
}
},
checked: {},
disabled: {}
})(Checkbox);
function App() {
return (
<div className="App">
<GreenCheckbox />
<GreenCheckbox disabled />
<GreenCheckbox checked disabled />
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
相关答案:
推荐阅读
- android - 为什么我可以在 Kotlin 中不传递参数名称的情况下调用 fun?
- subprocess - Python subprocess.call() 不适用于 >> 运算符
- c - 将数据转换为代码
- r - 需要帮助将 4 个嵌套列表提取到数据框中
- angular - 将第三方服务与 Firebase 集成
- laravel - API 路由:未找到编辑返回 404
- google-chrome-app - 使用 chrome.app.window.create 时如何截屏
- excel - 在 Excel (VBA) 中仅选择 X 误差线
- reactjs - 使 React 应用程序路由服务于静态文件夹
- ios - 如何使用 iOS 应用程序运行 Appium