HTML Diff
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>