There is now a CSS Nesting Module in the CSS specification. The module is currently a Working Draft and CSS nesting is supported in all major browsers.
The syntax looks like this:
table.colortable {
& td {
text-align:center;
&.c { text-transform:uppercase }
&:first-child, &:first-child + td { border:1px solid black }
}
& th {
text-align:center;
background:black;
color:white;
}
}
.foo {
color: red;
@nest & > .bar {
color: blue;
}
}
.foo {
color: red;
@nest .parent & {
color: blue;
}
}
Answer from etoxin on Stack OverflowNaming nested css classes
css selectors - Nesting CSS classes - Stack Overflow
Help choose the syntax for CSS Nesting
Use nested SASS classes with css modules
Is CSS Nesting safe to use in production?
Do I still need a CSS preprocessor like Sass if I use CSS Nesting?
Is the & (ampersand) required in CSS Nesting?
Videos
I'm having a hard time choosing names for classes.
Is it bad practice to name nested classes like this (It's just an example)
<div class="game-list">
<div class="game-list-item">
<div class="game-list-item-metadata"></div>
<div class="game-list-item-content"></div>
</div>
</div>I want to have access to every element to design them separately
There is now a CSS Nesting Module in the CSS specification. The module is currently a Working Draft and CSS nesting is supported in all major browsers.
The syntax looks like this:
table.colortable {
& td {
text-align:center;
&.c { text-transform:uppercase }
&:first-child, &:first-child + td { border:1px solid black }
}
& th {
text-align:center;
background:black;
color:white;
}
}
.foo {
color: red;
@nest & > .bar {
color: blue;
}
}
.foo {
color: red;
@nest .parent & {
color: blue;
}
}
Not possible with vanilla CSS. However you can use something like:
- Sass
Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins, selector inheritance, and more. It’s translated to well-formatted, standard CSS using the command line tool or a web-framework plugin.
Or
- Less
Rather than constructing long selector names to specify inheritance, in Less you can simply nest selectors inside other selectors. This makes inheritance clear and style sheets shorter.
Example:
#header {
color: red;
a {
font-weight: bold;
text-decoration: none;
}
}