dispaly: inline-flex 和 display: flex 的区别

display: inline-flex 和 display: flex 都是 CSS 中用于创建弹性盒子布局(Flexbox)的属性值,但它们之间有一些关键的区别,主要体现在元素如何在页面上被渲染和它们对周围元素的影响。

主要区别

1,块级 vs 行内块级

display: flex:将一个元素设置为块级弹性容器。这意味着它会像其他块级元素(如 <div>)一样开始新的一行,并且可以设置宽度、高度等属性,不会与其他块级元素在同一行显示。

display: inline-flex:将一个元素设置为行内块级弹性容器。与 inline-block 类似,它允许该元素与其他行内元素在同一行显示,而不会强制新行开始。但是,它仍然保持了作为弹性容器的所有功能。

2,外部显示类型(External Display Type)

对于 display: flex,其外部显示类型为块级(block),这意味着它遵循块级元素的布局规则。

而 display: inline-flex 的外部显示类型为行内块级(inline-block),这使得它可以和其他行内元素一起出现在同一行内,除非空间不足导致换行。

3,布局影响

使用 display: flex 时,该元素会占据整个可用宽度(如果未明确指定宽度的话),并且通常会独占一行。

使用 display: inline-flex 时,元素仅占用其内容所需的宽度,并允许其他行内或行内块级元素与其并排显示在同一行中。

下面来看代码示例

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
	<style>
		.flex .box {

			width: 500px;
			background: yellow;
			display: flex;
			justify-content: space-between;
		}

		.inline-flex .box {
			width: 500px;
			background: pink;
			display: inline-flex;
			justify-content: space-between;
		}
	</style>
</head>

<body>
	<div class="flex">
		<div class="box">
			<span>123</span>
			<span>456</span>
		</div>
		<span>额外的</span>
	</div>
	<div class="inline-flex">
		<div class="box">
			<span>123</span>
			<span>456</span>
		</div>
		<span>额外的</span>
	</div>
</body>

</html>

效果图

相关推荐
奕鼎竜瑆20 分钟前
Chrome 插件开发实战指南:从入门到发布
前端·chrome
广州华水科技26 分钟前
水库北斗GNSS变形监测系统及单北斗形变监测一体机应用解析
前端
可乐鸡翅yeah_1 小时前
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样
开发语言·javascript·ios·音视频·safari·m3u8·m3u8在线播放
anew___2 小时前
《从零手写操作系统 (20):ELF加载器——让OS读懂现代编译器》
java·服务器·前端
ss2732 小时前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
对空六课2 小时前
动态按钮ID变化时的稳定埋点标识设计
前端·数据分析
福兮说2 小时前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
吴声子夜歌2 小时前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
小的时候可菜了2 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
liangshanbo12152 小时前
Webpack vs Vite 底层原理高频追问的问题
前端·webpack·node.js