/ 

Международный день box-sizing и лучшие практики

Недавно я использовал в проекте css свойство box-sizing: border-box. В процессе этого я узнал про «Международный день box-sizing» (International box-sizing Awareness Day). И хочу рассказать вам что это за праздник, лучшие практики и поддержку свойства box-sizing.

Международный день box-sizing

Этот мини праздник отмечается 1 февраля каждого года. Первого февраля 2012 года Пол Айриш (Paul Irish) опубликовал свою статью * { Box-sizing: Border-box } FTW. Спустя два года Крис Койер (Chris Coyier) объявил на сайте css-tricks.com, что первое февраля будет считаться «Международным днем box-sizing», в честь даты написания статьи Полом.

Лучшая практика

Раньше для применения модели border-box для всех элементов я часто видел следующий код:

*, *:before, *:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

Но он уже устарел и не совсем отвечает современным требованиям. Во первых нам уже не нужны вендорные префиксы для этого свойства (пруф). А во вторых, если мы где-то меняем box-sizing на content-box, то мы ожидаем, что у всех дочерних элементов box-sizing будет тоже content-box, но это не так.

Поэтому в 2014 году Крис Койер (Chris Coyier) улучшил этот код, и теперь это считается лучшей практикой для box-sizing.

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

Теперь все элементы ведут себя так, как мы и ожидаем. Все элементы кроме html наследуют box-sizing от родителя.

Поддержка браузерами

Я рекомендую использование этого свойства для всех проектов IE8 и выше. Firefox до 28 все еще требует префикс -moz-, iOS до 4 версии, Android до версии 2.3 требуют -webkit-, но все остальные браузеры используют без префиксов.

Производительность

Вы можете сказать, что использование универсального селектора * очень плохо влияет на производительности. На самом деле * настолько же быстрый как h1. Он может быть медленный если вы используете что-то на подобии .foo > *, поэтому не делайте так.

Приведу пример, опубликованный Полом, в котором он сравнивает производительность сайта New York Times со стандартной моделью W3C и с моделью border-box:

Производительность New York Times со моделью W3C и с border-box
Производительность New York Times со моделью W3C и с border-box

Разница не превысила порог в 5%

⌘ ⌘ ⌘
Адекватное подчеркивание ссылок
Фронтенд

Адекватное подчеркивание ссылок

Как исправить поведение text-decoration: underline

За и против. Оформление незагруженных изображений.
Фронтенд

За и против. Оформление незагруженных изображений.

Незагруженные изображение — не та проблема, которую нужно срочно решать. С изображениями есть другая, более важная, проблема.

Управляем поведением font-face в CSS
Фронтенд

Управляем поведением font-face в CSS

Поведением текста, отображаемого во время загрузки font-face, можно управлять с помощью свойства font-display. Как работает и какие значения поддерживет свойсто font-display читайте в статье.

Старт курса по архитектуре JavaScript приложений в SmartJS академии
Фронтенд

Старт курса по архитектуре JavaScript приложений в SmartJS академии

Краткое содержание вводной лекции курса по архитектуре современных JavaScript приложений в SmartJS академии