О normalize.css — Блог HTML Academy
Это перевод статьи Николаса Галахера — «About normalize.css».
Normalize.css — это небольшой CSS-файл, который обеспечивает для HTML-элементов лучшую кроссбраузерность в стилях по умолчанию. Это современная, готовая к HTML5 альтернатива традиционному reset.css.
- Normalize.css — сайт проекта
- Normalize.css — исходный код на GitHub
В настоящее время normalize.css используется в Twitter Bootstrap, HTML5 Boilerplate, GOV.UK, Rdio, CSS Tricks и во многих других фреймворках, инструментах и сайтах.
Обзор
Normalize.css является альтернативой CSS Reset. Проект является продуктом сотен часов глубокого исследования различий между изначальными стилями браузера. Это исследование провели Николас Галахер, @necolas и Джонатан Нил, @jon_neal.
Цели normalize.css:
- сохранять полезные настройки браузера, а не стирать их;
- нормализовать стили для широкого круга HTML-элементов;
- корректировать ошибки и основные несоответствия браузера;
- совершенствовать юзабилити незаметными улучшениями;
- объяснять код, используя комментарии и детальную документацию.
Он поддерживает широкий диапазон браузеров (в том числе мобильных) и включает в себя CSS, который нормализует HTML5-элементы, типографику, списки, встраиваемый контент, формы и таблицы.
Несмотря на то, что проект основан на принципе нормализации, он использует стандартные настройки там, где они предпочтительны.
Нормализовать или сбрасывать?
Стоит понимать более подробно, в чём отличие normalize.css от традиционного reset.css.
Normalize.css сохраняет полезные настройки по умолчанию
Reset.css накладывает однородный визуальный стиль, выравнивая стили по умолчанию почти для всех элементов. В отличие от этого, normalize.css сохраняет многие полезные стили браузеров по умолчанию. Это значит, что не требуется повторно объявлять стили для всех стандартных элементов типографики.
Когда элемент имеет различные стили по умолчанию в разных браузерах, normalize.css там, где это возможно, стремится сделать эти стили совместимыми и соответствующими современными стандартам.
Normalize.css исправляет популярные ошибки
Он исправляет основные баги на мобильных и десктопных устройствах, которые не затрагивает reset.css. Это включает в себя параметры отображения элементов HTML5, исправление font-size
для предварительно отформатированного текста, отображение SVG в IE9, и многие другие баги, связанные с отображаемым в разных браузерах и операционных системах.
Например, вот как normalize.css делает HTML5-элемент формы с типом search
кроссбраузерным и стилизованным.
Reset.css часто не приводит браузеры к тому уровню, где отправной точкой считается то, как элемент отрисовывается. Это особенно верно в отношении форм — именно здесь normalize.css может существенно помочь.
Normalize.css не мешает вашим инструментам отладки
Обычно при использовании reset.css раздражает огромная цепочка наследования свойств, которая отображается в инструментах разработчика.
Частый вид окна инструментов разработчика браузера при использовании reset. cssТакая проблема не возникает с normalize.css из-за целенаправленных стилей и умеренного использования множественных селекторов в наборе правил.
Normalize.css модульный
Проект разбит на относительно независимые участки, что позволяет увидеть, каким именно элементам нужны конкретные стили. Кроме того, это даёт вам возможность удалить блоки свойств (например, нормализацию форм), если известно, что они никогда не понадобятся на сайте.
Normalize.css имеет подробную документацию
Код normalize.css основан на детальном кроссбраузерном методичном тестировании. Подробно документированный файл вы можете найти на GitHub. Это значит, что вы можете узнать, что делает каждая строка кода, зачем она добавлена, какие различия существуют между браузерами. Также вы легко можете провести собственные тесты.
Цель проекта — показать людям, как по умолчанию браузеры отображают элементы, и помочь им упростить процесс внедрения улучшений.
Как использовать normalize.css
Сперва установите или скачайте normalize. css с GitHub. Есть два способа как можно его использовать.
Первый способ: используйте normalize.css как отправную точку CSS для вашего собственного проекта, изменяя значения согласно требованиям дизайна.
Второй способ: используйте normalize.css нетронутым и, основываясь на нём, переопределяйте стили в своём CSS при необходимости.
Заключение
Normalize.css значительно отличается от reset.css. Стоит попробовать его, чтобы увидеть, соответствует ли он вашему подходу и предпочтениям в разработке.
Проект развивается в открытом доступе на GitHub. Любой желающий может сообщить о проблемах и предложить исправления. Полная история проекта доступна всем для просмотра, а в коммитах и тикетах находятся контекст и причины всех изменений.
Материалы к прочтению
Вся информация о стилях по умолчанию:
- WHATWG suggestions for rendering HTML documents.
- Internet Explorer User Agent Style Sheets.
- CSS2.1 User Agent Style Sheet Defaults.
Что такое нормализатор CSS и зачем он нужен — Журнал «Код»
Когда веб-разработчик создаёт новый сайт, он хочет, чтобы в каждом браузере этот сайт выглядел одинаково. Но у каждого браузера есть свои стандарты отступов, оформления ссылок или форматирования блоков. В результате то, что в «Хроме» выглядит хорошо, в «Сафари» может выглядеть не очень, а в «Мозилле» вообще разрывает.
Одной строкой: новые CSS-команды для фронтендов
Для примера возьмём простой код, который нарисует нам на странице несколько стандартных элементов:
- две горизонтальных линии-разделителя,
- поле ввода с текстом внутри,
- кнопку,
- текст со ссылкой.
А после этого посмотрим, как выглядит этот код в разных браузерах.
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>Делаем одинаково</title> </head> <body> <hr> <hr> <input type="text" placeholder="Напишите свой текст"> <br> <br> <button>Кнопка</button> <br> <br> <a href="#">Привет, это журнал «Код»! </a> </body> </html>Хром, версия 87. Сафари, версия 14. Текст в стандартных элементах гораздо меньше, чем в Хроме.Firefox, версия 84. Выглядит почти так же, как и в Сафари, но линии гораздо жирнее.
Почему так происходит
Несмотря на то что внутри многих разных браузеров стоят одинаковые движки, у каждой компании свои представления о прекрасном и о том, как отображать разные HTML-элементы и CSS-стили. Например, в разных браузерах могут отличаться:
- толщина линий обводки,
- радиус скругления,
- размер текста,
- внешние и внутренние отступы у элементов,
- правила оформления ссылок,
- формы и кнопки.
Всё это записано в стандартных стилях браузера. Каждый раз, когда браузер встречает элемент, у которого не задан один из параметров, он берёт его из своей встроенной таблицы стилей. Разные браузеры — разные стили.
При этом браузер справится со своей основной задачей — показать HTML-страницу в понятном для пользователя виде. Но если веб-разработчик хочет, чтобы сайт выглядел идентично в каждом браузере, он должен предусмотреть это заранее и прописать в стилях.
Что такое нормализатор стилей
Чтобы сайт выглядел в каждом браузере почти одинаково, разработчики используют нормализатор стилей — normalize.css. По сути это просто большой CSS-файл, который делает следующее:
- стандартизирует все отступы;
- устанавливает единый размер шрифта;
- приводит к единому внешнему виду все формы, кнопки и элементы на странице;
- устанавливает для всех браузеров единые начальные параметры для форматирования текста, изображений и стандартных элементов.
Для этого нормализатор использует специальные CSS-команды, чтобы каждому браузеру объяснить на его языке, что нужно сделать.
Пример
Код ниже делает две вещи:
- Устанавливает одинаковую высоту строки во всех браузерах.
- Предотвращает изменения размера шрифта в iOS при повороте экрана.
html {
line-height: 1.15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
-webkit-text-size-adjust — это специальная команда, которая состоит из двух частей:
-webkit, который сообщает, что эта команда относится к браузерам на движке WebKit. Остальные браузеры проигнорируют эту команду, а, например, Safari в iOS поймёт, что это команда для неё.
text-size-adjust — команда, которая говорит браузеру, какой размер шрифта нужно использовать.
Получается, что все браузеры поймут первую команду line-height
, потому что она стандартная для всех браузеров, а на вторую -webkit-text-size-adjust
среагируют только те браузеры, у которых могут быть проблемы с отображением размера текста (например, Safari).
Как использовать
Подключить нормализатор как обычную CSS-таблицу стилей к своей странице:
<link rel="stylesheet" type="text/css" href="https://necolas.github.io/normalize.css/8.0.1/normalize.css">
Ещё вариант — можно взять нормализатор и использовать его как шаблон или основу для собственной таблицы стилей. Так в одном файле вы получите одинаковое отображение в браузерах и нужные настройки внешнего вида страницы.
Вот как будут выглядеть наши страницы после подключения нормализатора:
ХромСафариFirefoxОпераНо что-то же всё равно отличается даже на этих скриншотах!
Конечно, потому что этот нормализатор не может предусмотреть и настроить всё. Он оставляет фирменное оформление полей ввода и кнопок для каждого браузера, чтобы нормализованные элементы не выглядели чужеродно в родном браузере.
При этом вы можете на его основе сделать свой нормализатор, который предусматривает гораздо больше разных неочевидных случаев. Опытные разработчики, кстати, со временем так и делают — пишут свой нормализатор на основе собственного опыта и тех проблем в разработке, в которыми они сталкивались.
Это единственный нормализатор?
Нет, на самом деле их много. Просто этот самый популярный и проверенный.
Что дальше
Кроме нормализаторов есть ещё ресеты — они сбрасывают вообще все настройки в ноль, чтобы можно было установить всё вручную. Когда-нибудь доберёмся и до них.
Текст и скриншоты:
Михаил Полянин
Редактор:
Максим Ильяхов
Художник:
Даня Берковский
Корректор:
Ирина Михеева
Вёрстка:
Мария Дронова
Соцсети:
Олег Вешкурцев
Нормализовать CSS или Сбросить CSS?!.
Архитектура CSS — Часть 1 | by Elad ShechterАрхитектура CSS — Часть 1
Как правило, мы хотим, чтобы HTML-элементы выглядели одинаково, независимо от того, какой браузер используется для их просмотра. К сожалению, это не так из-за того, как работают браузеры.
Вопрос о том, какой подход использовать для устранения различий между стилями пользовательского агента, является постоянным спором между Нормализация CSS и Сброс CSS .
Прежде чем мы углубимся в то, как я рекомендую работать правильно, я хотел бы объяснить эти два термина тем из вас, кто с ними не знаком.
Стили пользовательского агента CSS
Когда браузер отображает HTML-страницу, он применяет базовые стили еще до того, как вы написали хотя бы один стиль. Например, HTML-теги с по
во всех браузерах отличаются от обычного текста: в целом размер их шрифта больше, их вес шрифта жирный (
вес шрифта: полужирный
), и у них есть поля сверху и снизу.
стили по умолчанию в chrome
Хотя все браузеры применяют свои основные стили, каждый браузер имеет свои особые стили, отличные от других браузеров, и это, конечно, вызывает проблему несогласованности. Это проблема, о которой мы поговорим в этом посте.
Попытка решить проблему несогласованности браузера породила два подхода: подход «Нормализовать CSS» и подход «Сброс CSS» 9.0010 . Вкратце, мы можем описать Normalize CSS как мягкое решение и Reset CSS как более агрессивное решение . Теперь уточним.
Нормализовать CSS
Нормализовать . css — это небольшой файл CSS , обеспечивающий кросс-браузерную согласованность стилей HTML-элементов по умолчанию.
Это означает, что если мы посмотрим на стандарты W3C стилей, применяемых браузерами, и обнаружим несоответствие в одном из браузеров, то normalize.css
стили исправят стиль браузера, в котором есть разница.
Но в некоторых случаях мы не можем исправить неисправные браузеры по стандарту, обычно из-за IE или EDGE. В этих случаях исправления в Normalize будут применять стили IE или EDGE к остальным браузерам.
Вот пример из реальной жизни : Chrome, Safari и Firefox отображают тегов
, которые находятся внутри
/ /
/
с размером шрифта меньше, чем у независимого тега , и с другим размером поля. Это стили пользовательского агента в Chrome, Safari и Firefox в случае тега
внутри тега
/ /
/
:
:-webkit-any(статья,в стороне,навигация,раздел) h2 {
размер шрифта: 1.5em;
начало блока поля: 0,83 em;
край-блок-конец: 0,83 em;
}
Браузеры Internet Explorer и EDGE составляют меньшинство со стилями, которые они применяют в этом случае, и теоретически стили, определенные в normalize. css
, будут нацелены на IE/EDGE. Однако невозможно настроить таргетинг на IE/EDGE, поскольку в этих браузерах нет селектора «любой» . Поэтому, чтобы нормализовать для сброса стилей , чтобы они действовали одинаково для всех браузеров, Normalize CSS определяет стили IE/EDGE, которые должны применяться всеми браузерами.
Пример:
/*
Исправьте размер шрифта и поля для элементов h2 в контекстах section и article в Chrome, Firefox и Safari.
*/
h2 { размер шрифта: 2em; margin: 0.67em 0;}
Normalize.css — это постоянно обновляемый проект с открытым исходным кодом на Github, созданный Николасом Галлахером.
necolas/normalize.css
Современная альтернатива сбросу CSS. Внесите свой вклад в разработку necolas/normalize.css, создав учетную запись на GitHub.
github.com
Reset CSS
Reset CSS использует другой подход и говорит, что нам вообще не нужны стили браузеров по умолчанию. Какие стили нам нужны, мы определим в проекте в соответствии с нашими потребностями. Таким образом, «Сброс CSS» сбрасывает все стили , которые поставляются с пользовательским агентом браузера.
Этот подход хорошо работает в приведенном выше примере со стилями по умолчанию от до
:0017 размер шрифта и размер поля браузера по умолчанию
.
В Интернете существует несколько типов сброса CSS. Вот пример того, как выглядит небольшая часть сброса CSS (из CSS Reset Эрика Мейера):
html, body, div, span, applet, object, iframe, h2, h3, h4, h5, h5, h6, p, цитата, pre, a, abbr, аббревиатура, адрес, большой, цитировать, код, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, холст, детали, вставка, рисунок, figcaption, нижний колонтитул, заголовок, hgroup, меню, навигация, вывод, ruby, раздел, сводка, время, отметка, аудио, видео {
поле: 0;
заполнение: 0;
граница: 0;
размер шрифта: 100%; шрифт
: наследовать;
вертикальное выравнивание: базовая линия;
}
В способе сброса CSS мы определяем, что все теги HTML не имеют отступов, полей, рамок, имеют одинаковый размер шрифта и одинаковое выравнивание.
Проблема с CSS Resets в том, что они уродливы: у них большая цепочка селекторов, и они делают много ненужных переопределений. И что еще хуже, они нечитаемы при отладке.
Сброс CSS — цепочка уродливых селекторов CSS Но все же есть стили, которые мы предпочитаем сбрасывать, такие как в
,
,
и т. д.
Я предлагаю вам использовать Нормализация CSS с помощью немного сброса CSS. Используйте их оба, но с умом!
В своих проектах я использую преимущества каждого из методов. С одной стороны, мне нужны преимущества Normalize CSS , а в других случаях мне нужны преимущества .CSS Reset без этих больших цепочек уродливых селекторов CSS.
Создание собственного сброса CSS
За свой 13-летний опыт я понял, что есть HTML-теги, которые всегда нужно сбрасывать. Например, цвет ссылок, стили кнопок по умолчанию, списки по умолчанию и т. д.
Помимо normalize.css
, который я использую, я добавляю reset.local.css
со всеми стилями, которые я хочу переопределить. В отличие от обычного сброса CSS , я ориентируюсь только на определенные стили HTML-тегов, а не делаю большой список тегов.
Вот пример как сделать свой собственный сброс CSS :
Мой сброс CSS — reset.local.css
/****** СБРОС Элада Шехтера ****** */
/*** размер окна border-box для всех элементов ***/
*,
*::before,
*::after{ box-sizing:border-box; } a {украшение текста:нет; цвет:наследовать; курсор: указатель;}
кнопка {фоновый цвет: прозрачный; цвет:наследовать; ширина границы: 0; заполнение: 0; курсор:указатель;}
рисунок {поле:0;}
ввод::-moz-focus-inner {граница:0; заполнение: 0; поле:0;}
ul, ol, dd {margin:0; заполнение: 0; стиль списка: нет;}
h2, h3, h4, h5, h5, h6 {поле: 0; размер шрифта: наследовать; font-weight:inherit;}
p {margin:0;}
cite {font-style:normal;}
fieldset {border-width:0; заполнение: 0; margin:0;}
Таким образом, сброс CSS становится намного менее агрессивным и намного более читабельным с любой точки зрения.
Базовая типографика
Помимо normalize.css
и local.reset.css
, которые есть во всех моих проектах, я добавляю еще один файл для базовой типографики. Этот файл не является частью ни normalize CSS , ни CSS reset , это базовая таблица стилей с типографикой веб-сайта, содержащая такие свойства, как direction
, font-family
, font-size
, line- высота
, цвет шрифта.
типография.css
html{
размер шрифта: 1px;/*для использования модулей REM*/
}body{
семейство шрифтов: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu ', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', без засечек;
размер шрифта: 16rem;
вес шрифта: 400;
высота строки: 1,3;
цвет: #222;
}
Собираем все вместе
Используя преимущества препроцессора SASS, у меня есть файл _reset. scss
, который включает все эти части:
- Normalize.css — последняя версия CSS Normalize с GitHub.
- Мой собственный Сброс CSS
- A Basic Typography Файл
Пример (файл _resets.scss):
@import "resets/normalize.scss";
@import "resets/reset.local.scss";
@import "resets/typography.scss";
В этом посте я показал вам свою архитектуру CSS для нормализации и сброса стилей, основанную на многих вещах, которые я изучил за эти годы.
Этот пост является первым в серии статей об архитектуре CSS, которые я буду писать и делиться с вами каждые несколько недель.
Если эта тема CSS вас интересует, вы можете подписаться на меня в Twitter или Medium .
- Нормализовать CSS или сбросить CSS?!
- Архитектура CSS — структура папок и файлов
- Архитектура CSS для нескольких веб-сайтов
- Именование вещей в CSS
Надеюсь, вам понравилась эта статья и вы узнали из моего опыта.
Если вам понравился этот пост, буду благодарен за аплодисменты и репост 🙂
Другие мои посты о CSS:
Новые логические свойства CSS!
CSS Position Sticky — как это работает на самом деле!
Кто я?
Я Элад Шехтер, веб-разработчик, специализирующийся на дизайне и архитектуре CSS и HTML. Я работаю в Investing.com.
Вы можете связаться со мной или подписаться на меня:
My Twitter
Facebook
LinkedIn
Вы можете найти меня в моих группах Facebook:
Мастера CSS
Мастера CSS Израиль
Что такое файл нормализованного CSS и как его использовать?
- Блог Hubspot
- HubSpot.com
Загрузка
О нет! Мы не смогли найти ничего подобного.
Попробуйте еще раз поискать, и мы постараемся.
Работа с CSS может быть сложной; он может очень быстро стать громоздким без исходной базовой линии. К счастью, есть способы начать использовать CSS, чтобы сделать ваши страницы чистыми и управляемыми. Одним из примеров является использование файла, создающего набор базовых стилей, например файла Normalize CSS.
Этот пост расскажет вам о файле Normalize CSS и его использовании. Кроме того, вы узнаете, почему одни разработчики предпочитают его другим. Вы также узнаете, как понять, как это работает, и как это реализовать. Наконец, в посте будут рассмотрены некоторые примеры кода из файла Normalize.
Начнем.
Что делает нормализовать CSS?
Все браузеры назначают значения по умолчанию определенным свойствам CSS, и каждый браузер устанавливает разные. Чтобы смягчить это несоответствие, можно использовать файл Normalize CSS для создания базовой линии для браузеров по всем направлениям. Каждый браузер имеет разные правила стиля по умолчанию; они нацелены на другие элементы и применяют разные значения. В результате создание стилей без базовой линии означает, что ваши страницы, скорее всего, будут отображаться в разных браузерах непоследовательно.
Для многих разработчиков это привело к осознанию необходимости отладки CSS. Улавливание этого на поздних этапах разработки может привести к тому, что код станет неуправляемым и сложным для устранения неполадок. Normalize стремится решить эту проблему, ориентируясь на правила по умолчанию из разных браузеров. Файл Normalize устанавливает значения по умолчанию для этих правил, чтобы создать базовый уровень.
Если сначала включить его в объявления файла CSS, ваш CSS будет начинаться с одинаковых правил для каждого браузера. Файл Normalize — это только один файл, используемый для выполнения этой функции, а другой похожий файл называется CSS Reset. Хотя они оба служат одной и той же цели, они делают это по-разному. Далее рассмотрим различия между ними.
На следующем изображении показано, что браузер по умолчанию использует для первой веб-страницы.
На следующем изображении показана та же страница, но с файлом нормализации в верхней части вашего CSS.
Сброс CSS и нормализация
Файлы нормализации и сброса используются для создания базовых стилей для согласованности между браузерами при создании веб-страниц. Основное отличие заключается в том, что целью Normalize является выявление различных стилей в других браузерах, начиная со стилей, которые разработчики не могут изменить. Если стиль нельзя исправить или обновить, этот стиль будет применен к странице во всех браузерах. Посмотрите видео ниже, чтобы узнать больше о разнице между двумя файлами.
В случае файла Reset CSS стили браузера по умолчанию обрабатываются иначе. Reset CSS направлен на устранение несоответствий путем удаления всех стилей по умолчанию. Этот процесс изменяет правила со значениями на ноль или минимальное значение. Поэтому, хотя он удаляет значения по умолчанию, он устанавливает значения на абсолютный минимум.
Пример нормализовать CSS
Теперь, когда у вас есть общее представление о том, как работает файл Normalize, давайте рассмотрим пример кода из него. Следующий код обрабатывает нормализацию высоты строки в браузерах для обеспечения согласованности.
/**
* 1. Исправьте высоту строки во всех браузерах.
* 2. Запретить регулировку размера шрифта после изменения ориентации в iOS.
*/
html {
line-height: 1,15; /* 1 */
-webkit-text-size-adjust: 100%; /* 2 */
}
Приведенный выше код также обрабатывает изменения размера шрифта iOS при изменении ориентации телефона. Этот код является небольшим примером различных правил стиля, предназначенных для файла Normalize CSS. Напротив, файл Reset просто меняет значения на минимум.
Начало работы с использованием файла нормализации CSS
Существует множество версий файла нормализации, созданных разработчиками, которые предпочитают разные значения по умолчанию. Лучший способ понять, как использовать файл Normalize, — загрузить одну из его многочисленных версий и погрузиться в код. Изучая код и изучая, как настроен каждый файл Normalize, вы сможете лучше понять, как каждый из них может помочь в вашей веб-разработке.
Изучение опыта и идей разработчиков, которые их использовали, также может помочь лучше понять ваш уровень комфорта с различными типами файлов Normalize.
Темы: Начальная загрузка и CSS
Не забудьте поделиться этим постом!
Связанные статьи
Пошаговое руководство по элементу таблицы Bootstrap CSS [+ 7 примеров]
08 марта 2023 г.
Как создать, отредактировать и создать панель навигации в Bootstrap
08 марта 2023 г.
Как создать идеальную сетку CSS на вашем веб-сайте [примеры макетов]
28 февраля 2023 г.
Как создавать и стилизовать границы в CSS
23 февраля 2023 г.
Как вложить селекторы CSS для более чистого кода
20 февраля 2023 г.
hubspot.com/website/bootstrap-image-classes»>CSS-переменные: что это такое и как они работают
16 февраля 2023 г.
02 февраля 2023 г.
Кнопки Bootstrap: объяснение классов и стилей
02 февраля 2023 г.
Классы изображений Bootstrap: что это такое и как они работают?
20 февраля 2023 г.
Что, почему и как сделать фавикон для вашего сайта
08 февраля 2023 г.