【CSS篇】display: block、inline 与 inline-block 的区别详解

在 CSS 布局中,display: blockdisplay: inlinedisplay: inline-block 是最常用的三种显示方式。它们决定了元素在页面中的呈现行为,包括是否独占一行、是否可以设置宽高、如何排列等。

本文将深入解析这三种 display 属性值的区别,并结合实际开发场景帮助你更好地理解和使用它们。


📌 一、基本概念回顾

display 类型 是否独占一行 可否设置宽高 可否设置 margin/padding 元素排列方式
block 自上而下垂直排列
inline 水平方向 ✅,垂直方向 ❌ 同行排列
inline-block 同行排列

🧩 二、逐项对比分析

1. display: block

特点:

  • 独占一行;
  • 可以设置 widthheight
  • 可以设置任意方向的 marginpadding
  • 默认从上到下垂直排列多个块级元素;

常见元素:

  • <div><p><h1><h6><ul><li> 等。

示例:

html 复制代码
<div style="display: block; width: 100px; height: 50px; background: lightblue;">块级元素</div>
<div style="display: block; width: 100px; height: 50px; background: lightgreen;">另一个块级元素</div>

两个 div 会分别占据一行。


2. display: inline

特点:

  • 不独占一行;
  • 不能设置宽高
  • 只能设置水平方向(left/right)的 margin 和 padding
  • 垂直方向(top/bottom)的 margin 和 padding 会被忽略;
  • 多个 inline 元素在同一行内依次排列;

常见元素:

  • <span><a><strong><em> 等。

示例:

html 复制代码
<span style="display: inline; margin: 10px 20px; background: yellow;">行内元素1</span>
<span style="display: inline; margin: 10px 20px; background: pink;">行内元素2</span>

两个 span 会在同一行显示,并且 margin 左右生效,上下无效。


3. display: inline-block

特点:

  • 不独占一行;
  • 可以设置宽高
  • 可以设置所有方向的 margin 和 padding
  • 多个 inline-block 元素在同一行内依次排列;
  • 结合了 block 和 inline 的优点;

常见用途:

  • 导航栏菜单;
  • 按钮组;
  • 行内布局中需要固定大小的元素;

示例:

html 复制代码
<div style="display: inline-block; width: 100px; height: 50px; background: lightblue;">inline-block 元素1</div>
<div style="display: inline-block; width: 100px; height: 50px; background: lightgreen;">inline-block 元素2</div>

两个 div 会并排显示,并且宽度和高度都生效。


📌 三、常见问题与注意事项

1. inline-block 元素之间的空白间隙问题

当你使用 display: inline-block 排列多个元素时,HTML 中的换行或空格可能会导致元素之间出现"空隙"。

html 复制代码
<div style="display: inline-block; width: 100px; background: red;">A</div>
<div style="display: inline-block; width: 100px; background: blue;">B</div>

解决方案:

  • 删除 HTML 中的换行符;
  • 设置父容器 font-size: 0,然后子元素重新设置字体大小;
  • 使用负边距 margin-right: -4px
  • 或者直接使用 Flexbox 布局替代 inline-block。

2. 何时使用 block、inline、inline-block?

场景 推荐 display 值
需要控制宽高、独立成块 block
需要与其他元素同行显示 inline / inline-block
需要同行显示 + 控制宽高 inline-block
隐藏元素 none
替代表格布局 table, table-cell
继承父元素显示方式 inherit

🧠 四、总结对比表

特性 block inline inline-block
是否独占一行
可否设置宽高
可否设置 margin 水平方向 ✅
可否设置 padding 水平方向 ✅
多个元素排列方式 垂直排列 同行排列 同行排列
典型代表元素 <div> <span> 手动设置的元素
相关推荐
落魄江湖行3 分钟前
入门篇二:Nuxt 4路由自动生成:告别手动配置路由的日子
前端·vue.js·typescript·nuxt4
CQU_JIAKE1 小时前
4.4【Q】
java·前端·javascript
小陈工1 小时前
Python Web开发入门(十二):使用Flask-RESTful构建API——让后端开发更优雅
开发语言·前端·python·安全·oracle·flask·restful
木斯佳1 小时前
前端八股文面经大全:字节前端一面(2026-04-03)·面经深度解析
前端·面试题·面经
xiaotao1311 小时前
第八章:实战项目案例
前端·vue.js·vite·前端打包
We་ct1 小时前
JS手撕:性能优化、渲染技巧与定时器实现
开发语言·前端·javascript·面试·性能优化·定时器·性能
taWSw5OjU1 小时前
vue对接海康摄像头-H5player
开发语言·前端·javascript
huwuhang2 小时前
跨平台电子书阅读器 | Readest最新版 安卓版+PC版全平台
android·前端·javascript
C澒2 小时前
AI 生码:RAG 检索优化实现可评估、可回溯工程化
前端·ai编程
条tiao条2 小时前
不止语法糖:TypeScript Set 与 Map 深度解析
前端·javascript·typescript