В чем разница между Normalize.css и Reset CSS?
Если вы когда-нибудь делали коммерческий заказ на верстку, то наверняка сталкивались с таким требованием как кроссбраузерность, то есть чтобы ваша страница отображалась максимально одинаково во всех браузерах. И поэтому возникает вопрос – что же выбрать, reset или normalize?
Что лучше reset.css или normalize.css?
Для начала давайте выясним что делает каждый из файлов:
reset.css – как и видно по названию файла, сбрасывает большинство стилей браузера, которые в нем заданы по умолчанию (а такие действительно есть, просто откройте голый HTML).
normalize.css – этот файл не только задает стили по умолчанию там где это необходимо, но и исправляет некоторые недостатки старых браузеров (привет IE).
Как вы понимаете, эти 2 файла даже не совсем корректно сравнивать, так как у них немного разная “философия”. Так в чем же разница и что выбрать?
В чем отличия normalize от reset css
- В отличие от reset, после подключения normalize css, вы визуально сможете определить где у вас находятся различные элементы, те же параграфы имеют внешние отступы. Поэтому, применяя “таблицу стилей со сбросом”, вы просто приведете большое количество элементов к одному виду.
- Исходя из 1 правила следует что нам нужно написать стили с нуля, т.к. у нас всё сброшено, что лично по мне, уже не комильфо.
- В normalize css есть исправления различных общих ошибок, таких как отображение HTML5 тегов или тех же форм
- Когда вы работаете с инструментами отладки в браузерах, таких, например, как фаербаг, подключая ресет вы получите огромную “простыню” из свойств, которая в итоге увеличит ваше время на написание новых стилей и поиск старых
- В normalize каждое отдельное правило задокументировано и вы легко сможете понять для чего оно там, и если вы уверены что оно вам не нужно, то сможете легко его удалить
- normalize.css подключен по умолчанию в bootstrap
Думаю вы и сами понимаете, что normalize выигрывает по всем параметрам. Стоит также вспомнить про извращенцев, которые используют что-то в этом стиле:
Как вы понимаете так делать не стоит.
В заключении хотелось бы сказать, что я еще не встречал человека, который бы утверждал что reset.css вообще есть смысл применять. Мне кажется, его применяли только потому что не знали про “нормализацию стилей”
Есть мнение, что стоит подключать стили в head “инлайново”, хотя бы для “первого экрана” – то есть то, что сразу покажет человеку когда он откроет ваш сайт, и это действительно очень хорошая практика. Данную рекомендацию вы можете встретить в google page speed.
Возможно вам пригодится – inline normalize css and bootstrap grid Пишем это в head, затем также само пишем свои стили для первого экрана, и вы выполните одну из рекомендаций + ваш сайт не будет шататься при загрузке, т.к. основные самые важные стили, а именно сетка, нормалайз и “первый экран” уже прогрузились.
Также вот вам версия без комментариев:
html body article, aside, details, figcaption, figure, footer, header, main, menu, nav, section, summary audio, canvas, progress, video audio:not([controls]) [hidden], template a a:active, a:hover abbr[title] b, strong b, strong dfn h1 mark small sub, sup sup sub img svg:not(:root) figure hr pre code, kbd, pre, samp button, input, optgroup, select, textarea button button, select button, html input[type=»button»], input[type=»reset»], input[type=»submit»] button[disabled], html input[disabled] button::-moz-focus-inner, input::-moz-focus-inner button:-moz-focusring, input:-moz-focusring input input[type=»checkbox»], input[type=»radio»] input[type=»number»]::-webkit-inner-spin-button, input[type=»number»]::-webkit-outer-spin-button input[type=»search»] input[type=»search»]::-webkit-search-cancel-button, input[type=»search»]::-webkit-search-decoration fieldset legend textarea optgroup
Что такое normalize css ?
Все браузеры имеют свой собственный CSS для рендеринга элементов. Обратите внимание, как по-разному выглядит кнопка отправки в операционных системах и приложениях браузера. CSS страницы по умолчанию гарантирует, что каждый файл, независимо от того, насколько он прост, доступен для чтения. Дело в том, что все сss-стили по умолчанию разные, потому что они придерживаются бренда авторской компании. Если вы разрабатываете пользовательский интерфейс, последнее, что вам нужно, — это непоследовательность. Есть два варианта очистки css: Сбросить все стили: буквально сбрасывает каждый элемент HTML в его состояние по умолчанию. Дизайнер строит ВСЕ с нуля. Это дает вам абсолютный контроль, но также требует большей работы. Даже ваши списки или теги заголовков больше не оформлены. Весь документ выглядит как обычный текст с разрывами строк и без полей или отступов. Normalize all styles: если вы не хотите перестраивать каждый элемент с нуля, это промежуточная мера, она позволяет вам иметь относительно согласованный рендеринг элементов во всех браузерах и операционных системах, что делает ваше приложение более красивым и удобным в использовании и читке. Данный метод помогает вам сделать примерно одинаковый вид во всех браузерах(включая мобильные) .Пользовательские css стили также соответствуют. Большую часть времени вы хотите нормализовать. Если у вас действительно продвинутый дизайн, вы сбросите настройки.
Хочешь научиться создавать сайты? Изучи все на практике, с помощью интерактивных курсов у нас на проекте. Регистрация — Войти — Наши курсы. Задавайте вопросы в комментариях!
Автор данной статьи: Роман
Что такое reset.css и normalize.css

