JSS plugin enables support for nested rules
Make sure you read how to use
plugins
in general.
Demo -
JSS
![Gitter](https://badges.gitter.im/Join Chat.svg)
Use &
to reference selector of the parent rule.
const sheet = jss.createStyleSheet({
container: {
padding: 20,
'&:hover': {
background: 'blue'
},
'&.clear': {
clear: 'both'
},
'& .button': {
background: 'red'
},
'&.selected, &.active': {
border: '1px solid red'
}
}
})
.container-3775999496 {
padding: 20px;
}
.container-3775999496:hover {
background: blue;
}
.container-3775999496.clear {
clear: both;
}
.container-3775999496 .button {
background: red;
}
.container-3775999496.selected, .container-3775999496.active {
border: 1px solid red;
}
Use $ruleName
to reference a local rule within the same style sheet.
const sheet = jss.createStyleSheet({
container: {
'& $button': {
padding: '10px'
},
'&:hover $button, &:active $button': {
color: 'red',
},
'&:focus $button': {
color: 'blue'
}
},
button: {
color: 'grey'
}
})
.button-3940538223 {
color: grey;
}
.container-2645419599 .button-3940538223 {
padding: 10px;
}
.container-2645419599:hover .button-3940538223, .container-2645419599:active .button-3940538223 {
color: red;
}
.container-2645419599:focus .button-3940538223 {
color: blue;
}
Use at-rules inside of regular rules.
const sheet = jss.createStyleSheet({
button: {
color: 'red',
'@media (min-width: 1024px)': {
width: 200
}
}
})
.button-2683044438 {
color: red;
}
@media (min-width: 1024px) {
.button-2683044438 {
width: 200px;
}
}
Deep nesting
Deep nesting is not supported for multiple reasons:
- More than 2 levels of indentation lead to less readability from our experience.
- Components should never be big and so there should be no need for deep nesting.
- Even if they are big, deep nesting shouldn't be needed. Class names can be switched on nodes for different states.
If you can provide a real life example where you really need deep nesting - we would love to know it.
Issues
File a bug against cssinjs/jss prefixed with [jss-nested].
Run tests
npm i
npm run test
License
MIT