卡片组件
卡片是 AdminLTE 里的主要内容容器。它们本质上就是 Bootstrap 卡片,额外加了一层阴影、一套颜色变体系统、一个头部工具栏,还有供 CardWidget 插件 使用的钩子——这个插件能让卡片折叠、移除和最大化。
结构
<div class="card card-primary card-outline">
<div class="card-header">
<div class="card-title">标题</div>
<div class="card-tools">
<button type="button" class="btn btn-tool" data-lte-toggle="card-collapse" aria-label="Collapse card">
<i data-lte-icon="expand" class="bi bi-plus-lg"></i>
<i data-lte-icon="collapse" class="bi bi-dash-lg"></i>
</button>
</div>
</div>
<div class="card-body">内容</div>
<div class="card-footer">底部</div>
</div>
| 类名 | 描述 |
|---|---|
.card |
容器。在 Bootstrap 卡片的基础上加上了 AdminLTE 的阴影。 |
.card-header |
头部条。设置为相对定位,这样 .card-tools 就能在里面浮动。
|
.card-title |
头部文字。左浮动,字号
1.1rem;它只是一种样式,并不是标题——该用什么元素由文档大纲结构决定。
|
.card-tools |
头部内右对齐的工具栏。会吸收头部的水平内边距,让按钮贴边对齐。 |
.btn-tool |
柔和色调、无边框的图标按钮,专供 .card-tools 内使用。加上
.btn-tool-custom 可以保留你自己的配色。
|
.card-body |
内容区。 |
.card-footer |
底部条。 |
颜色变体
$theme-colors 里的每一个条目都会生成一个
.card-* 类。变体会设置两个自定义属性——--lte-card-variant-bg
和 --lte-card-variant-color——然后由头部来消费这两个属性,所以
.bg-primary 和 .text-bg-primary 给卡片上色的效果,跟
.card-primary 是一样的。
<div class="card card-primary">…</div>
<div class="card card-success">…</div>
<div class="card card-danger">…</div>
加上 .card-outline,就能把颜色转移到顶部一条 3px
的边框上,头部则保持素净:
<div class="card card-primary card-outline">…</div>
状态
这些类是 CardWidget 切换时对应的静止状态。在标记里设置其中一个,就能让卡片一开始就渲染成折叠状态。
| 类名 | 描述 |
|---|---|
.collapsed-card |
隐藏内容区和底部,并把折叠图标换成展开图标。 |
.maximized-card |
让卡片以全尺寸固定在视口中。AdminLTE 还会把它加到
<html> 上,以锁定页面滚动。
|
.was-collapsed |
由 CardWidget 添加:如果卡片在最大化时本身是折叠状态,就给它加上这个类,这样还原时能回到折叠状态。 |
.expanding-card |
在展开动画执行期间存在。 |
图标的显示会自动跟随状态变化:除非卡片是折叠状态,否则
[data-lte-icon="expand"]
会隐藏;除非卡片是最大化状态,否则
[data-lte-icon="minimize"]
会隐藏。把两个图标都放上去,让 CSS 来决定显示哪个就行。
带标签的卡片
.card-tabs 会把一个
.nav-tabs 放进卡片头部,并把标签页和内容区之间的接缝处理成直角:
<div class="card card-primary card-tabs">
<div class="card-header p-0 pt-1">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" data-bs-toggle="pill" data-bs-target="#tab-1" type="button" role="tab">标签 1</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" data-bs-toggle="pill" data-bs-target="#tab-2" type="button" role="tab">标签 2</button>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div class="tab-pane fade show active" id="tab-1" role="tabpanel" tabindex="0">…</div>
<div class="tab-pane fade" id="tab-2" role="tabpanel" tabindex="0">…</div>
</div>
</div>
</div>
.card-outline-tabs
是同样的思路,只不过用在了描边卡片上:由激活的标签页以顶部边框的形式来体现强调色,而不是由卡片本身来承担。
工具类
| 类名 | 描述 |
|---|---|
.height-control |
把内容区的高度限制在 300px,超出部分可滚动。 |
.card .nav.flex-column |
卡片内的垂直导航会在各项之间加上分隔线,最后一项之后不加。用于用户小部件。 |
Sass 变量
| 变量 | 默认值 | 说明 |
|---|---|---|
$lte-card-shadow |
基于 --bs-body-color-rgb 的双层阴影 |
应用到每个 .card 上的阴影。 |
$lte-card-title-font-size |
1.1rem |
.card-title 的字号。 |
$lte-card-title-font-weight |
$font-weight-normal |
.card-title 的字重。 |
注意事项
-
.card-title是浮动的,所以如果.card-header里只放了一个标题和工具栏,它自身是撑不起高度的——头部上的 clearfix mixin 会把它撑回来。出于同样的原因,你在头部里再加自己的浮动元素也是安全的。 -
嵌套卡片的作用域是正确的:折叠和展开的规则用的是
> .card-header和> .card-body,所以折叠外层卡片不会把里面那张卡片的图标也改掉。 - 如果卡片是由页面上其他位置的按钮来切换的,请使用 CardWidget 的编程 API,而不是手动增删那些状态类——它会触发对应的事件。