CSS Protips Секреты чистого и эффективного CSS, которые должен знать каждый разработчик

20 Mar, 2025

Репозиторий давно не обновлялся

Последнее обновление было 1 год назад.

30,177
🔱 2,211
👥 664

Привет, коллеги! Часто ли вы ловите себя на мысли, что CSS – это непредсказуемая магия, где одно изменение ломает всё остальное? Или что вы постоянно гуглите, как же, наконец, отцентрировать этот несчастный див? Знакомая ситуация, не правда ли? В мире фронтенда, где фреймворки приходят и уходят, а JavaScript эволюционирует со скоростью света, старый добрый CSS остаётся нашим верным, но порой капризным спутником. И чтобы укротить его, нужны не только знания, но и хитрости, которые приходят с опытом.

Именно о такой сокровищнице опыта я хочу сегодня рассказать. Наткнулся недавно на GitHub-репозиторий AllThingsSmitty/css-protips, и, честно говоря, залип надолго. Это не просто список советов, это настоящий сборник "профессиональных хитростей", которые помогают писать CSS чище, эффективнее и, что самое главное, с меньшими затратами нервных клеток. Давайте разберёмся, почему этот проект должен быть в закладках у каждого, кто работает с вебом.

Что такое CSS Protips и почему он вам нужен?

Представьте, что у вас есть старший, более опытный коллега, который сидит рядом и время от времени подкидывает вам короткие, но невероятно полезные советы: "А вот здесь можно было бы сделать так, это сэкономит тебе пару часов в будущем", или "Кстати, знаешь, как избежать этой распространённой ошибки?". Вот именно таким "коллегой" и является репозиторий css-protips.

Это тщательно подобранная коллекция небольших, но мощных CSS-приёмов, которые охватывают широкий спектр задач: от базовой настройки проекта до продвинутых техник для создания адаптивных и доступных интерфейсов. Проект будет полезен как новичкам, которые только начинают свой путь в мире стилей и хотят сразу освоить хорошие практики, так и опытным разработчикам, желающим освежить знания, узнать новые фишки или просто найти элегантное решение для очередной "головной боли" с CSS.

light bulb icon

От ресета до "совы": погружаемся в мир CSS-хитростей

Давайте рассмотрим несколько примеров, которые, на мой взгляд, особенно ярко демонстрируют ценность этого репозитория.

1. Фундамент любого проекта: CSS Reset и наследование box-sizing

Начинать любой проект с чистого листа – это золотое правило. Браузеры по умолчанию добавляют свои стили, и без CSS Reset вы рискуете столкнуться с непредсказуемым поведением элементов. css-protips предлагает элегантный и минималистичный ресет:

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

Но это ещё не всё! Отдельный совет посвящён наследованию box-sizing. Вместо того чтобы устанавливать box-sizing: border-box напрямую для всех элементов, лучше сделать это через наследование от html:

html {
  box-sizing: border-box;
}

*,
*::before,
*::after {
  box-sizing: inherit;
}

Почему это круто? Потому что такой подход даёт вам гибкость. Если в каком-то компоненте или сторонней библиотеке вам понадобится изменить box-sizing, вы сможете это сделать, не ломая глобальные стили и не прибегая к !important. Это простая, но очень мощная практика для поддержания чистоты и модульности кода.

2. Вечная проблема: вертикальное центрирование

Сколько мемов было создано на тему вертикального центрирования! Кажется, это была одна из самых больших болей фронтенд-разработчиков до появления Flexbox и Grid. css-protips предлагает два современных и изящных решения:

С помощью Flexbox:

html,
body {
  height: 100%;
}

body {
  align-items: center;
  display: flex;
  justify-content: center;
}

С помощью CSS Grid:

body {
  display: grid;
  height: 100vh;
  place-items: center;
}

Согласитесь, это гораздо приятнее, чем жонглировать position: absolute, top: 50% и transform: translateY(-50%)! Эти подходы не только проще, но и более надёжны и адаптивны.

3. Мощь псевдоклассов: :not(), :is() и :empty

