源本科技 | 码上会

Tailwind CSS Display

2026/03/06
31
0

学习目标

  • 理解 Tailwind CSS 中 display 工具类的核心作用及其与原生 CSS 的对应关系

  • 掌握常用显示模式(block, inline, inline-block, flex, grid)的区别与应用场景

  • 学会使用表格相关显示类构建复杂的表格布局

  • 能够根据页面布局需求灵活选择正确的 display 类


属性概述

在 Web 开发中,display 属性决定了 HTML 元素如何在页面上渲染和排列。Tailwind CSS 将这一核心 CSS 属性封装为一系列实用的工具类,使开发者能够快速控制元素的布局行为,而无需编写自定义 CSS。

Tailwind 的 display 类涵盖了从基础的内联 / 块级元素到高级的 Flexbox 和 Grid 布局,甚至包括完整的表格显示模型。


核心工具类

基础布局类

block

块级元素

将元素显示为块级元素。块级元素默认独占一行,宽度自动填满父容器(除非指定宽度),高度由内容决定。

  • 典型应用div, p, h1-h6 等默认即为块级

  • 特点:垂直堆叠,可设置宽高

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Tailwind CSS block 示例</title>
    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="p-8 text-center">
    <h1 class="text-green-600 text-5xl font-bold mb-4">技术博客门户</h1>
    
    <div class="bg-green-100 p-4 mx-16 space-y-4">
        <span class="block h-12 bg-green-500 rounded-lg text-white leading-loose">1</span>
        <span class="block h-12 bg-green-500 rounded-lg text-white leading-loose">2</span>
        <span class="block h-12 bg-green-500 rounded-lg text-white leading-loose">3</span>
    </div>
    <p class="mt-4 text-gray-600">
        每个 span 都独占一行,垂直排列
    </p>
</body>
</html>

inline

内联元素

将元素显示为内联元素。内联元素不会独占一行,而是与其他内联元素在同一行显示。

  • 典型应用a, span, strong 等默认为内联

  • 特点:水平排列,设置的宽高无效

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Tailwind CSS inline 示例</title>
    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="p-8 text-center">
    <h1 class="text-green-600 text-5xl font-bold mb-4">技术博客门户</h1>
    
    <div class="bg-green-100 p-4 mx-16">
        <span class="inline bg-green-500 rounded-lg text-white px-4 py-2">1</span>
        <span class="inline bg-green-500 rounded-lg text-white px-4 py-2">2</span>
        <span class="inline bg-green-500 rounded-lg text-white px-4 py-2">3</span>
    </div>
    <p class="mt-4 text-gray-600">
        所有元素在同一行水平排列,宽高设置被忽略
    </p>
</body>
</html>

inline-block

内联块级元素

结合了 inlineblock 的特性:元素在同一行显示,但可以设置宽度和高度。

  • 典型应用:按钮、图标、需要固定尺寸的内联组件

  • 特点:水平排列 + 可控制尺寸

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Tailwind CSS inline-block 示例</title>
    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="p-8 text-center">
    <h1 class="text-green-600 text-5xl font-bold mb-4">技术博客门户</h1>
    
    <div class="bg-green-100 p-4 mx-16">
        <span class="inline-block w-32 h-12 bg-green-500 rounded-lg text-white leading-loose">1</span>
        <span class="inline-block w-32 h-12 bg-green-500 rounded-lg text-white leading-loose">2</span>
        <span class="inline-block w-32 h-12 bg-green-500 rounded-lg text-white leading-loose">3</span>
    </div>
    <p class="mt-4 text-gray-600">
        元素水平排列,且每个都有固定的宽度和高度
    </p>
</body>
</html>

现代布局类

flex

Flexbox 容器

将元素显示为块级 Flex 容器,启用 Flexbox 布局模型。这是构建响应式、移动端友好布局的首选方式。

  • 优势

    • 轻松对齐子元素(水平 / 垂直居中)

    • 动态调整子元素顺序无需修改 HTML

    • 自动处理间距,避免 margin 折叠问题

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Tailwind CSS flex 示例</title>
    <link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="p-8 text-center">
    <h1 class="text-green-600 text-5xl font-bold mb-4">技术博客门户</h1>
    
    <div class="flex bg-green-100 p-4 mx-16 space-x-4">
        <div class="flex-1 bg-green-500 rounded-lg text-white py-4">1</div>
        <div class="flex-1 bg-green-500 rounded-lg text-white py-4">2</div>
        <div class="flex-1 bg-green-500 rounded-lg text-white py-4">3</div>
    </div>
    <p class="mt-4 text-gray-600">
        三个子元素平均分配容器宽度,自动水平排列
    </p>
</body>
</html>

inline-flex

内联 Flex 容器

flex 类似,但容器本身表现为内联元素,适合嵌入文本流中。

grid / inline-grid

Grid 布局容器

启用 CSS Grid 布局,适用于复杂的二维布局(行 + 列)。


表格相关类

Tailwind 提供了完整的表格显示模型类,允许任何元素模拟表格结构:

类名

对应 HTML 标签

用途说明

table

<table>

将元素设为表格容器

table-caption

<caption>

表格标题

table-cell

<td>

表格单元格

table-row

<tr>

表格行

table-header-group

<thead>

表头组

table-footer-group

<tfoot>

表尾组

table-column

<col>

表格列

table-column-group

<colgroup>

表格列组

table-row-group

<tbody>

表格主体组

提示:虽然可以使用这些类构建表格布局,但在语义化要求高的场景中,仍建议优先使用原生 <table> 标签。


特殊显示类

  • hidden:完全移除元素,不占据任何空间(相当于 display: none

  • contents:移除容器本身,但其子元素保留并直接参与布局(相当于 display: contents

  • flow-root:创建新的块级格式化上下文,常用于清除浮动


类对比

下表总结了常用 display 类的关键特性:

类名

排列方式

可设宽高

独占一行

典型场景

block

垂直

段落、标题、卡片

inline

水平

文本链接、强调文字

inline-block

水平

按钮、标签、图标

flex

灵活(默认水平)

导航栏、响应式网格

grid

二维网格

复杂仪表盘、相册

hidden

不显示

-

-

条件渲染、隐藏内容


最佳实践

  1. 默认使用 blockflex
    对于大多数布局场景,block(简单堆叠)和 flex(灵活对齐)是最常用的选择。

  2. 避免过度使用 inline-block
    虽然 inline-block 可以设置宽高,但在处理大量元素时可能出现意外的空白间隙(由 HTML 换行符引起),此时 flex 是更好的替代方案。

  3. 善用 hidden 进行响应式控制
    结合 Tailwind 的响应式前缀(如 md:hidden),可以轻松实现不同屏幕下的元素显示 / 隐藏。

  4. 语义优先
    在使用 table-* 类模拟表格时,需权衡语义化与布局需求。若数据本质是表格,请使用原生 <table>


总结

  • Tailwind CSS 的 display 类提供了从基础到高级的完整布局控制能力

  • blockinlineinline-block 是传统布局基石;flexgrid 是现代响应式布局核心

  • hiddencontents 提供特殊的显示控制手段

  • 合理选择 display 类能显著提升布局效率和代码可维护性


思考题

  1. 如果需要创建一个水平导航栏,其中每个菜单项有固定宽度且垂直居中对齐,应该选择 inline-block 还是 flex?请说明理由。

  2. 在使用 inline 类的元素上设置了 w-64 h-12,实际渲染效果会如何?为什么?

  3. 假设你有一个包含浮定子元素的容器,希望避免父容器高度塌陷,除了使用 clearfix 技巧外,还可以使用哪个 Tailwind display 类来解决?其原理是什么?