アプリをMaterial-UIv1からv2に更新しています。スタイルオーバーライドを使用して、選択した<BottomNavigationAction>
要素の色を設定しようとしています。
const styles = {
bottomNavStyle: {
position: 'fixed',
left: '0px',
bottom: '0px',
height: '50px',
width: '100%',
zIndex: '100'
},
'&$selected': {
color: "#00bcd4" //<==trying to add this color to selected items
},
};
class bottom_nav extends Component {
state = {
selectedIndex: -1,
};
handleChange = (event, value) => {
this.setState({value});
};
render() {
const { classes } = this.props;
return (
<Paper className={classes.bottomNavStyle}>
<BottomNavigation
value={this.props.selectedBottomNavIndex}
onChange={this.handleChange}
showLabels
>
<BottomNavigationAction
label="Appointments"
icon={theApptsIcon}
/>
<BottomNavigationAction
label="Contacts"
icon={theEmailIcon}
/>
<BottomNavigationAction
label="Video Call"
icon={theVideoCall}
/>
</BottomNavigation>
</Paper>
);
}
}
export default withStyles(styles)(bottom_nav);
ただし、これはselected
アイテムの色には何の影響も及ぼしません。
JSとJSSのCSSに関するMaterial-UIドキュメントを読みましたが、まだ十分に理解していません。これの正しい構文は何ですか?
[〜#〜]更新[〜#〜]
このスレッドへの応答に基づいて、私はこれを試しました:
const styles = {
bottomNavStyle: {
position: 'fixed',
left: '0px',
bottom: '0px',
height: '50px',
width: '100%',
zIndex: '100'
},
actionItemStyle: {
'&$selected': {
color: "#00bcd4 !important"
},
},
}
[.....]
return (
<Paper className={classes.bottomNavStyle}>
<BottomNavigation
value={this.props.selectedBottomNavIndex}
onChange={this.handleChange}
showLabels
>
<BottomNavigationAction
label="Appointments"
icon={theApptsIcon}
className={classes.actionItemStyle}
/>
<BottomNavigationAction
label="Contacts"
icon={theEmailIcon}
className={classes.actionItemStyle}
/>
<BottomNavigationAction
label="Video Call"
icon={theVideoCall}
className={classes.actionItemStyle}
/>
</BottomNavigation>
</Paper>
);
}
...しかし、Webページに表示される新しい色はまだ取得されていません。
更新されたソリューションは良さそうです。小さな変更がいくつかあります...
.selected
_クラスを含める必要があります。_const styles = {
// Root styles for `BottomNavigationAction` component
actionItemStyles: {
"&$selected": {
color: "red"
}
},
// This is required for the '&$selected' selector to work
selected: {}
};
_
classes={{selected: classes.selected}}
_をBottomNavigationAction
に渡す必要があります。これは、_'&$selected'
_セレクターが機能するために必要です。_<BottomNavigation
value={value}
onChange={this.handleChange}
className={classes.root}
>
<BottomNavigationAction
classes={{
root: classes.actionItemStyles,
selected: classes.selected
}}
label="Recents"
value="recents"
icon={<RestoreIcon />}
/>
</BottomNavigation>
_
実例:
私が提案したいことがいくつかあります。
1)最初の文字が小さく大文字で名前が付けられている場合は同じように扱われないため、コンポーネントの名前は最初の文字を大文字で記述します。
2)csルールを適用する他の方法がない場合、cssの特異性のために常にオーバーライドされる場合は、ルールの最後に!iportantを使用します。
3)jssでこのタイプのcssのネストを試してください。
const styles = {
bottomNavStyle: {
position: 'fixed',
left: '0px',
bottom: '0px',
height: '50px',
width: '100%',
zIndex: '100',
'&:selected': {
color: "#00bcd4"
},
},
};