Нормальный сброс — Блог HTML Academy
Расскажите про ресеты и нормалайзы, что лучше использовать? — просят наши зрители Андрей, Сергей и Юрий. Знаете, это как отвёртка и молоток — что лучше? Все хороши. Давайте копнём глубже — к самой сути проблемы, которую они по-разному решают.
HTML хорош тем, что вы набросали тегов и всё — они сразу выглядят. И во всех браузерах всё примерно одинаково: чёрным Таймсом по белому body, да с синими ссылками. Эх, красота! Но в том и дело, что почти: точные стили для всех элементов хоть и рекомендованы сегодня в HTML5, но в каждом браузере свои.
В HTML 4 было всего 78 строк стилей по умолчанию, вроде head { display: none } или text-decoration: underline для ссылок. В WebKit, Chrome и Firefox сегодня около 1000 строк стилей, в которые смело можно снаряжать археологическую экспедицию. Но мы не будем, у нас и так дел хватает.
/* html.css */
HTML 4: 78;
Chrome: 1123;
Firefox: 907;
Разработчикам долго не мешало это примерное соответствие стилей, к тому же браузеры старались их изредка улучшать и унифицировать.
Звёздочка выбирает все элементы, а дальше начинается: margin: 0, padding: 0, border: 0, Джофри, Серсея, Фрей и все остальные свойства, которые мешают вам жить. Способ довольно варварский: не только потому, что выбирает элементы, которым ничего не нужно сбрасывать, но и потому, что некоторые стили лучше не трогать, иначе всё развалится — например, элементы форм.
* {
margin: 0;
padding: 0;
border: 0;
joffrey: kill;
cersei: kill;
frey: kill;
}
/* ORLY? */
div , span {
margin: 0;
padding: 0;
border: 0;
}
Следующей попыткой сделать из HTML стерильный набор кубиков, стал CSS Reset из Yahoo UI, который сбрасывал стили только там, где это было нужно. Ещё большую популярность получил Reset CSS Эрика Мейера, сделанный по мотивам Yahoo UI. Эти ресеты не только сбрасывали отступы, но и приводили к единому значению размер и семейство шрифта, выравнивание для текста и другие свойства.
Между ресетами Yahoo и Мейера были различия: Эрик, например, разумно не трогал элементы форм. Было много других решений, но все они решали единую задачу — сделать из сложных стилей по умолчанию простой констуктор, чтобы вы сразу могли писать свои стили, не сбрасывая встроенные.
Эти ресеты никогда не были чистыми сбросами браузерных стилей: нет-нет, да назначались цвета, выравнивание, начиналась борьба за кроссбраузерность. В итоге все проекты несли печать предпочтений конкретных авторов. Самым нейтральным из ресетов до сих пор остаётся Reset CSS Мейера, но даже он убрал вредный :focus { outline: 0 } — и правильно сделал.
/* YUI Reset */
html {
color: #000;
background: #FFF;
}
select {
*font-size:100%;
}
/* Не забыть
вернуть обводку */
:focus {
outline: 0;
}
/* Забыл */
Многих ресеты раздражали: для внутренних блоков с содержимым приходилось восстанавливать стили не только для списков, но и базовых текстовых элементов вроде strong, em, code и других. У Yahoo даже был CSS Base, который назначал правильные базовые стили. После ресета, который отменял неправильные. Почему бы и нет.
Николас Галлахер и Джонатан Нил зашли с другой стороны: вместо того, чтобы сбрасывать примерно одинаковые браузерные умолчания, они подробно изучили все различия и проблемы — и сделали Normalize.css. Он делает везде одинаково и решает много проблем по пути.
С Normalize вам снова приходится убирать отступы со списков. Многих это провоцирует использовать элементы попроще, но будьте внимательны — это чревато диватозом. Зато Normalize берёт на себя сложности оформления элементов форм, поведение мобильных браузеров и много мелких багов.
Видите? Совсем другую задачу решает проект. Я на днях видел сайт, на котором после Normalize.css подключают Reset CSS, чтобы оставить нормализацию, но при этом получить нейтральный конструктор. Это конечно глупости, которые приводят к распуханию глобальных стилей. Уж лучше собрать свой гибрид — кода там всего ничего.
@import "normalize.css";
@import "reset.css";
@import "yui-reset.css";
@import "yui-base.css";
@import "h5bp.css";
Благо Normalize.css дотошно документирован: у каждого свойства стоит объяснение зачем оно нужно. В сомнительных местах, которые не нормализуют, а назначают более подходящие (по мнению авторов) умолчания — стоят пометки. Это помогает не просто слепо копировать его из проекта в проект, а использовать только нужные части.
Представьте, что вы в рамках проекта делаете модуль, который потом будет использоваться на другом сайте. У вас есть Normalize, а у них? Или наоборот: на ваш проект приходит сторонний модуль — а там нет Normalize и всё подогнано под браузерные баги, ну или особенности. Или даже есть Normalize, но другой версии. Так себе модульность получается.
А вот если бы вы сразу пошли в Normalize и скопировали нужные кусочки для каждой сложной ситуации — модуль бы вышел хороший, независимый. Normalize — это ещё и самая полная энциклопедия кроссбраузерных сложностей Да, это провоцирует лёгкое дублирование, но дарит гибкость — притом, что сжатие повторяющихся фрагментов — это хлеб с маслом для gzip.
Reset CSS не обновлялся с 2011 года, хотя до сих пор отлично работает. Но его эпоха уже прошла — на смену спешит новое свойство all со значением unset. Оно сбрасывает браузерные умолчания, где это нужно — почитайте на MDN. Normalize.css сейчас в моде и хорошо решает проблемы кроссбраузерности, но попробуйте использовать его как справочник. Ну так Reset или Normalize? Танцуйте от задачи.
/* Welcome to the */
.future {
all: initial;
all: inherit;
all: unset;
}
counter-reset | htmlbook.ru
Internet Explorer | Chrome | Opera | Safari | Firefox | Android | iOS |
8.0+ | 2.0+ | 9.2+ | 3.0+ | 1.0+ | 2.1+ | 2.0+ |
Краткая информация
Версии CSS
Описание
Устанавливает идентификатор, в котором будет храниться счётчик отображений определенного элемента, а также начальное значение счётчика. Такой счётчик может выводиться с помощью свойства content и псевдоэлементов :after и :before.
Синтаксис
counter-reset: none | inherit | идентификатор | целое число
Значения
- none
- Запрещает инициацию счётчика для текущего селектора.
- inherit
- Наследует значение родителя.
- идентификатор
Задаёт одну или несколько переменных, в которых будет храниться значение счётчика. Значения разделяются между собой пробелом.- целое число
- Начальное значение каждого идентификатора. По умолчанию равно 0.
Пример
HTML5CSS2.1IECrOpSaFx
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>counter-reset</title> <style> li { list-style-type: none; } /* Убираем исходную нумерацию у списка */ ol { counter-reset: list1; } /* Инициируем счетчик */ ol li:before { counter-increment: list1; /* Увеличиваем значение счетчика */ content: counter(list1) ".
"; /* Выводим число */ } ol ol { counter-reset: list2; } /* Инициируем счетчик вложенного списка */ ol ol li:before { counter-increment: list2; /* Увеличиваем значение счетчика вложенного списка */ content: counter(list1) "." counter(list2) ". "; /* Выводим число */ } </style> </head> <body> <ol> <li>Пункт <ol> <li>Подпункт</li> <li>Подпункт</li> <li>Подпункт</li> </ol> </li> <li>Пункт <ol> <li>Подпункт</li> <li>Подпункт</li> </ol> </li> </ol> </body> </html>
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства counter-reset
Примечание
Для элементов, у которых установлено display: none, значение счётчика не меняется.
В чем разница между 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 выигрывает по всем параметрам. Стоит также вспомнить про извращенцев, которые используют что-то в этом стиле:
* {margin: 0; padding: 0;}
Как вы понимаете так делать не стоит.
В заключении хотелось бы сказать, что я еще не встречал человека, который бы утверждал что reset. css вообще есть смысл применять. Мне кажется, его применяли только потому что не знали про «нормализацию стилей» 🙂
Есть мнение, что стоит подключать стили в head «инлайново», хотя бы для «первого экрана» — то есть то, что сразу покажет человеку когда он откроет ваш сайт, и это действительно очень хорошая практика. Данную рекомендацию вы можете встретить в google page speed.
Возможно вам пригодится — inline normalize css and bootstrap grid 🙂 Пишем это в head, затем также само пишем свои стили для первого экрана, и вы выполните одну из рекомендаций + ваш сайт не будет шататься при загрузке, т.к. основные самые важные стили, а именно сетка, нормалайз и «первый экран» уже прогрузились.
Также вот вам версия без комментариев:
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;} body{margin:0;} article, aside, details, figcaption, figure, footer, header, main, menu, nav, section, summary{display:block;} audio, canvas, progress, video{display:inline-block;vertical-align:baseline;} audio:not([controls]){display:none;height:0;} [hidden], template{display:none;} a{background-color:transparent;} a:active, a:hover{outline:0;} abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted;} b, strong{font-weight:inherit;} b, strong{font-weight:bolder;} dfn{font-style:italic;} h2{font-size:2em;margin:0. 67em 0;} mark{background-color:#ff0;color:#000;} small{font-size:80%;} sub, sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;} sup{top:-0.5em;} sub{bottom:-0.25em;} img{border:0;} svg:not(:root){overflow:hidden;} figure{margin:1em 40px;} hr{box-sizing:content-box;height:0;overflow:visible;} pre{overflow:auto;} code, kbd, pre, samp{font-family:monospace, monospace;font-size:1em;} button, input, optgroup, select, textarea{font:inherit;margin:0;} button{overflow:visible;} button, select{text-transform:none;} button, html input[type="button"], input[type="reset"], input[type="submit"]{-webkit-appearance:button;cursor:pointer;} button[disabled], html input[disabled]{cursor:default;} button::-moz-focus-inner, input::-moz-focus-inner{border:0;padding:0;} button:-moz-focusring, input:-moz-focusring{outline:1px dotted ButtonText;} input{line-height:normal;} input[type="checkbox"], input[type="radio"]{box-sizing:border-box;padding:0;} input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button{height:auto;} input[type="search"]{-webkit-appearance:textfield;} input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;} fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0. 35em 0.625em 0.75em;} legend{border:0;padding:0;} textarea{overflow:auto;} optgroup{font-weight:bold;}
Ознакомится с оригиналом normalize.css вы можете на гитхабе.
Reset.css — сброс стилей css.
Применение файла reset.css считается очень полезным способом привести код css файла к более менее кроссбраузерному виду и обратить сверстанный макет в один общий вид в разных браузерах, старых и современных, популярных и даже в мобильных браузерах.
Занимаясь версткой, не раз приходилось экспериментировать с выбором единого набора стилей, везде есть свои плюсы и минусы. Как говорится, свой ресет.цсс самый лучший и верный.
Итак, хочу представить вам свой вариант файла reset.css, написан он Эриком Мейером(Eric Meyer). По-моему мнению, здесь оптимальный набор тегов и стилей к ним, ничего лишнего. Он же используется у нас на сайте в качестве reset.css. Выбор ваш, экспериментируйте.
/**
* Eric Meyer's Reset CSS v2. 0 (http://meyerweb.com/eric/tools/css/reset/)
* http://cssreset.com
*/
html, body, div, span, applet, object, iframe,
h2, h3, h4, h5, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
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,
caption, tfoot, thead,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display button-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display button: block;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
reset | HTML и CSS с примерами кода
Свойство counter-reset
устанавливает переменную, в которой будет храниться счётчик отображений определенного элемента, а также начальное значение счётчика.
Такой счётчик может выводиться с помощью свойства content
и псевдоэлементов ::after
и ::before
.
Синтаксис
/* Set "my-counter" to 0 */
counter-reset: my-counter;
/* Set "my-counter" to -1 */
counter-reset: my-counter -1;
/* Set "counter1" to 1, and "counter2" to 4 */
counter-reset: counter1 1 counter2 4;
/* Cancel any reset that could have been set in less specific rules */
counter-reset: none;
/* Global values */
counter-reset: inherit;
counter-reset: initial;
counter-reset: unset;
Значения
none
- Запрещает инициацию счётчика для текущего селектора.
inherit
- Наследует значение родителя.
<переменная>
- Задаёт одну или несколько переменных, в которых будет храниться значение счётчика. Значения разделяются между собой пробелом.
<число>
- Начальное значение каждого идентификатора. По умолчанию равно 0.
Примечания
Для элементов, у которых установлено display: none
, значение счётчика не меняется.
Значение по-умолчанию:
Применяется ко всем элементам
Спецификации
Поддержка браузерами
Can I Use css-counters? Data on support for the css-counters feature across the major browsers from caniuse.com.
Описание и примеры
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>counter-reset</title>
<style>
li {
list-style-type: none;
} /* Убираем исходную нумерацию у списка */
ol {
counter-reset: list1;
} /* Инициируем счетчик */
ol li:before {
counter-increment: list1; /* Увеличиваем значение счетчика */
content: counter(list1) '. '; /* Выводим число */
}
ol ol {
counter-reset: list2;
} /* Инициируем счетчик вложенного списка */
ol ol li:before {
counter-increment: list2; /* Увеличиваем значение счетчика вложенного списка */
content: counter(list1) '. ' counter(list2) '. '; /* Выводим число */
}
</style>
</head>
<body>
<ol>
<li>
Пункт
<ol>
<li>Подпункт</li>
<li>Подпункт</li>
<li>Подпункт</li>
</ol>
</li>
<li>
Пункт
<ol>
<li>Подпункт</li>
<li>Подпункт</li>
</ol>
</li>
</ol>
</body>
</html>
Кроссбраузерность HTML страниц: зачем нужны reset.css и normalize.css
Чтобы страница одинаково хорошо отображалась в разных браузерах, необходимо работать над ее кроссбраузерностью. В этом нам помогает тестирование страницы и отладка html/css разметки. Но есть инструменты, которые помогут сократить наведение порядка в стилях, и добиться того чтобы базовые стили были одинаковы в разных браузерах. Что это за инструменты, зачем и как их использовать — рассмотрим далее.
Браузеры и базовые стили
Дело в том что каждый браузер имеет по умолчанию некий набор базовых стилей которые он применяет к странице по умолчанию. И если мы создадим страницу на «голом» html без оформления и стилей, браузер все равно отобразит тег <h2></h2> большим размером и жирным начертанием, <h3></h3> чуть меньшим размером и так далее. Браузер выделит текст в теге <i> курсивом, <u> сделает подчеркнутым, а <b> — жирным.
Произойдет так потому что в браузере уже есть свои стили для элементов, которые по умолчанию применяются к открываемым в нем страницам. И дело в том что в разных браузерах эти правила немного отличаются, от браузера к браузеру. Лет 10 назад эти отличия были прямо кардинальными, и очень бросались в глаза. Сейчас они минимальны, но все же есть.
Чтобы убрать эти различия, и сделать по умолчанию отображение страницы во всех браузерах одинаковым — используют специальный . css файл: reset.css или normalize.css
reset.css — что он делает и как его использовать
Первым появился файл reset.css. Этот css файл содержит в себе перечисление всех возможных html тегов, и сбрасывает их значение на ноль. То ест убирает все возможные отступы, делает шрифт одинаковым во всех тегах, сбрасывая все стили текста. Так что все заголовки и абзацы отображаются простым текстом, одним размеров и без отступов. В результате получаем сброс стилей по умолчанию во всех браузерах.
Работает это так, сначала на странице подключаем файл reset.css, и уже после него свой файл со стилями. В итоге мы сначала сбрасываем все стили, и уже потом в style.css задаем оформление html тегам. Таким образом мы достигаем того что все браузеры сбросят свои стили по умолчанию, и вся разметка будет основываться на тех стилях которые мы зададим в style.css.
Скачать reset.css
Скачать reset.css можно на сайте cssreset.com
Или можете скачать версию Eric Meyer’s “Reset CSS” 2. 0 по кнопке ниже, с моего блога:
Eric Meyer’s “Reset CSS” 2.0 (2018 downloads)
normalize.css — как он работает и в чем разница
После того как на странице подключен reset.css все стили приходится прописывать заново. И каждый раз это занятие утомляет. Поэтому на смену resetпришел другой инструмент — normalize. Normailze — как понятно из названия, не сбрасывает все стили, а нормализует, приводит их к единому виду во всех браузерах. После его применения базовые стили отображения заголовков, размер шрифтов, отступы… — унифицируются и отображаются во всех браузерах одинаково. Используя его — можно сэкономить определенное количество времени, которое в случает с reset было бы потрачено на прописывание сброшенных стилей.
Если вы еще не использовали normalize.css то рекомендую попробовать его в своем следующем, прокте, и кто знает, возможно вы уже не сможете от него отказаться 😉
Скачать normalize.css
Скачать normalize.css можно с сайта necolas.github.io/normalize. css
Или загрузить с моего блога:
Normalize.css (3872 downloads)
Что лучше reset или normalize?
Однозначного ответа нет.
Первый — сбрасывает все стили, второй — приводит к единому знаменателю. Опытные верстальщики, которые используют reset.css обычно имеют свои наборы стилей которые сразу же подключают после reset для оформления контента. И им не приходится каждый раз в новой верстке заново определять стили для базовых элементов. Так поступаю и я. Мне удобно и я знаю какие стили я задаю по умолчанию, и как они работают.
normalize удобен если вы изучите его структуру, можете видоизменить его под себя — настроив базовый внешний вид тегов. И работа с ним также будет удобной на потоке — когда верстать приходится много и часто.
Каждый инструмент хорош, главное правильно его использовать 😉
CSS counter-reset
Пример
Создайте счетчик («My-sec-счетчик») и увеличьте его по одному для каждого вхождения <h3> селектора:
body {/* Set «my-sec-counter» to 0 */
counter-reset: my-sec-counter;
}
h3::before {
/* Increment «my-sec-counter» by 1 */
counter-increment:
my-sec-counter;
content: «Section »
counter(my-sec-counter) «. «;
}
Подробнее примеры ниже.
Определение и использование
Свойство counter-reset
создает или сбрасывает один или несколько счетчиков CSS.
counter-reset
свойство обычно используется вместе с свойством Counter-инкремент и свойством Content.
Значение по умолчанию: | none |
---|---|
Inherited: | no |
Animatable: | no. Читайте о animatable |
Version: | CSS2 |
Синтаксис JavaScript: | object.style.counterReset=»section» |
Поддержка браузера
Номера в таблице указывают первую версию браузера, которая полностью поддерживает свойство.
Свойство | |||||
---|---|---|---|---|---|
counter-reset | 4.0 | 8.0 | 2.0 | 3.1 | 9. 6 |
Синтаксис CSS
counter-reset: none|name number|initial|inherit;
Значения свойств
Значение | Описание |
---|---|
none | Значение по умолчанию. Счетчики не будут сброшены |
id number | ID определяет, какой счетчик необходимо сбросить. Number задает значение счетчика сбрасывается для каждого вхождения селектора. Значение по умолчанию Number равно 0 |
initial | Присваивает этому свойству значение по умолчанию. (Читайте о initial) |
inherit | Наследует это свойство из родительского элемента. (Читайте о inherit) |
Другие примеры
Пример
Создайте счетчик («My-sec-счетчик») и уменьшите его по одному для каждого вхождения <h3> селектора:
body {/* Set «my-sec-counter» to 0 */
counter-reset: my-sec-counter;
}
h3::before {
/* Decrement «my-sec-counter» by 1 */
counter-increment:
my-sec-counter -1;
content: «Section »
counter(my-sec-counter) «. «;
}
Пример
Нумерация секций и подразделов с «раздел 1:», «1,1», «1,2» и т.д.:
body {/* Set «section» to 0 */
counter-reset: section;
}
h2
{
/* Set «subsection» to 0 */
counter-reset: subsection;
}
h2::before
{
/* Increment «section» by 1 */
counter-increment: section;
content: «Section » counter(section) «: «;
}
h3::before {
/* Increment «subsection» by 1 */
counter-increment: subsection;
content: counter(section) «.» counter(subsection) » «;
}
Пример
Создайте счетчик и увеличьте его на один (с использованием римских цифр) для каждого вхождения <h3> селектора:
body {/* Set «my-sec-counter» to 0 */
counter-reset: my-sec-counter;
}
h3::before {
/* Increment «my-sec-counter» by 1 */
counter-increment:
my-sec-counter;
content: counter(my-sec-counter,
upper-roman) «. «;
}
Похожие страницы
CSS Справка: ::before псевдо элемент
CSS Справка: ::after псевдо элемент
CSS Справка: content Свойство
CSS Справка: counter-increment Свойство
HTML DOM Справочник: counterReset Свойство
meyerweb.
comСпасибо, что заглянули в meyerweb, интернет-традицию, непрерывно работающую с конца 1999 года. Это в основном личный и профессиональный веб-сайт Эрика А. Мейера, то есть я пишу эту страницу. meyerweb начинался как статический HTML-сайт с ручной кодировкой, затем превратился в ручной статический HTML-сайт, который использовал XML и XSLT в фоновом режиме. а затем перенес часть блога в WordPress (тогда, когда WordPress был просто хобби-проектом), остальная часть по-прежнему создавала статический HTML-код вручную.Мы по-прежнему используем включения на стороне сервера вокруг этих частей!
Помимо ряда книг и статей, я создал ряд ресурсов CSS и других инструментов. Некоторые из самых популярных:
- Color Blender — позволяет вам указать два значения цвета в шестнадцатеричном, коротком шестнадцатеричном, процентном или десятичном формате RGB, а затем получить до десяти цветовых оттенков между двумя, которые вы указали.
- URL Encoder / Decoder — полезно в ситуациях, когда необходимо декодировать очень длинный закодированный URL.Или нужно закодировать URL любой длины.
- CSS Reset — каким-то образом этот небольшой эксперимент по сглаживанию различий в браузерах по умолчанию стал частью значительной части Интернета. Как минимум четверть.
- S5 — простая система слайд-шоу на основе браузера, которую я написал еще в середине 2000-х, и тем не менее до сих пор остается на удивление популярной в некоторых кругах.
Возможно, вы попали сюда, потому что натолкнулись на имя моей дочери Ребекки Элисон Мейер или исследуете историю цвета CSS, названного в ее память.Если вы так склонны, можете прочитать мою хронику о прошлом году жизни Ребекки и о том, как она огорчала после ее смерти. Если вы не так склонны, я, честно говоря, ни в малейшей степени вас не виню. Я тоже не уверен, что захочу это читать.
Наконец, я благодарен Джеймсу, который в начале мая 2018 подтолкнул меня обновить эту страницу после того, как я оставил ее полгода бездействовать.
Эрик А. Мейер
A Modern CSS Reset — Post
Я думаю об очень скучных материалах CSS и наслаждаюсь ими — возможно, гораздо больше, чем мне следовало бы делать, если честно.Одна вещь, о которой я, вероятно, слишком много думал за эти годы, — это сброс CSS.
В эту современную эпоху веб-разработки нам действительно не нужен жесткий сброс или даже сброс, потому что проблемы совместимости с браузером CSS гораздо менее вероятны, чем в прежнем IE 6 дней. В ту эпоху появились такие сбросы, как normalize.css, которые спасли нас всех кучей ада. Те дни прошли, и мы можем доверять нашим браузерам, чтобы они вели себя лучше, поэтому я думаю, что такие сбросы, вероятно, в основном излишни.
Сброс разумных настроек по умолчанию постоянная ссылка
Мне все еще нравится сбрасывать вещи, поэтому я медленно и непрерывно возился с перезагрузкой сам на протяжении многих лет в навязчивой манере игры в гольф. Я объясню, что там и почему, но прежде чем я это сделаю, вот оно целиком:
/ * Правила калибровки ящиков * /
*,
*::перед,
*::после {
размер коробки: рамка-рамка;
}
/ * Удаляем маржу по умолчанию * /
тело,
h2,
h3,
h4,
h5,
п,
фигура,
цитата
дл,
dd {
маржа: 0;
}
/ * Удаляем стили списка для элементов ul, ol с ролью списка, что предполагает удаление стилей по умолчанию * /
ul [role = 'list'],
ol [role = 'list'] {
стиль списка: нет;
}
/ * Установить основные корневые настройки по умолчанию * /
html: focus-within {
поведение прокрутки: плавное;
}
/ * Установить значения по умолчанию для основного тела * /
тело {
мин-высота: 100vh;
текст-рендеринг: optimizeSpeed;
высота строки: 1.5;
}
/ * Элементы, не имеющие класса, получают стили по умолчанию * /
a: not ([класс]) {
текст-украшение-пропустить-чернила: авто;
}
/ * Упростить работу с изображениями * /
img,
картина {
максимальная ширина: 100%;
дисплей: блок;
}
/ * Наследовать шрифты для входов и кнопок * /
Вход,
кнопка,
текстовое поле,
Выбрать {
шрифт: наследовать;
}
/ * Удаляем все анимации, переходы и плавную прокрутку для людей, которые предпочитают их не видеть * /
@media (предпочитает-уменьшенное-движение: уменьшить) {
html: focus-within {
поведение прокрутки: авто;
}
*,
*::перед,
*::после {
продолжительность анимации: 0.01 мс! Важно;
количество итераций анимации: 1! важно;
продолжительность перехода: 0,01 мс! важно;
поведение прокрутки: авто! важно;
}
}
Разрушение
Начнем с калибровки коробки. Я просто сбрасываю все элементы и псевдоэлементы, чтобы использовать размер блока : border-box
.
*,
*::перед,
*::после {
размер коробки: рамка-рамка;
}
Некоторые люди думают, что псевдоэлементы должны унаследовать размер коробки
, но я думаю, что это глупо.Если вы хотите использовать другое значение размера коробки, установите его явно — по крайней мере, я так и делаю. Я писал об изменении размера коробки более подробно на CSS From Scratch.
/ * Удалить поле по умолчанию * /
тело,
h2,
h3,
h4,
h5,
п,
Ли,
фигура,
figcaption
цитата
дл,
dd {
маржа: 0;
}
После изменения размера я делаю общий сброс поля
, где он устанавливается стилями браузера.Все это говорит само за себя, поэтому я не буду вдаваться в подробности.
html: focus-within {
поведение прокрутки: плавное;
}
«Сброс» сейчас в основном выполнен, поэтому первое, что я делаю для основных стилей, — это плавная прокрутка. Ранее это было установлено прямо для элемента html
, но недавние обновления привели к тому, что он был обновлен для применения плавной прокрутки только при наличии : focus - внутри
элемент html
.
Мне нравится, что это недавно обновили. Я даже не задумывался, почему поиск на странице может стать настолько проблематичным (вам обязательно стоит прочитать этот пост). Большое спасибо Дэвиду Дарнсу за то, что он проделал большую работу по PR.
кузов {
мин-высота: 100vh;
текст-рендеринг: optimizeSpeed;
высота строки: 1,5;
}
Далее: стили тела. Я делаю это очень просто.Для
полезно заполнять область просмотра, даже когда она пуста, поэтому я делаю это, устанавливая минимальную высоту
на 100vh
.
Я установил только два стиля текста. Я установил line-height
на 1,5
, потому что значение по умолчанию 1,2
недостаточно велико, чтобы иметь доступный, читаемый текст. Я также установил для рендеринга текста
на optimizeSpeed
. Использование optimizeLegibility
делает ваш текст более красивым, но может иметь серьезные проблемы с производительностью, такие как 30-секундная задержка загрузки, поэтому я стараюсь избегать этого сейчас.Хотя иногда я добавляю его в разделы микрокопии.
ul [role = 'list'],
ol [role = 'list'] {
стиль списка: нет;
}
Я сбрасываю только в стиле списка
, где элемент списка имеет атрибут role = ["list"]
. Это помогает решить некоторые проблемы с доступностью, как мастерски объяснил Скотт.
a: not ([class]) {
текст-украшение-пропустить-чернила: авто;
}
Для ссылок без атрибута класса я установил text-decoration-skip-ink: auto
, чтобы подчеркивание отображалось в более удобочитаемой форме.Это можно было бы установить для ссылок глобально, но в прошлом это вызывало у меня один или два конфликта, поэтому я сохраняю его так.
img {
максимальная ширина: 100%;
дисплей: блок;
}
Следующими идут старые добрые жидкие стили изображений. Я установил изображения как блочный элемент, потому что, честно говоря, жизнь слишком коротка для того странного промежутка, который вы получаете внизу, и на самом деле изображения — особенно в моей работе — имеют тенденцию вести себя как блоки.
ввод,
кнопка,
текстовое поле,
Выбрать {
шрифт: наследовать;
}
Еще одна вещь, которую я, наконец, осмелился установить по умолчанию, — это шрифт : наследовать
для входных элементов, что сокращенно делает именно то, что написано на банке. Больше никакого крошечного (в некоторых случаях моно) текста!
@media (предпочитает-уменьшенное-движение: уменьшить) {
*,
*::перед,
*::после {
продолжительность анимации: 0.01 мс! Важно;
количество итераций анимации: 1! важно;
продолжительность перехода: 0,01 мс! важно;
поведение прокрутки: авто! важно;
}
}
Последний и ни в коем случае не менее важный — это единственный запрос @media
, который сбрасывает анимацию, переходы и поведение прокрутки, если пользователь предпочитает уменьшенное движение. Мне нравится это в сбросе со специфичностью выше ! Важных селекторов
, потому что, скорее всего, теперь, если пользователь не хочет движения, он его не получит, независимо от CSS, который следует за этим сбросом.
ℹ️ Обновление : Благодаря @atomiks это было обновлено, поэтому оно не нарушает отслеживание событий JavaScript для animationend
и transitionend
.
Обновлено: 6 ноября 2020 г. с правилами списка.
Вот и все, крошечный сброс, который делает мою жизнь намного проще. Если он вам нравится, вы можете использовать его и сами! Вы можете найти его на GitHub или NPM.
🇯🇵 Если вы предпочитаете читать эту статью на японском языке, зайдите сюда, コ リ ス любезно перевел ее для меня.
🇷🇺 Если вы предпочитаете читать эту статью на русском языке, зайдите сюда, где Стас любезно перевел ее для меня.
🇪🇸 Если вы предпочитаете читать эту статью на испанском языке, зайдите сюда, где superSimple любезно перевел ее для меня.
Перезагрузка, сброс и обоснование | CSS-уловки
Я видел на днях в статье Николаса Черминара (внимательное посещение этой ссылки, похоже, что у них есть некоторые сценарии отслеживания), что в Bootstrap 4 запечен новый сброс CSS, который они называют Reboot:
Reboot, набор изменений CSS для конкретных элементов в одном файле, запускающий Bootstrap, чтобы обеспечить элегантную, последовательную и простую основу для развития.
Если вы новичок в разработке CSS, вся идея сброса CSS заключается в устранении несоответствий стилей в браузерах. Например, только что я поместил
на страницу без каких-либо других стилей. Chrome применяет отступ : 2px 6px 3px;
— Firefox применяет отступ : 0 8px;
. Сброс CSS применит новых padding
к этому элементу, так что все браузеры будут согласованы в том, что они применяют. Таких примеров масса.
Немного истории…
В 2007 году Джефф Старр собрал кучу различных сбросов CSS. Самый старый из датированных — это undohtml.css Тантека Челика (это прямая ссылка на источник). Мы видим, что цель заключалась в том, чтобы убрать стиль по умолчанию.
/ * undohtml.css * /
/ * (CC) 2004 Тантек Челик. Некоторые права защищены. * /
/ * http://creativecommons.org/licenses/by/2.0 * /
/ * Эта таблица стилей находится под лицензией Creative Commons License.* /
/ * Цель: отменить некоторые стили по умолчанию для обычных (X) HTML-браузеров * /
Самый популярный сброс произошел вскоре после этого: сброс Мейера. В нем есть другие вещи, чем у Tantek (он даже был обновлен некоторыми элементами HTML5), но дух тот же: удалить стиль по умолчанию. Вы, вероятно, узнаете этот знаменитый блок кода, который повсюду находит свое отражение в панели стилей DevTools:
HTML, тело, div, диапазон, апплет, объект, iframe,
h2, h3, h4, h5, h5, h6, p, цитата, pre,
а, сокр., аббревиатура, адрес, большой, цитировать, код,
del, dfn, em, img, ins, kbd, q, s, samp,
маленький, удар, сильный, sub, sup, tt, var,
б, ю, я, центр,
dl, dt, dd, ol, ul, li,
набор полей, форма, метка, легенда,
таблица, подпись, tbody, tfoot, thead, tr, th, td,
статья, в сторону, холст, детали, вставка,
рисунок, figcaption, нижний колонтитул, заголовок, hgroup,
меню, навигация, вывод, рубин, раздел, сводка,
time, mark, audio, video {
маржа: 0;
отступ: 0;
граница: 0;
размер шрифта: 100%;
шрифт: наследовать;
вертикальное выравнивание: базовая линия;
}
Начните с такого сброса (вверху таблицы стилей производства), и стили, которые вы пишете после слова, будут иметь прочную основу.
Годы спустя, когда HTML5 стал более реальным, стали популярны такие сбросы, как HTML5 Reset Ричарда Кларка. Это все еще была модифицированная версия перезагрузки Мейера, и в ней сохранился этот дух.
артикул, в сторону, детали, figcaption, рисунок,
нижний колонтитул, заголовок, hgroup, меню, навигация, раздел {
дисплей: блок;
}
На всем протяжении этого процесса было много разработчиков, которые пошли на минимум, просто убрав поля и отступы из всего и оставив все как есть:
* {
отступ: 0;
маржа: 0;
}
Тупая мелочь: логотип CSS-Tricks был вдохновлен универсальным селектором и этой идеей.
Далее идет Normalize.css…
Normalize.css представляет собой первый значительный сдвиг в духе того, что должен делать сброс CSS. Вот что мне показалось таким отличным:
- Это была свежая оценка всего того, что можно было стилизовать по-разному в разных браузерах, и адресовало все из них. Если старые сбросы CSS представляли собой несколько строк кода, то несжатая и задокументированная нормализация — 447.
- Он не удалял стили из элементов, которые уже были согласованы во всех браузерах (по большей части).Например, в Normalize нет ничего для элементов h3-h6, только исправление странной вещи h2. Это означает, что вы не отказываетесь от иерархии заголовков, остается стиль по умолчанию.
- Это больше соответствовало идее изменить его, чем просто включить его. Например, есть раздел только для тега
, и в одной строке задается его семейство шрифтов
Код приятно читать, поскольку он объясняет, что он делает, не вдаваясь в подробности:
/ **
* 1. Удалите нижнюю границу в Chrome 57- и Firefox 39-.
* 2. Добавьте правильное оформление текста в Chrome, Edge, IE, Opera и Safari.
* /
abbr [название] {
нижняя граница: нет; / * 1 * /
оформление текста: подчеркивание; / * 2 * /
оформление текста: подчеркнутый пунктир; / * 2 * /
}
Сегодня нормализация находится на уровне 7.0.0 и уже набрал 30000 звезд на GitHub. Это ужасно популярно.
Итак ... сбросы можно считать самоуверенными?
Мы видели много разных подходов к сбросу CSS, и мы видели фундаментальные сдвиги в подходе, поэтому я думаю, будет справедливо сказать, что сбросы CSS могут занять самоуверенную позицию.
Давайте рассмотрим несколько способов…
- Касается ли сброс всех возможных элементов? Или подмножество элементов? Как он решает, какие элементы трогать, а какие нет?
- Какие свойства изменены? Только те, у которых есть кроссбраузерность? Или какие-то другие критерии, такие как сходство с другими элементами, которые требовали изменений? Можно ли применять свойства к элементам, у которых нет проблем с кроссбраузерностью, во имя согласованности и эффективности?
- Вы пытаетесь сохранить дух таблицы стилей пользовательского агента? Разумные настройки по умолчанию?
- Применяете ли вы какие-либо свойства, которые не вызывают проблем с кроссбраузерностью, которые можно было бы считать полезными для «сброса», например типографские значения по умолчанию или размер окна?
- Включаете ли вы классы «набора инструментов» для общих нужд? Или оставить это другим проектам?
- Вас беспокоит его размер?
- Используете ли вы препроцессор или какой-либо другой инструмент?
Взгляните на Vanilla CSS Un-Reset.Здесь множество мнений, начиная с идеи, что это означает изменение стиля элементов после того, как вы удалите стиль, а затем сбросьте его. Он устанавливает размер основного шрифта в pt
, устанавливает очень специфический стек моноширинных шрифтов, включает в себя селектор ol ol ol ol
, clearfix и вспомогательные классы выравнивания. Никакого суждения нет. Люди создают что-то, чтобы помочь со своими проблемами, и я уверен, что это было полезно для создателя. Но мы можем видеть, что мнения проникают сквозь них.
Теперь посмотрим на MiniReset.css. Очень разные! Он удаляет стили типов, «чтобы использование семантической разметки не влияло на стиль», но оставляет некоторые значения по умолчанию специально, «чтобы кнопки и входы сохраняли макет по умолчанию», добавляет некоторые вещи, которые не имеют перекрестных -браузер, но полезен во всем мире ( размер окна
), и добавляет несколько второстепенных помощников по адаптивному дизайну.
Тут совсем другой набор мнений.
Джонатан Нил создал сброс под названием santize.css, который очень четко отражает его мнения.Поищите в исходном коде слово «самоуверенный», и вы увидите его 19 раз. Все это выборы, которые Джонатан сделал на основе исследований и того, что кажется передовым современным опытом, и, без сомнения, приправлен его собственными потребностями и желаниями относительно того, что должно быть в перезагрузке.
/ *
* Убрать тень от текста на выделенном тексте (упрямый).
* 1. Восстановите отмененную окраску, определив тень текста (упрямая).
* /
:: - moz-selection {
цвет фона: # b3d4fc; / * 1 * /
цвет: # 000000; / * 1 * /
тень текста: нет;
}
:: selection {
цвет фона: # b3d4fc; / * 1 * /
цвет: # 000000; / * 1 * /
тень текста: нет;
}
Слово «сбросить»
Лично я считаю полезным рассматривать их всех под одним общим термином и просто осознавать философские различия.Но Normalize намеренно отделяется:
Современная альтернатива CSS с поддержкой HTML5
Sanitize называет себя библиотекой CSS и нигде не использует слово «сброс», кроме как для ссылки на сброс Мейера.
перезагрузка
Reboot интересен тем, что это, пожалуй, самый новый плеер в мире. История его файлов восходит к 2015 году, что, вероятно, связано с тем, что Bootstrap 4 некоторое время откладывался после Bootstrap 3. Reboot не имеет собственного репозитория, это часть Bootstrap.Вот прямой файл и документы.
Интересно, как они думают:
Reboot основывается на Normalize, предоставляя многие элементы HTML с несколько самоуверенными стилями, используя только селекторы элементов. Дополнительная стилизация выполняется только с классами. Например, мы перезагружаем несколько стилей
для упрощения базовой линии, а затем предоставляем
.table
,.table-Bordered
и другие.У вас может быть класс, который выполняет стили, но если вы используете сброс, вам не нужно перегружать этот класс стилями сброса, которые решают проблемы согласованности между браузерами.
// // Таблицы // Таблица { граница-коллапс: коллапс; // Предотвращаем двойные границы } подпись { обивка-верх: $ таблица-ячейка-обивка; padding-bottom: $ table-cell-padding; цвет: $ text-приглушенный; выравнивание текста: слева; caption-side: bottom; } th { // Соответствует выравниванию по умолчанию `
` путем наследования от `` или // ближайший родитель с набором `text-align`. выравнивание текста: наследование; } Это определенно самоуверенное, но в некотором смысле хорошо сочетающееся с Bootstrap.Тот факт, что он похоронен внутри Bootstrap, довольно хорошо сигнализирует, что он разработан для этого мира, а не как добавка для какого-либо проекта. Тем не менее, я приложил все усилия, чтобы скомпилировать здесь прямую версию CSS.
Настройка сброса на основе поддержки браузера
Пока мы говорим о прошлом и будущем сбросов, стоит снова упомянуть список браузеров, который является стандартизированным форматом для объявления, какие браузеры / версии поддерживает проект.
Сброс может быть построен таким образом, чтобы все элементы, которые он включает, знали, почему они есть.Точно, какой браузер и какую версию он поддерживает. Затем, если в конфигурации списка браузеров указано, что конкретный браузер в любом случае не поддерживается этим проектом, этот CSS можно удалить.
Это то, что делает PostCSS Normalize.
Что такое сброс CSS?
Сброс CSS (или «Сброс CSS») - это короткий, часто сжатый (минимизированный) набор правил CSS, который сбрасывает стили всех элементов HTML до согласованной базовой линии.
Если вы не знали, в каждом браузере есть собственная таблица стилей «агента пользователя» по умолчанию, которую он использует, чтобы веб-сайты без стилей выглядели более разборчивыми.Например, большинство браузеров по умолчанию делают ссылки синими, а посещенные ссылки - фиолетовым, дают таблицам определенное количество границ и отступов, применяют переменные размеры шрифта к h2, h3, h4 и т. Д. И определенное количество отступов почти ко всему. Вы когда-нибудь задумывались, почему кнопки отправки выглядят по-разному в разных браузерах?
Очевидно, что это создает определенную головную боль для авторов CSS, которые не могут понять, как сделать так, чтобы их веб-сайты выглядели одинаково в каждом браузере. (NB: скоро выйдет статья о том, почему это ложное мнение!)
Используя сброс CSS, авторы CSS могут заставить каждый браузер сбросить все его стили до нуля, таким образом избегая межбраузерных различий, насколько это возможно.
Базовый пример: сброс CSS или отсутствие сброса CSS
Вот первый из когда-либо созданных веб-сайтов со сбросом CSS и без него:
Это очень простой пример, который не включает никаких списков, изображений или таблиц, но он должен помочь вам понять, что делает CSS Reset.
Зачем нужен сброс CSS?
Вы можете спросить, для чего это все - ну, это просто. На основе согласованной базы, которую вы установили с помощью сброса, вы можете затем перейти к и изменить стиль вашего документа, зная, что различия браузеров в отображении HTML по умолчанию вас не коснутся!
Проблемы со сбросом CSS
Некоторые люди утверждают, что в этом нет необходимости - что нет смысла сбрасывать стиль элемента, нужно только отменить сброс впоследствии.Если вы сделали крупный план одного элемента с помощью сброса CSS и последующего стилизации, проблема станет ясной:
/ * Сброс CSS * / #element {margin: 0; отступ: 0; размер шрифта: 100%; высота строки: 1; } ... / * # правила элемента: * / #element {margin: 5px 0 10px; размер шрифта: 13 пикселей; высота строки: 1,5; }Во многом они правы - это дублирует усилия и время обработки, тогда как одного объявления было бы достаточно - многие разработчики и дизайнеры считают, что это нарушает принцип «DRY» (не повторяйся).
Однако есть несколько преимуществ этого метода, которые перевешивают любые недостатки, не в последнюю очередь более логичное развитие, которое он предоставляет: вставьте свой сброс CSS, вставьте свои базовые стили (при необходимости), а затем определите все остальное оттуда. Также приятно знать, что у вас есть все необходимое.
Другая проблема связана с частью Cascading «Каскадных таблиц стилей». Если ваш сброс CSS не написан тщательно, вы можете обнаружить, что ваши правила CSS сами перезаписываются кодом, который должен был быть их базовым уровнем! Это часто является проблемой при использовании универсального сброса селектора, но обычно не возникает при работе с хорошо написанным кодом, таким как HTML5 Doctor CSS Reset.
Надеюсь, эта статья помогла ответить на весь вопрос Что такое сброс CSS с некоторой ясностью ... если вы все еще ломаете голову, ознакомьтесь со статьей Какой сброс CSS следует использовать?
Пожалуйста, напишите мне, если есть что-то, что, по вашему мнению, нужно добавить в эту статью, и я буду рад добавить это с указанием кредита и обратной ссылки!
В чем разница между Normalize.css и Reset CSS?
Нормализовать.css
Normalize.css - это небольшой файл CSS, который обеспечивает согласованность между браузерами в стилях элементов HTML по умолчанию.
Это означает, что если мы посмотрим на стандарты W3C стилей, применяемых браузерами, и обнаружим несоответствие в одном из браузеров, стили
normalize.css
исправят стиль браузера, в котором есть разница.Но в некоторых случаях мы не можем исправить неисправные браузеры в соответствии со стандартом, обычно из-за IE или EDGE.В этих случаях исправления в Normalize будут применять стили IE или EDGE к остальным браузерам.
Пример из жизни
Chrome, Safari и Firefox отображают теги
, которые находятся внутри тега
/
/
/
с размером шрифта меньше, чем независимый тег и с другим размером поля. Это стили пользовательского агента в Chrome, Safari и Firefox в случае тега
внутри
/
/
/
Тег
: -webkit-any (article, aside, nav, section) h2 { размер шрифта: 1.5em; маржа-начало-блока: 0,83em; край блока: 0,83em; }
Пример:
/ * Исправьте размер шрифта и поля на элементах `h2` в` section` и `article`. контексты в Chrome, Firefox и Safari. * / h2 {размер шрифта: 2em; маржа: 0,67em 0;}
Сбросить CSS
Reset CSS использует другой подход и говорит, что нам вообще не нужны стили браузеров по умолчанию. Какие бы стили нам ни понадобились, мы определим в проекте в соответствии с нашими потребностями.Таким образом, «Сброс CSS» сбрасывает все стили, которые поставляются с пользовательским агентом браузера.
Этот подход хорошо работает в приведенном выше примере со стилями по умолчанию от
до
: в большинстве случаев нам не нужен ни размер шрифта по умолчанию
браузера
, ни полепо умолчанию
браузера.Вот пример того, как выглядит небольшая часть CSS Reset
html, body, div, span, applet, object, iframe, h2, h3, h4, h5, h5, h6, p, цитата, pre, a, abbr, аббревиатура, адрес, big, cite, code, 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, набор полей, форма, метка, легенда, таблица, заголовок, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, меню, навигация, вывод, рубин, раздел, сводка, время, отметка, аудио, видео { маржа: 0; отступ: 0; граница: 0; размер шрифта: 100%; шрифт: наследовать; вертикальное выравнивание: базовая линия; }
Методом сброса CSS мы определяем, что все теги HTML не имеют отступов, полей, границ, одинакового размера шрифта и одинакового выравнивания.
Проблема с сбросами CSS в том, что они уродливы: у них большая цепочка селекторов, и они делают множество ненужных переопределений. И что еще хуже, они не читаются при отладке.
Но все же есть стили, которые мы предпочитаем сбрасывать, например
до
,
,
и т. Д.
Сбросить / удалить стили CSS только для элемента
Быстрый ответ - использовать
"all: revert"
.element { все: вернуться; }
"all: revert"
сбросит все свойства стиля вашего элемента. В случае текста или унаследованных свойств«revert»
сбрасывает свойство CSS вашего элемента обратно к унаследованным значениям, полученным из вашего «основного» элемента или значения стиля UA по умолчанию браузера, а не к базовому стилю свойства. Для ненаследуемого свойства он снова сбрасывает его до стиля браузера по умолчанию, а не до базового стиля свойства. «all» позволяет воздействовать на все свойства.Скорее всего, это то, что вы хотите увидеть. Вы можете использовать
«начальный»
или«не заданный»
, но вы должны вручную применить их для каждого свойства, и, что еще хуже, они не будут возвращать свойства в значения отображения элемента по умолчанию, но по существу сотрут свойство элемента. values и создайте полностью не стилизованный элемент . Например, «display: block» будет изменен на «display: inline» для всех элементов, которые вы выбираете для установки с помощью «display: initial».Вы не хотите когда-либо делать это, поскольку он полностью удаляет ваши стили И стили элемента UA по умолчанию браузера из выбранного элемента. Причина, по которой это работает, заключается в том, что все элементы HTML поставляются без каких-либо стилей, поэтому в основном выглядят одинаково, пока не будет применен лист UA браузера, содержащий стили для всех элементов. "initial" и "unset" стерли бы большую часть этого из браузера.«вернуть»
, по крайней мере, сохраняет их базовый набор стилей, применяемый браузером пользователя, и поэтому превосходит«начальный»
и«не установленный»
.Проблемы с использованием
"all: revert"
: это новое объявление CSS, которое работает только в более современных браузерах HTML5 (начиная с 2020 года). Ни один из старых браузеров, отличных от HTML5 (до 2010 г.), не поймет это объявление, поэтому они не будут его игнорировать. Ни одна из версий Internet Explorer также не поддерживает «все: откат». Только IE8 + понимает "начальный", поэтому старые версии не будут затронуты. Это ненадежный, но все же полезный инструмент, которым я пользуюсь. 🙂СЕЙЧАС НА ЕЩЕ ЛУЧШЕЕ РЕШЕНИЕ
Здесь путают две идеи:
- Первая идея состоит в том, чтобы «вернуть» стили обратно в набор значений таблицы стилей UA браузера (таблица стилей, которая поставляется с браузером при установке и определяет, как выглядит каждый элемент).Каждый браузер определяет свои собственные стили того, как элементы должны выглядеть по умолчанию. Эта идея состоит в том, чтобы вернуть все стили страниц обратно в собственные стили элементов каждого браузера.
- Вторая идея заключается в «сбросе» всех стилей браузера по умолчанию к общему стилю, присущему всем браузерам. Люди создают специальные таблицы «сброса», чтобы попытаться выровнять все элементы браузера по единому согласованному стилю и повсеместно. Это не имеет ничего общего со стилями UA по умолчанию для браузеров и не имеет ничего общего с «очисткой» и приведением всех браузеров в соответствие с общим базовым стилем.Это только аддитивный процесс.
Это две очень разные концепции, которые люди здесь путают.
Поскольку каждый браузер часто имел стандартные стандартные стили элементов и макетов, которые выглядели немного по-разному, людям пришла в голову идея «сбросить» или «перезагрузить» таблицу стилей для выравнивания всех браузеров ПЕРЕД применением пользовательского CSS. . Например, Bootstrap теперь делает это. Но это не имело никакого отношения к людям, желающим вернуться к внешнему виду браузера по умолчанию.
Проблема заключалась не в создании этих настраиваемых таблиц стилей «сброса», а в выяснении того, какой CSS был по умолчанию для каждого браузера и каждого элемента ДО того, как были применены какие-либо стили. Большинство выяснило, что вы не можете перестроить существующий чистый каскад, пока не «очистите» все уже примененные стили. Но как вернуться к стилю браузера по умолчанию?
Для некоторых это означало выход за рамки возврата элементов в таблицу стилей UA браузера, которая поставляется вместе с браузером. Многие хотели вернуться к «начальным» значениям свойств, которые НИЧЕГО не имеют отношения к стилю браузера по умолчанию, но на самом деле это значения свойств по умолчанию.Это опасно, так как в случае "display" элементы уровня блока возвращаются во "inline" и разбиваются макеты таблиц и другие вещи.
Итак, я НЕ согласен с тем, что здесь пользователи используют «начальный» для сброса чего-либо или настраиваемые классы сброса, которые изменяют каждое свойство обратно на некоторый произвольный набор базовых значений.
Для меня лучшим решением всегда было попытаться вернуть все стили основных элементов обратно к значениям таблицы стилей UA браузера, которые в любом случае используют все наши конечные пользователи.Если вы создаете новый веб-сайт, вам не нужно этого делать. Вы начинаете со стилей браузера по умолчанию и добавляете к ним. Только после того, как вы добавили сторонние продукты CSS или столкнулись со сложными каскадами CSS, вы захотите выяснить, как вернуться к значениям таблицы стилей по умолчанию в браузере.
По этой причине я за создание вашей собственной таблицы «сброса», чтобы сначала сбросить все элементы к одному общему стилю, который используется всеми старыми и новыми браузерами в качестве первого шага. Тогда у вас будет прочная структура, к которой намного проще вернуться, не возвращаясь к настройкам браузера по умолчанию.Вы просто строите на сбросе общий базовый набор значений стиля элементов. После создания собственного листа «сброса», который ДОБАВЛЯЕТ, а не ИЗМЕНЯЕТ стили UA браузеров, у вас будет сайт, который очень легко изменить.
Единственная проблема, которая остается, - это когда у вас есть сайт, на котором НЕТ такой таблицы сброса, или есть этот сложный сторонний CSS, и вам нужно попытаться вернуться к стилям UA браузера. Как ты это делаешь?
Я понимаю, что Internet Explorer заставил нас вручную сбросить все свойства, чтобы вернуться к любому виду сброса.Но возвращение всех этих значений свойств к "начальным" полностью уничтожает значения таблицы стилей UA браузера! ПЛОХАЯ ИДЕЯ! Лучше просто использовать «all: revert» для браузеров, отличных от IE, для каждого элемента с использованием подстановочного знака и «наследовать» только для нескольких унаследованных свойств корневого уровня, найденных в элементах «html» и «body», которые влияют на всех наследующих детей на странице. (см. ниже). Я НЕ за эти огромные сбросы свойств с использованием «начального» или возврата к некоему воображаемому стандарту, который, как мы предполагаем, будут использовать все браузеры или IE.Для начала "начальный" имеет плохую поддержку в IE и не сбрасывает значения до значений по умолчанию для элементов, а только для значений свойств по умолчанию. Но это также бессмысленно, если вы собираетесь создать лист сброса, чтобы выровнять все элементы по общему стилю. В таком случае бессмысленно очищать стили и начинать заново.
Итак, вот мое простое решение, которое в большинстве случаев делает достаточно для сброса того, какие текстовые значения просеиваются в IE из корня и используют "all: revert" для всех браузеров, отличных от IE, чтобы принудительно вернуть ненаследуемые значения обратно в браузер. Таблица стилей UA полностью, что дает вам настоящий перезапуск.Это не мешает классам и стилям более высокого уровня, накладываемым поверх ваших стилей элементов, что в любом случае всегда должно быть целью. Вот почему я НЕ за эти настраиваемые классы сброса, которые утомительны и ненужны и в любом случае не возвращают элемент в его стиль UA браузера. Обратите внимание на несколько более избирательные селекторы ниже, которые, например, перезаписывают значения стиля «перезагрузки» Bootstrap, возвращая их к стилям браузера по умолчанию. Это, конечно, не приведет к сбросу стилей элементов для IE, но для браузеров, отличных от IE, и большинства наследуемых стилей текста он вернет элементы в большинстве агентов в таблицы стилей UA, которые поставляются с браузерами:
: root, html { дисплей: блок; семейство шрифтов: наследовать; размер шрифта: наследовать; вес шрифта: наследовать; высота строки: наследовать; -webkit-text-size-adjust: наследовать; -webkit-tap-highlight-color: наследовать; все: вернуться; } html body { дисплей: блок; семейство шрифтов: наследовать; размер шрифта: наследовать; вес шрифта: наследовать; высота строки: наследовать; маржа: наследование; дополнение: наследовать; цвет: наследовать; выравнивание текста: наследование; цвет фона: наследовать; фон: наследование; все: вернуться; } / * Это правило пытается вручную сбросить все элементы обратно на Таблица стилей браузера UA с использованием "возврата" и "подстановочного знака" (*) который сбрасывает все свойства всех элементов HTML.Это перезапишет большинство стилей перезагрузки Bootstraps. на элементах, например. Примечание. IE должен игнорировать этот селектор. * / html body * { все: вернуться; }
Сброс CSS. Следуйте за мной в твиттерах, чтобы узнать больше: https://twitter.com/davidwells · GitHub
/ * http://meyerweb.com/eric/tools/css/reset/ , версия 2.0 изменена | 20110126 Лицензия: отсутствует (общественное достояние) * / HTML, тело, div, диапазон, апплет, объект, 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, центр, дл, дт, дд, ол, ул, ли, набор полей, форма, метка, легенда, таблица, подпись, tbody, tfoot, thead, tr, th, td, артикул, в сторону, холст, детали, встраивание, рисунок, figcaption, нижний колонтитул, заголовок, hgroup, меню, навигация, вывод, рубин, раздел, сводка, время, отметка, аудио, видео { маржа: 0; отступ: 0; граница: 0; размер шрифта: 100%; шрифт: наследовать; vertical-align: baseline; } / * не забудьте установить несколько стилей фокуса для доступности * / : фокус { наброски: 0; } / * сброс роли отображения HTML5 для старых браузеров * / артикул, в сторону, детали, figcaption, рисунок, нижний колонтитул, заголовок, hgroup, меню, навигация, раздел { дисплей: блочный; } кузов { высота строки: 1; } ol, ul { стиль списка: нет; } цитата, q { цитат: нет; } цитата: до, цитата: после, q: до, q: после { содержание: ''; содержание: нет; } стол { граница-коллапс: коллапс; border-spacing: 0; } input [type = search] :: - webkit-search-cancel-button, input [type = search] :: - webkit-search-decoration, input [type = search] :: - кнопка-результаты-поиск-webkit, input [type = search] :: - webkit-search-results-украшение { -webkit-appearance: none; -моз-внешний вид: нет; } ввод [тип = поиск] { -webkit-appearance: none; -моз-внешний вид: нет; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; размер коробки: коробка содержимого; } текстовое поле { переполнение: авто; выравнивание по вертикали: сверху; изменение размера: вертикальное; } / ** * Правильное отображение inline-block, не определенное в IE 6/7/8/9 и Firefox 3. * / аудио, холст, видео { дисплей: встроенный блок; * дисплей: встроенный; * масштаб: 1; max-width: 100%; } / ** * Запретить современным браузерам отображать звук без элементов управления. * Удалите лишнюю высоту в устройствах iOS 5. * / аудио: нет ([управляет]) { дисплей: нет; высота: 0; } / ** * Стиль адреса отсутствует в IE 7/8/9, Firefox 3 и Safari 4. * Известная проблема: нет поддержки IE 6. * / [скрыто] { дисплей: нет; } / ** * 1.Правильное изменение размера текста странным образом в IE 6/7, когда размер шрифта тела установлен с использованием * единиц `em`. * 2. Запретить изменение размера текста iOS после изменения ориентации без отключения * пользовательский зум. * / html { размер шрифта: 100%; / * 1 * / -webkit-text-size-adjust: 100%; / * 2 * / -ms-text-size-adjust: 100%; / * 2 * / } / ** * Несоответствие адреса `outline` между Chrome и другими браузерами. * / a: фокус { № Контур: тонкий пунктирный; } / ** * Повышение читабельности при наведении курсора и при наведении курсора мыши во всех браузерах. * / a: активный, a: наведение { наброски: 0; } / ** * 1.Удалять границу внутри элемента `a` в IE 6/7/8/9 и Firefox 3. * 2. Улучшение качества изображения при масштабировании в IE 7. * / img { граница: 0; / * 1 * / -ms-интерполяция-режим: бикубический; / * 2 * / } / ** * Поле адреса отсутствует в IE 6/7/8/9, Safari 5 и Opera 11. * / рисунок { маржа: 0; } / ** * Правильные поля странно отображаются в IE 6/7. * / форма { маржа: 0; } / ** * Определите согласованные границы, поля и отступы. * / набор полей { граница: сплошная 1px # c0c0c0; margin: 0 2px; отступ: 0,35 м 0,625 м 0,75 м; } / ** * 1.Правильный цвет не наследуется в IE 6/7/8/9. * 2. Правильный текст без переноса в Firefox 3. * 3. Правильное выравнивание странно отображается в IE 6/7. * / легенда { граница: 0; / * 1 * / отступ: 0; пробел: нормальный; / * 2 * / * левое поле: -7 пикселей; / * 3 * / } / ** * 1.Правильный размер шрифта наследуется не во всех браузерах. * 2. Поля адресов устанавливаются по-разному в IE 6/7, Firefox 3+, Safari 5, * и хром. * 3. Улучшение внешнего вида и согласованности во всех браузерах. * / кнопка, ввод, выберите, текстовое поле { размер шрифта: 100%; / * 1 * / маржа: 0; / * 2 * / vertical-align: baseline; / * 3 * / * выравнивание по вертикали: среднее; / * 3 * / } / ** * Адрес Firefox 3+, устанавливающий высоту строки при вводе с помощью! Important в * таблица стилей UA. * / кнопка, вход { высота строки: нормальный; } / ** * Адресация несовместимого наследования `text-transform` для` button` и `select`. * Все остальные элементы управления формой не наследуют значения `text-transform`. * Правильное наследование стиля `button` в Chrome, Safari 5+ и IE 6+. * Исправлено наследование стиля select в Firefox 4+ и Opera. * / кнопка, выберите { преобразование текста: нет; } / ** * 1.Избегайте ошибки WebKit в Android 4.0. *, Где (2) уничтожает собственный `audio` * и элементы управления `video`. * 2. Исправлена невозможность стилизовать интерактивные типы `input` в iOS. * 3. Повышение удобства использования и единообразия стиля курсора между типом изображения * `input` и другие. * 4.Удалите внутренний интервал в IE 7, не влияя на обычный ввод текста. * Известная проблема: внутренний интервал остается в IE 6. * / кнопка, html input [type = "button"], / * 1 * / вход [type = "reset"], ввод [type = "submit"] { -webkit-appearance: button; / * 2 * / курсор: указатель; / * 3 * / * переполнение: видимое; / * 4 * / } / ** * Повторно установить курсор по умолчанию для отключенных элементов. * / кнопка [отключена], ввод HTML [отключен] { курсор: по умолчанию; } / ** * 1.Размер адресного блока установлен на content-box в IE 8/9. * 2. Удалите лишнее заполнение в IE 8/9. * 3. Удалите лишнее заполнение в IE 7. * Известная проблема: в IE 6 остается лишнее заполнение. * / input [type = "checkbox"], вход [type = "radio"] { размер коробки: рамка-рамка; / * 1 * / отступ: 0; / * 2 * / * высота: 13 пикселей; / * 3 * / * ширина: 13 пикселей; / * 3 * / } / ** * 1.Для адреса `Appearance` установлено значение` searchfield` в Safari 5 и Chrome. * 2. Для адреса box-sizing установлено значение border-box в Safari 5 и Chrome * (включите `-moz`, чтобы обеспечить соответствие требованиям будущего). * / ввод [type = "search"] { -webkit-appearance: textfield; / * 1 * / -moz-box-sizing: content-box; -webkit-box-sizing: content-box; / * 2 * / размер коробки: коробка содержимого; } / ** * Удалить внутренние отступы и кнопку отмены поиска в Safari 5 и Chrome * в OS X. * / input [type = "search"] :: - webkit-search-cancel-button, input [type = "search"] :: - webkit-search-decoration { -webkit-appearance: none; } / ** * Удалите внутреннее заполнение и границу в Firefox 3+. * / Кнопка :: - moz-focus-inner, input :: - moz-focus-inner { граница: 0; отступ: 0; } / ** * 1.Удалите вертикальную полосу прокрутки по умолчанию в IE 6/7/8/9. * 2. Улучшить читаемость и согласованность во всех браузерах. * / текстовое поле { переполнение: авто; / * 1 * / выравнивание по вертикали: сверху; / * 2 * / } / ** * Удалите наибольший интервал между ячейками таблицы. * / стол { граница-коллапс: коллапс; border-spacing: 0; } HTML, кнопка, ввод, выберите, текстовое поле { цвет: # 222; } :: - выбор moz { фон: # b3d4fc; тень текста: нет; } :: выбор { фон: # b3d4fc; тень текста: нет; } img { vertical-align: middle; } набор полей { граница: 0; маржа: 0; отступ: 0; } текстовое поле { изменение размера: вертикальное; } .