Препроцессоры CSS: SASS, LESS, Stylus — базовые понятия

Зачем нужны препроцессоры? 🔥

Чистый CSS — это мощно, но писать его в больших проектах может быть утомительно. Представьте:

/* Классический CSS */
.header {
  background: #333;
  padding: 20px;
}

.header__logo {
  width: 150px;
  height: auto;
}

.header__nav {
  display: flex;
  gap: 15px;
}

Препроцессоры добавляют суперспособности:

  • Вложенность — как в HTML
  • Переменные — для цветов, размеров
  • Миксины — переиспользуемые блоки кода
  • Импорты — разбивка на модули
  • Математика — вычисления прямо в стилях

Три кита: SASS, LESS, Stylus 🐋

Особенность SASS/SCSS LESS Stylus
Синтаксис .sass / .scss .less .styl
Зависимости Ruby/node-sass JavaScript Node.js
Переменные $variable @variable variable =
Активность Самый популярный Устаревает Альтернатива

💡 Совет: Начните с SCSS — он ближе всего к обычному CSS и имеет лучшую поддержку.


SCSS — золотой стандарт ✨

Переменные как в CSS Custom Properties, но мощнее

$primary-color: #3a86ff;
$spacing-unit: 1rem;

.button {
  background: $primary-color;
  padding: $spacing-unit $spacing-unit * 2;
}

Вложенность — визуальная иерархия

.card {
  border: 1px solid #eee;

  &__header {
    font-size: 1.5rem; /* .card__header */
  }

  &:hover {
    box-shadow: 0 2px 10px rgba(0,0,0,0.1); /* .card:hover */
  }
}

Миксины — функции для CSS

@mixin flex-center($direction: row) {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: $direction;
}

.hero {
  @include flex-center(column);
}

LESS — простота для быстрых проектов ⚡

Отлично работает с Bootstrap (который изначально написан на LESS):

@button-radius: 4px;

.button {
  border-radius: @button-radius;

  .generate-sizes(4); // Вызов миксина
}

.generate-sizes(@n) {
  .button-@{n}x {
    padding: @n * 10px;
  }
}

Stylus — минимализм и свобода 🎨

Синтаксис без скобок и точек с запятой — на любителя:

primary-color = #ff2d54

body
  font 16px Helvetica
  color primary-color

  button
    background primary-color
    border none

Как начать использовать? 🛠️

1. Установите через npm:

npm install sass less stylus

2. Добавьте в сборку (например, в webpack):

// webpack.config.js
module: {
  rules: [
    {
      test: /\.scss$/,
      use: ['style-loader', 'css-loader', 'sass-loader']
    }
  ]
}

3. Или используйте live-компиляцию:

sass --watch input.scss output.css

Практический пример: кнопка с состоянием 🎮

SCSS-версия с переменными и миксинами:

// _variables.scss
$btn-padding: 0.75em 1.5em;
$transition: all 0.3s ease;

// _mixins.scss
@mixin button-variant($bg, $color) {
  background: $bg;
  color: $color;

  &:hover {
    background: darken($bg, 10%);
  }
}

// buttons.scss
@import 'variables';
@import 'mixins';

.btn {
  padding: $btn-padding;
  border: none;
  transition: $transition;

  &--primary {
    @include button-variant(#3a86ff, white);
  }

  &--danger {
    @include button-variant(#ff2d54, white);
  }
}

Когда не стоит использовать препроцессоры? 🚧

  • Маленькие проекты (оверкилл)
  • Команда не знает их (добавит сложность)
  • Нет сборщика (webpack, gulp, etc.)
  • Используются CSS-переменные (Custom Properties)

Что дальше? 🚀

  1. Освойте вложенность и переменные
  2. Поэкспериментируйте с миксинами
  3. Разделяйте код на частичные файлы (_header.scss)
  4. Подключите автопрефиксер для вендорных префиксов
  5. Изучите функции (lighten(), darken(), percentage())

Препроцессоры — это не «замена» CSS, а его логичное развитие. Они делают стилизацию предсказуемой, поддерживаемой и... приятной! Попробуйте — и назад дороги не будет. 😉

Скрыть рекламу навсегда

🧠 Учёба без воды и зубрёжки

Закрытый Boosty с наработками опытного преподавателя.

Объясняю сложное так, чтобы щелкнуло.

🚀 Забрать доступ к Boosty