| 类名 | 样式 |
|---|---|
| .border-primary | --bs-bc: var(--bs-primary-bg); border-color: var(--bs-bc); |
| .border-accent | --bs-bc: var(--bs-accent-bg); border-color: var(--bs-bc); |
| .border-success | --bs-bc: var(--bs-success-bg); border-color: var(--bs-bc); |
| .border-danger | --bs-bc: var(--bs-danger-bg); border-color: var(--bs-bc); |
| .border-warning | --bs-bc: var(--bs-warning-bg); border-color: var(--bs-bc); |
| .border-info | --bs-bc: var(--bs-info-bg); border-color: var(--bs-bc); |
| .border-inverse | --bs-bc: var(--bs-inverse-bg); border-color: var(--bs-bc); |
| .border-secondary | --bs-bc: var(--bs-secondary-bg); border-color: var(--bs-bc); |
| .border-bg | --bs-bc: var(--bs-border-bg); border-color: var(--bs-bc); |
| .border-body | --bs-bc: var(--bs-border-body); border-color: var(--bs-bc); |
| .border-muted | --bs-bc: var(--bs-border-muted); border-color: var(--bs-bc); |
| .border-subtle | --bs-bc: var(--bs-border-subtle); border-color: var(--bs-bc); |
| .边框强调 | --bs-bc: var(--bs-border-emphasized); border-color: var(--bs-bc); |
| .border-white | --bs-bc: var(--bs-border-white); border-color: var(--bs-bc); |
| .border-black | --bs-bc: var(--bs-border-black); border-color: var(--bs-bc); |
| .边框-细微-主要 | --bs-bc: var(--bs-primary-border); border-color: var(--bs-bc); |
| .边框-微妙-强调 | --bs-bc: var(--bs-accent-border); border-color: var(--bs-bc); |
| .边框-细微-成功 | --bs-bc: var(--bs-success-border); border-color: var(--bs-bc); |
| .边框-微妙-危险 | --bs-bc: var(--bs-danger-border); border-color: var(--bs-bc); |
| .边框-细微-警告 | --bs-bc: var(--bs-warning-border); border-color: var(--bs-bc); |
| .边框-细微-信息 | --bs-bc: var(--bs-info-border); border-color: var(--bs-bc); |
| .边框-微妙-反向 | --bs-bc: var(--bs-inverse-border); border-color: var(--bs-bc); |
| .边框-细微-次要 | --bs-bc: var(--bs-secondary-border); border-color: var(--bs-bc); |
| .border-10 | border-color: color-mix(in oklch, var(--bs-bc) 10%, transparent); |
| .border-20 | border-color: color-mix(in oklch, var(--bs-bc) 20%, transparent); |
| .border-30 | border-color: color-mix(in oklch, var(--bs-bc) 30%, transparent); |
| .border-40 | border-color: color-mix(in oklch, var(--bs-bc) 40%, transparent); |
| .border-50 | border-color: color-mix(in oklch, var(--bs-bc) 50%, transparent); |
| .border-60 | border-color: color-mix(in oklch, var(--bs-bc) 60%, transparent); |
| .border-70 | border-color: color-mix(in oklch, var(--bs-bc) 70%, transparent); |
| .border-80 | border-color: color-mix(in oklch, var(--bs-bc) 80%, transparent); |
| .border-90 | border-color: color-mix(in oklch, var(--bs-bc) 90%, transparent); |
| .border-100 | border-color: var(--bs-bc); |
颜色
改变 border-color 使用基于我们主题颜色的工具类 .border-{color} 和 .border-subtle-{color}. 所有这些边框颜色工具都设置了 border-color 属性到本地 CSS 变量, --bs-bc,其值为主题颜色。根颜色令牌的颜色值也使用 light-dark() 确保在明暗两种颜色模式下都有足够的对比度。
例如,.border-primary 将 --bs-bc 变量设置为 var(--bs-primary-border):
.border-primary {
--bs-bc: var(--bs-primary-border);
border-color: var(--bs-bc);
}
这种方法还允许我们轻松地使用我们的 .border-{opacity} 工具支持半透明,因为我们可以使用 color-mix() 配合 CSS 变量来生成适当的颜色。有关更多详细信息,请参阅 不透明度部分。
--bs-bc 变量在 @property 中注册为非继承(inherits: false),因此边框颜色工具类只作用于应用它们的元素,并且不会传递到嵌套的元素或组件中。这就是为什么 --bs-bc 特意独立于继承的 --bs-border-color 设计令牌,而组件默认边框是从该令牌中解析的原因。
<div class="border border-5 border-primary">primary</div>
<div class="border border-5 border-subtle-primary">primary subtle</div>
<div class="border border-5 border-accent">accent</div>
<div class="border border-5 border-subtle-accent">accent subtle</div>
<div class="border border-5 border-success">success</div>
<div class="border border-5 border-subtle-success">success subtle</div>
<div class="border border-5 border-danger">danger</div>
<div class="border border-5 border-subtle-danger">danger subtle</div>
<div class="border border-5 border-warning">warning</div>
<div class="border border-5 border-subtle-warning">warning subtle</div>
<div class="border border-5 border-info">info</div>
<div class="border border-5 border-subtle-info">info subtle</div>
<div class="border border-5 border-inverse">inverse</div>
<div class="border border-5 border-subtle-inverse">inverse subtle</div>
<div class="border border-5 border-secondary">secondary</div>
<div class="border border-5 border-subtle-secondary">secondary subtle</div>
<div class="border border-5 border-bg">bg</div>
<div class="border border-5 border-body">body</div>
<div class="border border-5 border-muted">muted</div>
<div class="border border-5 border-subtle">subtle</div>
<div class="border border-5 border-emphasized">emphasized</div>
<div class="border border-5 border-black">black</div>
<div class="border border-5 border-white">white</div>或者修改组件的默认 border-color:
<div class="mb-4">
<label for="exampleFormControlInput1" class="form-label">Email address</label>
<input type="email" class="form-control border-success" id="exampleFormControlInput1" placeholder="name@example.com">
</div>
<div class="h4 pb-2 mb-4 fg-danger border-bottom border-danger">
Dangerous heading
</div>
<div class="p-3 bg-info bg-10 border border-info border-start-0 rounded-end">
Changing border color and width
</div>嵌套元素
因为边框颜色工具设置了非继承的--bs-bc变量,父元素的边框颜色不会影响嵌套元素的边框。如下所示,父元素使用了.border-danger,而嵌套的.border保持默认边框颜色。
<div class="p-3 border border-danger rounded-5">
Parent with .border-danger
<div class="border p-3 mt-3">
Nested .border keeps the default color
</div>
</div>不透明度
通过使用任何 .border-<percentage> 工具,可以改变边框颜色的不透明度,这些工具使用 color-mix() 将边框颜色与 transparent 混合,这要归功于上面提到的 CSS 变量方法。因为 --bs-bc 是作用于该元素的,请将这些不透明度工具与同一元素上的 .border-{color} 工具配对——它们不再从祖先继承边框颜色。
<div class="border border-5 border-primary p-2 mb-2">Default border</div>
<div class="border border-5 border-primary border-90 p-2 mb-2">90% opacity</div>
<div class="border border-5 border-primary border-80 p-2 mb-2">80% opacity</div>
<div class="border border-5 border-primary border-70 p-2 mb-2">70% opacity</div>
<div class="border border-5 border-primary border-60 p-2 mb-2">60% opacity</div>
<div class="border border-5 border-primary border-50 p-2 mb-2">50% opacity</div>
<div class="border border-5 border-primary border-40 p-2 mb-2">40% opacity</div>
<div class="border border-5 border-primary border-30 p-2 mb-2">30% opacity</div>
<div class="border border-5 border-primary border-20 p-2 mb-2">20% opacity</div>
<div class="border border-5 border-primary border-10 p-2">10% opacity</div>CSS
变量
--border-width: #{$border-width},
--border-width-keyline: .5px,
--border-style: #{$border-style},
--border-color: light-dark(var(--gray-200), var(--gray-700)),
--border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),
Sass 变量
用于在浅色和深色模式下设置border-color在.border-*-subtle工具类中的变量:
Sass 工具 API
边框颜色工具类在我们的工具类 API scss/_utilities.scss 中声明。了解如何使用工具类 API。
"border-color": (
property: (
"--bc": null,
"border-color": var(--bc)
),
class: border,
values: map.merge(theme-color-refs("bg"), theme-token-refs($theme-borders, "border")),
),
"border-color-subtle": (
property: (
"--bc": null,
"border-color": var(--bc)
),
class: border-subtle,
values: theme-color-refs("border"),
),
"border-width": (
property: border-width,
class: border,
values: map.merge($border-widths, (keyline: var(--border-width-keyline)))
),
"border-opacity": (
class: border,
property: border-color,
values: theme-opacity-values(--bc)
),