The Sass syntax has several useful extensions to CSS. One of them is the parent selector shortcut: &. We can use & in our style definition of a selector and Sass will replace it with the parent selector of the rules when the code is converted to CSS. If we use the parent selector (&) in nested rules the complete parent selector is first resolved and then used to replace &.
h1 {
padding: 20px 0 10px 0;
// & will be replaced with parent selector h1.
&.pageHeader {
color: #f7f7f7;
}
// & will be replaced with parent selector h1.
body.main & {
color: #ccc;
}
}
// Parent selector can have a class or id.
a.first {
text-decoration: none;
// Parent selector works on pseudo-classes as well.
&:hover {
text-decoration: underline;
}
}
body {
.article {
h1 {
color: #7f7f7f;
// In nested rules the parent selector is
// completely resolved before being used.
// The complete parent selector here is
// body .article h1.
&.blog {
font-weight: bold;
}
}
}
}
The resulting CSS is in the following sample:
h1 {
padding: 20px 0 10px 0;
}
h1.pageHeader {
color: #f7f7f7;
}
body.main h1 {
color: #ccc;
}
a.first {
text-decoration: none;
}
a.first:hover {
text-decoration: underline;
}
body .article h1 {
color: #7f7f7f;
}
body .article h1.blog {
font-weight: bold;
}
Written with Sass 3.2.5