Иногда нам нужно, чтобы при компиляции вложенных конструкций они соединялись не через пробел, а слитно. Для этого перед именем вложенного селектора необходимо поставить амперсанд:
div {
&.block {
width: 300px;
}
}
В результате после компиляции у нас получится следующий код:
div.block {
width: 300px;
}
Расскажите, каким будет результат компиляции следующего кода:
#block {
&.xxx {
width: 300px;
}
}
Расскажите, каким будет результат компиляции следующего кода:
#block {
.xxx {
width: 300px;
}
}
Расскажите, каким будет результат компиляции следующего кода:
#block {
&.xxx {
&.zzz {
width: 300px;
}
}
}
Расскажите, каким будет результат компиляции следующего кода:
#block {
&.xxx {
.zzz {
width: 300px;
}
}
}
Расскажите, каким будет результат компиляции следующего кода:
#block {
.xxx {
&.zzz {
width: 300px;
}
}
}
Псевдоклассы
Приведенный оператор удобно применять при работе с псевдоклассами. Смотрите пример:
a {
color: blue;
&:hover {
color: red;
}
}
Результат компиляции:
a {
color: blue;
}
a:hover {
color: red;
}
Расскажите, каким будет результат компиляции следующего кода:
a.class {
&:link {
color: red;
}
&:visited {
color: blue;
}
&:hover {
color: green;
}
}
Упростите приведенный код:
#block {
width: 300px;
}
#block a:link, #block a:visited {
color: red;
}
#block a:hover {
color: blue;
}
Части селектора
Можно соединять даже части одного класса. Например, вот так:
.button {
&-ok {
color: green;
}
&-cancel {
color: red;
}
}
В результате после компиляции у нас получится следующий код:
.button-ok {
color: green;
}
.button-cancel {
color: red;
}
Упростите приведенный код:
.label-success {
color: green;
}
.label-warning {
color: yellow;
}
.label-error {
color: red;
}