如何改变Material-UI的切换颜色
How to change the color of Material-UI's Toggle
,所以我将我的Toggle
按钮放在我的AppBar
中,因为选择Toggle
时它们是相同的颜色。
我尝试了很多不同的东西(如下所示),但一直无法改变它的颜色。
import React from 'react';
import Toggle from 'material-ui/Toggle'
import Drawer from 'material-ui/Drawer';
import AppBar from 'material-ui/AppBar';
import MenuItem from 'material-ui/MenuItem';
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
var Style =
{
palette:
{
primary1Color: '#ffffff',
},
};
class AppBarComp extends React.Component {
constructor() {
super();
this.state = {
open: false
};
}
getChildContext() {
return {muiTheme: getMuiTheme(Style)};
}
handleToggle = () => this.setState({open: !this.state.open});
handleClose = () => this.setState({open: false});
render() {
return <MuiThemeProvider muiTheme={getMuiTheme()}>
<div>
<AppBar
onLeftIconButtonTouchTap={this.handleToggle}
title="Time Visualizer"
iconElementRight={
<Toggle
labelStyle={{color:'white'}}
style={{marginTop:'.75em'}}
label="Toggle Compare"
/>
}/>
<Drawer
docked={false}
width={250}
open={this.state.open}
onRequestChange={(open) => this.setState({open})}
>
<MenuItem onTouchTap={this.handleClose}>Settings</MenuItem>
<MenuItem onTouchTap={this.handleClose}>About</MenuItem>
</Drawer>
</div>
</MuiThemeProvider>
}
}
AppBarComp.childContextTypes ={
muiTheme: React.PropTypes.object,
};
export default AppBarComp;
我不太确定如何找到那个元素来改变它的颜色。使用 Chrome,我能够检查元素并以这种方式更改它的颜色,但无法用代码重复该操作。
我也无法以编程方式将 Toggle
居中,但可以在 chrome 中做到这一点,这让人相信我在对象中不够高?
如果说得通。
谢谢!
Material-UI 切换的颜色设置为 primary1Color,您可以通过制作自定义主题来覆盖它。
http://www.material-ui.com/#/customization/themes
您想在某个地方创建一个样式对象(一个单独的文件可能是最好的),其中包含如下对象:
{
palette: {
primary1Color: '#YOURCOLOR',
},
}
假设您将其作为样式导入到您的 React class 中,您希望将其设置为这样的主题:
getChildContext() {
return {
muiTheme: getMuiTheme(Styles),
};
}
和
YOUR_CLASS.childContextTypes = {
muiTheme: React.PropTypes.object,
};
如果您想在 'on mode' 中更改切换颜色,您需要更新主题中的颜色:
const muiTheme = getMuiTheme({
toggle: {
thumbOnColor: 'yellow',
trackOnColor: 'red'
}
});
然后使用它:)
<MuiThemeProvider muiTheme={muiTheme}>
您可以在这里查看 toggle 使用了哪些其他主题内容:
https://github.com/callemall/material-ui/blob/master/src/Toggle/Toggle.js
我不知道这是否是唯一的方法,但它似乎有效:)
如果其他控件使用该颜色路径,则可能会出现问题:/
在 'off mode' 中更改切换颜色更容易:
<Toggle
thumbStyle={{ backgroundColor: 'red' }}
trackStyle={{ backgroundColor: 'green' }} />
希望对您有所帮助:)
您需要做的一切
thumbSwitchedStyle={{ backgroundColor: 'grey' }}
示例
<Toggle
thumbSwitchedStyle={{ backgroundColor: 'grey' }}
labelStyle={{color:'white'}}
style={{marginTop:'.75em'}}
label="Toggle Compare"
因此,如果选择颜色变为灰色:)
image
const toggleStyles = makeStyles({
root: { /* … */ },
label: { /* … */ },
outlined: {
/* … */
'&$disabled': { /* … */ },
},
outlinedPrimary: {
/* … */
'&:hover': { /* … */ },
},
disabled: {},
}, { name: 'MuiButton' });
生成以下 class 个您可以覆盖的名称:
.MuiButton-root { /* … */ }
.MuiButton-label { /* … */ }
.MuiButton-outlined { /* … */ }
.MuiButton-outlined.Mui-disabled { /* … */ }
.MuiButton-outlinedPrimary: { /* … */ }
.MuiButton-outlinedPrimary:hover { /* … */ }
使用代码:
function FunctionalComponent(props){
const toggleClass = toggleStyles();
return (
<ToggleButtonGroup value={toggleValue} onChange ={handleToggleValueChange}>
<ToggleButton value="toggleValue1" className={toggleClass.root}>VALUE 1</ToggleButton>
<ToggleButton value="toggleValue2" className={toggleClass.outlined}>VALUE 2</ToggleButton>
</ToggleButtonGroup>
)
}
更多详情:https://material-ui.com/styles/advanced/#with-material-ui-core
import {Switch,makeStyles} from "material-ui/core"
const useStyles = makeStyles((theme) => ({
toggle: {
width:50,
'& .Mui-checked': {
color: '#109125',
transform:'translateX(25px) !important'
},
'& .MuiSwitch-track': {
backgroundColor:'#008000e0'
}
},
})
const Index= (props) => {
const classes = useStyles();
return(
<Switch color="primary" size="small" className={classes.toggle} checked: {true} />)
}
参考这段代码,你会得到你所需要的。
单击此 link 了解更多信息 Material-Ui/Switch
,所以我将我的Toggle
按钮放在我的AppBar
中,因为选择Toggle
时它们是相同的颜色。
我尝试了很多不同的东西(如下所示),但一直无法改变它的颜色。
import React from 'react';
import Toggle from 'material-ui/Toggle'
import Drawer from 'material-ui/Drawer';
import AppBar from 'material-ui/AppBar';
import MenuItem from 'material-ui/MenuItem';
import getMuiTheme from 'material-ui/styles/getMuiTheme';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
var Style =
{
palette:
{
primary1Color: '#ffffff',
},
};
class AppBarComp extends React.Component {
constructor() {
super();
this.state = {
open: false
};
}
getChildContext() {
return {muiTheme: getMuiTheme(Style)};
}
handleToggle = () => this.setState({open: !this.state.open});
handleClose = () => this.setState({open: false});
render() {
return <MuiThemeProvider muiTheme={getMuiTheme()}>
<div>
<AppBar
onLeftIconButtonTouchTap={this.handleToggle}
title="Time Visualizer"
iconElementRight={
<Toggle
labelStyle={{color:'white'}}
style={{marginTop:'.75em'}}
label="Toggle Compare"
/>
}/>
<Drawer
docked={false}
width={250}
open={this.state.open}
onRequestChange={(open) => this.setState({open})}
>
<MenuItem onTouchTap={this.handleClose}>Settings</MenuItem>
<MenuItem onTouchTap={this.handleClose}>About</MenuItem>
</Drawer>
</div>
</MuiThemeProvider>
}
}
AppBarComp.childContextTypes ={
muiTheme: React.PropTypes.object,
};
export default AppBarComp;
我不太确定如何找到那个元素来改变它的颜色。使用 Chrome,我能够检查元素并以这种方式更改它的颜色,但无法用代码重复该操作。
我也无法以编程方式将 Toggle
居中,但可以在 chrome 中做到这一点,这让人相信我在对象中不够高?
如果说得通。
谢谢!
Material-UI 切换的颜色设置为 primary1Color,您可以通过制作自定义主题来覆盖它。 http://www.material-ui.com/#/customization/themes
您想在某个地方创建一个样式对象(一个单独的文件可能是最好的),其中包含如下对象:
{
palette: {
primary1Color: '#YOURCOLOR',
},
}
假设您将其作为样式导入到您的 React class 中,您希望将其设置为这样的主题:
getChildContext() {
return {
muiTheme: getMuiTheme(Styles),
};
}
和
YOUR_CLASS.childContextTypes = {
muiTheme: React.PropTypes.object,
};
如果您想在 'on mode' 中更改切换颜色,您需要更新主题中的颜色:
const muiTheme = getMuiTheme({
toggle: {
thumbOnColor: 'yellow',
trackOnColor: 'red'
}
});
然后使用它:)
<MuiThemeProvider muiTheme={muiTheme}>
您可以在这里查看 toggle 使用了哪些其他主题内容: https://github.com/callemall/material-ui/blob/master/src/Toggle/Toggle.js
我不知道这是否是唯一的方法,但它似乎有效:) 如果其他控件使用该颜色路径,则可能会出现问题:/
在 'off mode' 中更改切换颜色更容易:
<Toggle
thumbStyle={{ backgroundColor: 'red' }}
trackStyle={{ backgroundColor: 'green' }} />
希望对您有所帮助:)
您需要做的一切
thumbSwitchedStyle={{ backgroundColor: 'grey' }}
示例
<Toggle
thumbSwitchedStyle={{ backgroundColor: 'grey' }}
labelStyle={{color:'white'}}
style={{marginTop:'.75em'}}
label="Toggle Compare"
因此,如果选择颜色变为灰色:)
image
const toggleStyles = makeStyles({
root: { /* … */ },
label: { /* … */ },
outlined: {
/* … */
'&$disabled': { /* … */ },
},
outlinedPrimary: {
/* … */
'&:hover': { /* … */ },
},
disabled: {},
}, { name: 'MuiButton' });
生成以下 class 个您可以覆盖的名称:
.MuiButton-root { /* … */ }
.MuiButton-label { /* … */ }
.MuiButton-outlined { /* … */ }
.MuiButton-outlined.Mui-disabled { /* … */ }
.MuiButton-outlinedPrimary: { /* … */ }
.MuiButton-outlinedPrimary:hover { /* … */ }
使用代码:
function FunctionalComponent(props){
const toggleClass = toggleStyles();
return (
<ToggleButtonGroup value={toggleValue} onChange ={handleToggleValueChange}>
<ToggleButton value="toggleValue1" className={toggleClass.root}>VALUE 1</ToggleButton>
<ToggleButton value="toggleValue2" className={toggleClass.outlined}>VALUE 2</ToggleButton>
</ToggleButtonGroup>
)
}
更多详情:https://material-ui.com/styles/advanced/#with-material-ui-core
import {Switch,makeStyles} from "material-ui/core"
const useStyles = makeStyles((theme) => ({
toggle: {
width:50,
'& .Mui-checked': {
color: '#109125',
transform:'translateX(25px) !important'
},
'& .MuiSwitch-track': {
backgroundColor:'#008000e0'
}
},
})
const Index= (props) => {
const classes = useStyles();
return(
<Switch color="primary" size="small" className={classes.toggle} checked: {true} />)
}
参考这段代码,你会得到你所需要的。
单击此 link 了解更多信息 Material-Ui/Switch