基础样式
一组针对 Tailwind 项目的具有一定主观性的基础样式。
Preflight 基于 modern-normalize 构建,是一组针对 Tailwind 项目的基础样式,旨在消除跨浏览器不一致性,并使您更容易在设计系统的约束下工作。
当您将 tailwindcss
导入到您的项目中时,Preflight 会自动注入到 base
层
@layer theme, base, components, utilities;@import "./theme.css" layer(theme);@import "./preflight.css" layer(base);@import "./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
属性,因此此重置可确保添加该类始终添加使用 currentColor
的实线 1px
边框。
当集成某些第三方库(例如 Google 地图)时,这可能会导致一些意外的结果。
当您遇到这种情况时,可以通过使用您自己的自定义 CSS 覆盖 Preflight 样式来解决这些问题
@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>One</li> <li>Two</li> <li>Three</li></ul>
您始终可以通过添加您自己的基础样式来向您的项目添加默认的列表样式。
未设置样式的列表不会被 VoiceOver 声明为列表。如果您的内容确实是一个列表,但您想保持其无样式,请向元素添加一个“list”角色
<ul role="list"> <li>One</li> <li>Two</li> <li>Three</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 的基础上添加您自己的基础样式,请使用 @layer base
将它们添加到 CSS 中的 base
CSS 层
@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 "./theme.css" layer(theme);@import "./preflight.css" layer(base);@import "./utilities.css" layer(utilities);
要禁用 Preflight,只需省略其导入,同时保留其他所有内容
@layer theme, base, components, utilities;@import "./theme.css" layer(theme);@import "./preflight.css" layer(base);@import "./utilities.css" layer(utilities);