Переменные внутри селекторов в LESS

Переменные можно использовать и внутри селекторов. Для этого, однако, нужно воспользоваться немного другим синтаксисом вставки переменной: после @ имя переменной нужно взять в фигурные скобки. Давайте посмотрим на примерах. Пусть у нас есть следующая переменная:

@var: div;

Давайте выполним вставку этой переменной в селектор. Рассмотрим различные ситуации.

Пример

Выполним вставку нашей переменной в качестве селектора:

@{var} { font-size: 20px; }

Результат компиляции:

div { font-size: 20px; }

Пример

Пусть теперь наша переменная содержит часть селектора:

main @{var} { font-size: 20px; }

Результат компиляции:

main div { font-size: 20px; }

Пример

Пусть теперь мы говорим, что в нашей переменной содержится не имя тега, а его id. Добавим перед именем переменной решетку:

#@{var} { font-size: 20px; }

Результат компиляции:

#div { font-size: 20px; }

Пример

Пусть теперь мы говорим, что в нашей переменной содержится не имя тега, а его класс. Добавим перед именем переменной точку:

.@{var} { font-size: 20px; }

Результат компиляции:

.div { font-size: 20px; }

Практические задачи

Расскажите, каким будет результат компиляции следующего кода:

@var: ul; @{var} { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: ul; div @{var} { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: ul; div @{var} { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: ul; @{var} li { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: list; .@{var} { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: list; #@{var} li { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: list; .@{var} li { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: list; ul.@{var} li { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: list; ul.@{var} li { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: .block; ul@{var} { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: .block; ul@{var} li { font-size: 20px; }

Расскажите, каким будет результат компиляции следующего кода:

@var: a; @{var}:hover { text-decoration: none; }

Расскажите, каким будет результат компиляции следующего кода:

@var1: div; @var2: a; @{var1} @{var2}:hover { text-decoration: none; }

Расскажите, каким будет результат компиляции следующего кода:

@var1: block1; @var2: block2; .@{var1}.@{var2} { font-size: 20px; }