UIKit通过uk-grid实现响应式表格布局,利用uk-child-width控制列数、uk-grid-match统一行高,并结合Flexbox或CSS Grid实现灵活对齐与跨设备适配,优于传统HTML表格的僵硬结构。

UIKit实现表格布局,通常并非指直接使用HTML的
<table>
要用UIKit实现类似表格的布局,最核心的工具就是
uk-grid
一个基本的“表格”布局可以这样开始:
首先,你需要一个容器来承载你的网格:
立即学习“前端免费学习笔记(深入)”;
<div class="uk-grid-match uk-child-width-1-3@m uk-child-width-1-2@s uk-grid-small" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body">单元格内容 A1</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">单元格内容 A2</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">单元格内容 A3</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">单元格内容 B1</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">单元格内容 B2</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">单元格内容 B3</div>
</div>
</div>这里面有几个关键点:
uk-grid
uk-grid-match
<div>
uk-child-width-1-3@m
@m
uk-child-width-1-2@s
@s
uk-grid-small
uk-grid-medium
uk-grid-large
uk-grid-collapse
<div>
uk-card uk-card-default uk-card-body
通过这样的结构,我们构建了一个响应式的三列表格布局。如果需要更精细的控制,比如某个“单元格”占据两列,可以使用
uk-width-expand
uk-width-1-2
uk-child-width
对于更复杂的对齐,例如垂直居中,可以在单个“单元格”内部使用
uk-flex
<div class="uk-grid-match uk-child-width-1-3@m" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body uk-flex uk-flex-middle uk-flex-center">
<p>居中内容</p>
</div>
</div>
<!-- 其他单元格 -->
</div>这里
uk-flex uk-flex-middle uk-flex-center
UIKit的网格系统与传统HTML表格在布局理念上存在本质差异。传统HTML表格(
<table>
而UIKit的
uk-grid
主要区别在于:
uk-grid
<div>
<table>
uk-grid
uk-child-width-*@breakpoint
uk-grid-match
colspan
rowspan
<div>
<table>
简而言之,当你需要排列内容块、创建多列布局时,
uk-grid
<table>
实现一个带有固定表头和可滚动内容的“表格”是一个常见的需求,尤其是在展示大量数据时。UIKit本身没有直接提供这样的组件,但我们可以结合其网格系统和一些自定义CSS来实现。
核心思路是:
这里提供一个基于
uk-grid
<div class="uk-card uk-card-default uk-card-body">
<!-- 表头 -->
<div class="uk-grid uk-grid-small uk-child-width-1-3 uk-text-bold uk-text-center uk-background-muted uk-padding-small fixed-header" uk-grid>
<div>列标题 1</div>
<div>列标题 2</div>
<div>列标题 3</div>
</div>
<!-- 可滚动内容区域 -->
<div class="scrollable-table-body">
<div class="uk-grid uk-grid-small uk-child-width-1-3 uk-text-center" uk-grid>
<div>数据 A1</div>
<div>数据 A2</div>
<div>数据 A3</div>
</div>
<div class="uk-grid uk-grid-small uk-child-width-1-3 uk-text-center" uk-grid>
<div>数据 B1</div>
<div>数据 B2</div>
<div>数据 B3</div>
</div>
<!-- 更多数据行 -->
<div class="uk-grid uk-grid-small uk-child-width-1-3 uk-text-center" uk-grid>
<div>数据 Z1</div>
<div>数据 Z2</div>
<div>数据 Z3</div>
</div>
</div>
</div>
<style>
/* 确保表头和内容区域的列宽一致,这可能需要手动调整或使用JavaScript */
.fixed-header > div, .scrollable-table-body .uk-grid > div {
/* 这里可以根据需要微调宽度,确保对齐 */
/* 例如,如果uk-child-width-1-3,那么每个div的宽度大概是33.333% */
/* 为了完美对齐,可能需要考虑uk-grid-small的间距 */
box-sizing: border-box; /* 确保padding和border不增加宽度 */
}
.scrollable-table-body {
max-height: 300px; /* 设置最大高度 */
overflow-y: auto; /* 垂直滚动 */
margin-top: -1px; /* 消除与表头之间的1px边框或间隙 */
border-top: 1px solid #e5e5e5; /* 给滚动区域一个上边框,与表头分隔 */
}
</style>在这个例子中:
uk-grid
fixed-header
position: sticky; top: 0; z-index: 1;
scrollable-table-body
max-height
overflow-y: auto
uk-child-width-1-3
uk-grid
uk-grid-small
grid-template-columns
margin-top: -1px;
border-top: 1px solid #e5e5e5;
这种方法在大多数情况下都能很好地工作,但要达到像素级的完美对齐,尤其是在有边框和间距的情况下,往往需要一些细致的调整或更高级的CSS Grid布局。
UIKit的网格系统在创建响应式的数据列表或卡片布局方面表现出色,因为它允许内容块在不同屏幕尺寸下自动重排和调整大小,而无需你手动编写复杂的媒体查询。这比传统的表格布局更现代、更灵活。
核心在于
uk-grid
uk-child-width-*
场景一:响应式数据列表
假设你有一组数据,想以列表形式展示,但在大屏幕上显示多列,小屏幕上则堆叠显示。
<div class="uk-grid-small uk-child-width-1-1 uk-child-width-1-2@s uk-child-width-1-3@m uk-child-width-1-4@l" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">产品名称 A</h3>
<p>描述信息,这是一段关于产品A的简短介绍。</p>
<p class="uk-text-meta">价格: $19.99</p>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">产品名称 B</h3>
<p>描述信息,这是一段关于产品B的简短介绍。</p>
<p class="uk-text-meta">价格: $29.99</p>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">产品名称 C</h3>
<p>描述信息,这是一段关于产品C的简短介绍。</p>
<p class="uk-text-meta">价格: $39.99</p>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">产品名称 D</h3>
<p>描述信息,这是一段关于产品D的简短介绍。</p>
<p class="uk-text-meta">价格: $49.99</p>
</div>
</div>
<!-- 更多产品项 -->
</div>这里:
uk-child-width-1-1
uk-child-width-1-2@s
@s
uk-child-width-1-3@m
@m
uk-child-width-1-4@l
@l
uk-card
通过这样的设置,你的产品列表在手机上会垂直堆叠,在平板上会变成两列,在桌面电脑上则会是三列或四列,极大地提升了用户体验。
场景二:卡片布局与不同高度内容
如果你的卡片内容高度不一,但你希望它们在视觉上看起来整齐,可以使用
uk-grid-match
<div class="uk-grid-match uk-child-width-1-1 uk-child-width-1-2@s uk-child-width-1-3@m uk-grid-small" uk-grid>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">短标题</h3>
<p>短内容。</p>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">这是一个稍微长一点的标题</h3>
<p>这段内容相对较长,可能会占据多行,但由于`uk-grid-match`的存在,同行的其他卡片也会自动调整高度以保持对齐。</p>
<p class="uk-text-meta">一些额外信息。</p>
</div>
</div>
<div>
<div class="uk-card uk-card-default uk-card-body">
<h3 class="uk-card-title">另一个标题</h3>
<p>又一段内容。</p>
</div>
</div>
<!-- 更多卡片 -->
</div>uk-grid-match
<div>
这种响应式卡片布局是现代网站和应用中非常普遍的模式,它比固定列宽的表格更具视觉吸引力和功能性。它能让你的内容在任何设备上都以最佳方式呈现,同时保持了代码的简洁和可维护性。
以上就是如何用css框架UIKit实现表格布局的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号