我试图在ID包装器内垂直对齐元素。我给属性display:inline-flex;作为ID包装器的伸缩容器。
但是在表现上没有区别。我期望包装器ID中的所有内容都将内联显示。为什么不是呢?
#包装{
显示:inline-flex;
/*无差异显示:flex;* /
}
身体< >
< div id = "包装" >
<标题>标题头> < /
<导航> nav < / nav >
除了除了除了< > < / >
主要主要主要< > < / >
< / > <页脚页脚页脚>
< / div >
< /身体>
好吧,我知道一开始可能会有点混乱,但display指的是父元素,所以当我们说:display: flex;时,它指的是元素而当我们说display:inline-flex;时,它也使元素本身成为内联的。
这就像创建一个div内联或块,运行下面的代码片段,你可以看到如何显示flex分解到下一行:
.inline-flex {
display: inline-flex;
}
.flex {
display: flex;
}
p {
color: red;
}
<body>
<p>Display Inline Flex</p>
<div class="inline-flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
<div class="inline-flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
<p>Display Flex</p>
<div class="flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
<div class="flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
</body>
也可以快速创建下面的图像,一目了然地显示差异:
好吧,我知道一开始可能会有点混乱,但display指的是父元素,所以当我们说:display: flex;时,它指的是元素而当我们说display:inline-flex;时,它也使元素本身成为内联的。
这就像创建一个div内联或块,运行下面的代码片段,你可以看到如何显示flex分解到下一行:
.inline-flex {
display: inline-flex;
}
.flex {
display: flex;
}
p {
color: red;
}
<body>
<p>Display Inline Flex</p>
<div class="inline-flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
<div class="inline-flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
<p>Display Flex</p>
<div class="flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
<div class="flex">
<header>header</header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
<footer>footer</footer>
</div>
</body>
也可以快速创建下面的图像,一目了然地显示差异:
为了清晰起见,使用双值显示语法
实际上,display CSS属性一次设置了两个东西:外部显示类型和内部显示类型。外部显示类型影响元素(充当容器)在其上下文中的显示方式。内部显示类型影响元素(或容器的子元素)的布局方式。
如果你使用双值显示语法,这只在一些浏览器(如Firefox)中被支持,两者之间的区别会更加明显:
Display: block相当于Display: block的流量
Display: inline相当于Display: inline流
Display: flex等价于Display: block flex
Display: inline-flex等价于Display: inline flex
Display: grid等价于Display: block grid
Display: inline-grid等价于Display: inline grid
外部显示类型:块或内联:
外部显示类型为block的元素将占用其可用的整个宽度,如<div>。外部显示类型为inline的元素将只占用它所需要的宽度,如<span>所做的那样。
内部显示类型:流动、弯曲或网格:
内部显示类型流是未指定flex或grid时的默认内部显示类型。这是我们在<p>中使用的布局子元素的方式。Flex和网格是布局子节点的新方法,每个子节点都有自己的位置。
结论:
display: flex和display: inline-flex的区别是外层显示类型,第一个外层显示类型是块,第二个外层显示类型是内联。它们都有内部显示类型的flex。
引用:
mozzilla.org上CSS Display属性的双值语法