Псевдоклассы — это настоящие швейцарские ножи в арсенале CSS. Репозиторий демонстрирует, как они могут значительно упростить ваш код.

  • :not() для границ в навигации: Забудьте о добавлении границы, а затем её удалении у последнего элемента. Используйте :not():

    .nav li:not(:last-child) {
      border-right: 1px solid #666;
    }
    

    Это делает код более читаемым и логичным: "Примени границу ко всем элементам списка, кроме последнего".

  • :is() для сокращения селекторов: Если вы когда-нибудь писали длинные, повторяющиеся селекторы для заголовков внутри разных секций, :is() станет вашим спасением:

    :is(section, article, aside, nav) :is(h1, h2, h3, h4, h5, h6) {
      color: green;
    }
    

    Вместо десятков строк кода вы получаете одну, которая делает то же самое, но выглядит намного чище и поддерживаемее.

  • :empty для скрытия пустых элементов: Бывает, что CMS или динамический контент оставляют пустые div или p элементы, которые создают ненужные отступы. :empty придет на помощь:

    :empty {
      display: none;
    }
    

    Важно помнить, что элементы с пробелами внутри (<p> </p>) не считаются пустыми.

4. "Лоботомированная сова" (Lobotomized Owl) – странное название, мощный эффект

Этот селектор звучит забавно, но его полезность трудно переоценить. Он позволяет задать отступы между элементами, которые следуют друг за другом, без необходимости использовать margin-bottom для каждого элемента и затем обнулять его для последнего.

* + * {
  margin-top: 1.5em;
}

Что это значит? Все элементы, которые следуют за другим элементом в потоке документа, получат margin-top: 1.5em. Это невероятно удобно для создания равномерных вертикальных отступов в блоках контента, например, в статьях или компонентах, где порядок элементов может меняться. Больше никаких хаков с first-child или last-child!

5. Современные свойства для адаптивности: aspect-ratio и margin-inline

CSS постоянно развивается, и css-protips не отстаёт, предлагая советы по использованию новых, но уже хорошо поддерживаемых свойств.

  • aspect-ratio для сохранения пропорций: Создание адаптивных изображений или видео, которые сохраняют свои пропорции при изменении размера экрана, всегда было небольшой головной болью. Раньше приходилось использовать хаки с padding-bottom. Теперь есть aspect-ratio:

    img {
      aspect-ratio: 16 / 9; /* ширина / высота */
      object-fit: cover;
    }
    

    Это делает код чище и понятнее, а также предотвращает "скачки" макета (layout shift), что важно для Core Web Vitals.

  • margin-inline и margin-block для логических свойств: Современный CSS движется в сторону логических свойств, которые учитывают направление письма. margin-inline и margin-block — отличный пример:

    .div {
      margin-inline: auto; /* Аналог margin-left: auto; margin-right: auto; */
    }
    
    .div {
      margin-block: auto; /* Аналог margin-top: auto; margin-bottom: auto; */
    }
    

    Это не только делает код более универсальным для разных языков, но и просто выглядит аккуратнее.

Практическое применение: зачем это всё разработчику?

Все эти советы — не просто академические знания. Они имеют прямое практическое применение:

  • Ускорение разработки: Готовые решения для распространённых задач избавляют от необходимости изобретать велосипед или тратить время на поиск в интернете.
  • Улучшение качества кода: Использование лучших практик и современных подходов делает ваш CSS более чистым, предсказуемым и легким для поддержки.
  • Повышение производительности: Некоторые советы (например, проверка шрифтов локально, использование SVG) напрямую влияют на скорость загрузки и отрисовки страниц.
  • Улучшение доступности (Accessibility): Советы по :focus для форм или скрытию немых автовоспроизводящихся видео делают интерфейсы более удобными для всех пользователей.
  • Освоение современного CSS: Репозиторий помогает быть в курсе новых свойств и техник, которые делают вёрстку более гибкой и мощной.

Выводы: стоит ли добавить в закладки?

Однозначно да! AllThingsSmitty/css-protips — это не просто список, это живой, постоянно пополняющийся ресурс, который поможет вам стать настоящим мастером CSS. Он вдохновляет на эксперименты, показывает элегантные решения для повседневных задач и напоминает, что даже в таком, казалось бы, давно изученном инструменте, как CSS, всегда есть что-то новое и интересное.

Если вы хотите писать более чистый, эффективный и современный CSS, если вы устали от "магии" и хотите понять логику, или просто ищете новые идеи для оптимизации своих стилей — этот репозиторий станет вашим надёжным помощником. Откройте его, изучите, попробуйте применить эти советы в своих проектах, и вы увидите, как ваш CSS заиграет новыми красками.

P.S. Кстати, там есть и русская локализация README, так что языковой барьер не станет проблемой!

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.