Sass
Устанавливаем Sass глобально:
npm install -g sass
Теперь, если зайти в папку проекта, скомпилировать index.scss в index.css можно командой:
sass index.scss index.css
В папке проекта появились файлы index.css и index.css.map
Файл map это связь между sass и css.
Подключать в index.html следует файл index.css
<link rel="stylesheet" href="index.css">
Ок. Всё работает.
Но вводить команду sass index.scss index.css каждый раз, когда что-то изменил в scss-коде и хочешь посмотреть на результат, нерационально.
По этой инструкции устанавливаем и подключаем Webpack https://dev.to/pixelgoo/how-to-configure-webpack-from-scratch-for-a-basic-website-46a5
Запускаем команды
npm run build // компилирует scss в css и сохраняет в папке dist
npm run watch // отслеживает изменения и компилирует их
По этой инструкции устанавливаем и подключаем Webpack https://dev.to/pixelgoo/how-to-configure-webpack-from-scratch-for-a-basic-website-46a5
Запускаем команды
npm run build // компилирует scss в css и сохраняет в папке dist
npm run watch // отслеживает изменения и компилирует их
Переменные
sass
$color: red;
$padding: 10px;
a {
color: $color;
padding: $padding;
};
css
a {
color: red;
padding: 10px;
}
В переменных хранят цвета, шрифты, медиазапросы.
Вложенность
scss
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
css
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
БЭМ очень хорошо сочетается с sass и именно благодаря ему стал таким популярным
scss
.menu {
width: 100px;
&--link {
padding: 5px;
&-active {
color: red;
}
}
}
css
.menu {
width: 100px;
}
.menu--link {
padding: 5px;
}
.menu--link-active {
color: red;
}
Не больше трёх уровней вложенности, потому что иначе получится каскад стилей, которые сложно перебить другими селекторами.
Фрагментирование
sass файлы можно разбить на маленькие фрагменты и собрать при помощи
@import
Имя фрагмента начинается с нижнего подчёпкивания
Например, в папке main 2 фрагмента _main.scss и _aside.scss;
Импорт записываем внутри style.scss вот таким образом:
@import "main/main";
@import "main/aside";
Миксины
Миксины - группы css-правил, которые можно использовать вместе
В миксины можно передавать переменные, которые записываем в скобках и которым можем передавать значения по умолчанию
@mixin transform($property: rotate(60deg)) {
-webkit-transform: $property;
-ms-transform: $property;
transform: $property;
}
.box {
@include transform();
}
.box {
-webkit-transform: rotate(60deg);
-ms-transform: rotate(60deg);
transform: rotate(60deg);
}
Вычисления
$width: 960px;
$column: $width/12;
.page {
width: 8*$column;
}
.sidebar {
width: 4*$column;
}
.page {
width: 640px;
}
.sidebar {
width: 320px;
}
https://youtu.be/JO8DvVZbxDw?t=3214
https://sass-scss.ru/guide/
https://www.sassmeister.com/