Сегодня мы рассмотрим что такое reset.css и normalize.css и для чего они нужны. Пренебрегать данными файлами стилей не следует, так как их отсутствие может серьёзно исказить внешний вид сайта на разных версиях браузеров.
Каждый начинающий верстальщик так или иначе сталкивается с проблемой кроссбраузерности (когда html страница по разному отображается на каждом из браузеров). Отличия могут быть как несущественные так и критические в следствии чего «плывёт» вся вёрстка. Данная статья не расскажет как решить все проблемы кроссбраузерности, речь пойдёт о файлах стилей reset.css и normalize.css.
Разработчики браузеров сами решают каким образом оформлять тот или иной элемент страницы, будь то заголовок (h1), список (ul) и т.д. Разница может заключаться в значениях отступов (margin, padding), размерах шрифтов и прочем. Также каждый пользователь может настроить свой браузер под себя, то есть сделать первоначальные установки по шрифтам или, что ещё хуже, фонам. Это влечёт за собой следующий не мало важный момент — например если пользователь поменял цвет фона на красный, а верстальщик не переопределил значение для фона страницы, то у пользователя будет свой «уникальный» дизайн. От верстальщика требуется чтобы сайт отображался одинаково (или приближённо) вне зависимости от браузера клиента, а для этого требуется переопределять все значения элементов не смотря, что его браузер уже имеет белый фон.
Reset.css
Идея о создании данного набора файлов стилей пришла в голову Эрику Майеру. Идея reset.css проста — перечислить все возможные теги и сбросить для них стили в нулевые значения. Остаётся лишь подключить данный файл к странице как обычный файл стилей.
Существует ещё одна вариация сброса:
1 2 3 4
* { margin: 0; padding: 0; }
Недостатком сброса стилей является необходимость повторно задавать стили для элементов (переопределять сброшенные значения).
Normalize.css
Автор данного подхода Николас Галлахер
Normalize.css — не сбрасывает стили для элементов, а нормализует (стандартизирует), что избавляет от необходимости переопределять повторно все стили.
Заключение:
Популярны оба файла и в своей практике можно использовать любой из них. Бывают случаи когда приходится на основе этих файлов создать один свой, который объединяет оба эти подхода. Ещё одним решением, которое избавляет нас от необходимости использования сброса и нормализации стилей — это использование CSS-фреймворков, которые в себе уже содержат сборку из этих файлов.
Нормализация CSS при помощи Normalize.css
Normalize.css представляет собой настраиваемый CSS файл, при помощи которого браузеры начинают отображать все элементы более последовательно и в соответствии с современными стандартами. Были проведены исследования для выявления различий между стилями браузеров по умолчанию для того, чтобы нормализовать только те стили, которые отличаются друг от друга.
Возможности
- Сохраняет полезные стили по умолчанию, в отличие от многих reset проектов (например, reset.css от Эрика Мейера)
- Нормализует стили для широкого диапазона элементов
- Исправляет ошибки и общие несоответствия браузеров
- Повышает юзабильность
- Хорошо и подробно откомментирован
- Поддерживает мобильные устройства и HTML5
Как использовать
Внимательно изучите код и комментарии к нему в файле normalize.css, чтобы понять для, чего необходимо каждое из правил. Пусть он не будет для вас «черным ящиком».
Если форматирование файла по каким-то причинам вам не подходит, оформите его в соответствии с вашими правилами: расставьте скобки и отступы. Для уменьшения размера файла перед публикацией удалите ненужные комментарии и минимизируйте его при помощи YUI Compressor или CSSTidy.
Затем до инициализации основного файла стилей подключите normalize.css
Поддержка браузеров
- Google Chrome
- Mozilla Firefox 3+
- Apple Safari 4+
- Opera 10+
- Internet Explorer 6+
Лицензия
Public Domain (Общественное достояние) — совокупность творческих произведений, авторские права на которые истекли или никогда не существовали. Также «общественным достоянием» иногда называют изобретения, срок патента на которые истёк. Распространять и использовать общественное достояние могут все без ограничений.
Благодарности
Normalize.css — это проект Николаса Галахера (Nicolas Gallagher) и Джонатана Нила (Jonathan Neal)
Ссылки
- Проект на github
- Демонстрация работы
- Стили по умолчанию для IE
- Стили по умолчанию для WebKit
- Стили по умолчанию для Mozilla
- Лицензия Public Domain
