Базовые стили
Набор базовых стилей для проектов Tailwind.
Построенный поверх modern-normalize, Preflight — это набор базовых стилей для проектов Tailwind, которые предназначены для сглаживания кроссбраузерных несоответствий и упрощения работы в рамках ограничений вашей системы дизайна.
Когда вы импортируете tailwindcss в свой проект, Preflight автоматически вставляется в слой base:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/preflight.css" layer(base);@import "tailwindcss/utilities.css" layer(utilities);Хотя большинство стилей в Preflight предназначены для того, чтобы оставаться незамеченными — они просто заставляют вещи вести себя более предсказуемо — некоторые из них более субъективны и могут быть неожиданными при первом знакомстве с ними.
Для полного справочника всех стилей, применяемых Preflight, см. таблицу стилей.
Preflight удаляет все стандартные отступы со всех элементов, включая заголовки, цитаты, абзацы и т.д.:
*,::after,::before,::backdrop,::file-selector-button { margin: 0; padding: 0;}Это затрудняет случайную зависимость от значений отступов, применяемых таблицей стилей пользовательского агента, которые не являются частью вашей шкалы интервалов.
Чтобы упростить добавление границы простым добавлением класса border, Tailwind переопределяет стандартные стили границ для всех элементов следующими правилами:
*,::after,::before,::backdrop,::file-selector-button { box-sizing: border-box; border: 0 solid;}Поскольку класс border устанавливает только свойство border-width, этот сброс гарантирует, что добавление этого класса всегда добавляет сплошную границу 1px, которая использует currentColor.
Это может вызвать некоторые неожиданные результаты при интеграции определенных сторонних библиотек, например Google Maps.
Когда вы сталкиваетесь с такими ситуациями, вы можете обойти их, переопределив стили Preflight собственным пользовательским CSS:
@layer base { .google-map * { border-style: none; }}Все элементы заголовков по умолчанию полностью не стилизованы и имеют тот же размер шрифта и вес, что и обычный текст:
h1,h2,h3,h4,h5,h6 { font-size: inherit; font-weight: inherit;}Причина этого двоякая:
Вы всегда можете добавить стандартные стили заголовков в свой проект, добавив собственные базовые стили.
Нумерованные и маркированные списки по умолчанию не стилизованы, без маркеров или номеров:
ol,ul,menu { list-style: none;}Если вы хотите стилизовать список, вы можете сделать это с помощью утилит list-style-type и list-style-position:
<ul class="list-inside list-disc"> <li>Один</li> <li>Два</li> <li>Три</li></ul>Вы всегда можете добавить стандартные стили списков в свой проект, добавив собственные базовые стили.
Не стилизованные списки не объявляются как списки VoiceOver. Если ваш контент действительно является списком, но вы хотите оставить его не стилизованным, добавьте роль "list" к элементу:
<ul role="list"> <li>Один</li> <li>Два</li> <li>Три</li></ul>Изображения и другие заменяемые элементы (такие как svg, video, canvas и другие) по умолчанию имеют display: block:
img,svg,video,canvas,audio,iframe,embed,object { display: block; vertical-align: middle;}Это помогает избежать неожиданных проблем с выравниванием, с которыми вы часто сталкиваетесь при использовании стандартного для браузера display: inline.
Если вам когда-либо понадобится сделать один из этих элементов inline вместо block, просто используйте утилиту inline:
<img class="inline" src="..." alt="..." />Изображения и видео ограничены шириной родителя таким образом, что сохраняется их внутреннее соотношение сторон:
img,video { max-width: 100%; height: auto;}Это предотвращает их переполнение контейнеров и делает их адаптивными по умолчанию. Если вам когда-либо понадобится переопределить это поведение, используйте утилиту max-w-none:
<img class="max-w-none" src="..." alt="..." />Если вы хотите добавить собственные базовые стили поверх Preflight, добавьте их в слой base CSS в вашем CSS с помощью @layer base:
@layer base { h1 { font-size: var(--text-2xl); } h2 { font-size: var(--text-xl); } h3 { font-size: var(--text-lg); } a { color: var(--color-blue-600); text-decoration-line: underline; }}Узнайте больше в документации по добавлению базовых стилей.
Если вы хотите полностью отключить Preflight — возможно, потому что вы интегрируете Tailwind в существующий проект или предпочитаете определять собственные базовые стили — вы можете сделать это, импортируя только те части Tailwind, которые вам нужны.
По умолчанию @import "tailwindcss"; вставляет следующее:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/preflight.css" layer(base);@import "tailwindcss/utilities.css" layer(utilities);Чтобы отключить Preflight, просто пропустите его импорт, оставив все остальное:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/preflight.css" layer(base);@import "tailwindcss/utilities.css" layer(utilities);При импорте файлов Tailwind CSS по отдельности функции типа source(), theme() и prefix() должны быть размещены на соответствующих импортах.
Например, обнаружение исходного кода влияет на сгенерированные утилиты, поэтому source(…) должен быть добавлен к импорту utilities.css:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/utilities.css" layer(utilities);@import "tailwindcss/utilities.css" layer(utilities) source(none);То же самое касается important, который также влияет на утилиты:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/utilities.css" layer(utilities);@import "tailwindcss/utilities.css" layer(utilities) important;Аналогично, theme(static) и theme(inline) влияют на сгенерированные переменные темы и должны быть размещены на импорте theme.css:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/theme.css" layer(theme) theme(static);@import "tailwindcss/utilities.css" layer(utilities);Наконец, использование префикса с prefix(tw) влияет на утилиты и переменные, поэтому он должен быть размещен на обоих импортах:
@layer theme, base, components, utilities;@import "tailwindcss/theme.css" layer(theme);@import "tailwindcss/utilities.css" layer(utilities);@import "tailwindcss/theme.css" layer(theme) prefix(tw);@import "tailwindcss/utilities.css" layer(utilities) prefix(tw);