0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Препроцессор<em>SASS</em>вводит новый тип селекторов - шаблонные. Из их названия становится понятно, что они служат для создания шаблонов стилей, которые можно применять в разных частях таблицы стилей.</p>
1
<p>Препроцессор<em>SASS</em>вводит новый тип селекторов - шаблонные. Из их названия становится понятно, что они служат для создания шаблонов стилей, которые можно применять в разных частях таблицы стилей.</p>
2
<p>Создадим шаблон для флекс-контейнера, внутри которого элементы должны центрироваться по всем осям. Чтобы создать шаблонный селектор, используется символ<strong>%</strong>и присваивается уникальное имя:</p>
2
<p>Создадим шаблон для флекс-контейнера, внутри которого элементы должны центрироваться по всем осям. Чтобы создать шаблонный селектор, используется символ<strong>%</strong>и присваивается уникальное имя:</p>
3
<p>Если попробовать скомпилировать данный код, то в файле<em>.css</em>мы получим пустоту. Такие шаблоны никак не компилируются до тех пор, пока не будут использованы. Это помогает хорошо структурировать код внутри проекта, так как теперь мы можем иметь даже целый файл с различными шаблонами.</p>
3
<p>Если попробовать скомпилировать данный код, то в файле<em>.css</em>мы получим пустоту. Такие шаблоны никак не компилируются до тех пор, пока не будут использованы. Это помогает хорошо структурировать код внутри проекта, так как теперь мы можем иметь даже целый файл с различными шаблонами.</p>
4
<p>Чтобы применить эти стили к элементу, используется директива<strong>@extend</strong>. Добавим наш шаблон в<em>CSS</em>:</p>
4
<p>Чтобы применить эти стили к элементу, используется директива<strong>@extend</strong>. Добавим наш шаблон в<em>CSS</em>:</p>
5
<p>После компиляции получится следующий код<em>CSS</em>:</p>
5
<p>После компиляции получится следующий код<em>CSS</em>:</p>
6
<p>Как видно, директива<strong>@extend</strong>включает код<em>CSS</em>из другого селектора. И поэтому её можно использовать не только с шаблонными селекторами, а с любыми другими.</p>
6
<p>Как видно, директива<strong>@extend</strong>включает код<em>CSS</em>из другого селектора. И поэтому её можно использовать не только с шаблонными селекторами, а с любыми другими.</p>
7
<p>В данном коде мы подключаем шаблон<em>%flex-element-center</em>в класс<em>.modal-info</em>, а также наследуем стили из класса<em>.info</em>. Итоговым результатом компиляции станет следующий код<em>CSS</em>:</p>
7
<p>В данном коде мы подключаем шаблон<em>%flex-element-center</em>в класс<em>.modal-info</em>, а также наследуем стили из класса<em>.info</em>. Итоговым результатом компиляции станет следующий код<em>CSS</em>:</p>
8
<p>Обратите внимание на получившийся порядок селекторов. А также на то, что селектор<em>.modal-info</em>продублировался в сгенерированном коде<em>CSS</em>. Это особенность директивы<strong>@extend</strong>. По умолчанию<em>SASS</em>не умеет объединять одинаковые селекторы. Но не стоит об этом беспокоиться. В такой компиляции нет ничего страшного, поэтому вы можете использовать директиву<strong>@extend</strong>и шаблонные селекторы.</p>
8
<p>Обратите внимание на получившийся порядок селекторов. А также на то, что селектор<em>.modal-info</em>продублировался в сгенерированном коде<em>CSS</em>. Это особенность директивы<strong>@extend</strong>. По умолчанию<em>SASS</em>не умеет объединять одинаковые селекторы. Но не стоит об этом беспокоиться. В такой компиляции нет ничего страшного, поэтому вы можете использовать директиву<strong>@extend</strong>и шаблонные селекторы.</p>
9
<p>Также как и с вложенностью селекторов, количество уровней включений директивой<strong>@extend</strong>неограниченно. Это не значит, что стоит включать стили из селектора, в котором включаются стили, в котором включаются стили, в котором включаются стили...<em>SASS</em>вам это не запретит, но вы из будущего себя настоящего за это не полюбите. Разобраться в такой каше включений иногда сложнее, чем просто переписать код.</p>
9
<p>Также как и с вложенностью селекторов, количество уровней включений директивой<strong>@extend</strong>неограниченно. Это не значит, что стоит включать стили из селектора, в котором включаются стили, в котором включаются стили, в котором включаются стили...<em>SASS</em>вам это не запретит, но вы из будущего себя настоящего за это не полюбите. Разобраться в такой каше включений иногда сложнее, чем просто переписать код.</p>
10
<p>Этот "чудесный" код скомпилируется в следующий<em>CSS</em>:</p>
10
<p>Этот "чудесный" код скомпилируется в следующий<em>CSS</em>:</p>
11
<h2>Дополнительное задание</h2>
11
<h2>Дополнительное задание</h2>
12
<p>Возьмите последний приведённый в этом уроке код и разберитесь, почему создались именно такие селекторы и их порядок. Идите от строчки к строчке. Также вы можете его скопировать и поэкспериментировать.</p>
12
<p>Возьмите последний приведённый в этом уроке код и разберитесь, почему создались именно такие селекторы и их порядок. Идите от строчки к строчке. Также вы можете его скопировать и поэкспериментировать.</p>