我试图在ID包装器内垂直对齐元素。我给属性display:inline-flex;作为ID包装器的伸缩容器。

但是在表现上没有区别。我期望包装器ID中的所有内容都将内联显示。为什么不是呢?

#包装{ 显示:inline-flex; /*无差异显示:flex;* / } 身体< > < div id = "包装" > <标题>标题头> < / <导航> nav < / nav > 除了除了除了< > < / > 主要主要主要< > < / > < / > <页脚页脚页脚> < / div > < /身体>


当前回答

Flex和inline-flex都将Flex布局应用于容器的子容器。带有display:flex的容器行为类似于块级元素本身,而display:inline-flex使容器行为类似于内联元素。

其他回答

Flex和inline-flex都将Flex布局应用于容器的子容器。带有display:flex的容器行为类似于块级元素本身,而display:inline-flex使容器行为类似于内联元素。

您可以内联显示伸缩项,前提是您的假设是基于首先需要灵活的内联项。使用flex意味着一个灵活的块级元素。

最简单的方法是使用flex容器,并将其子容器设置为flex属性。在代码方面,它看起来像这样:

.parent{
   display: inline-flex;
}

.children{
   flex: 1;
}

Flex: 1表示比率,类似于元素宽度的百分比。

检查这两个链接,以查看简单的Flexbox实例:

https://njbenjamin.com/bundle-3.htm https://njbenjamin.com/bundle-4.htm

如果你用第一个例子:

https://njbenjamin.com/flex/index_1.htm

您可以摆弄浏览器控制台,在flex和内联flex之间更改容器元素的显示。

显示:只对容器的伸缩项或子项应用伸缩布局。因此,容器本身仍然是块级元素,因此占据了屏幕的整个宽度。

这将导致每个伸缩容器移动到屏幕上的新行。

显示:内联伸缩将伸缩布局应用到伸缩项或子项以及容器本身。结果,容器就像子元素一样表现为内联flex元素,因此只占用它的项/子元素所需的宽度,而不是整个屏幕的宽度。

这将导致显示为内联伸缩的两个或多个伸缩容器依次在屏幕上并排对齐,直到获得屏幕的整个宽度。

打开整页以便更好地理解

.item { width : 100px; height : 100px; margin: 20px; border: 1px solid blue; background-color: yellow; text-align: center; line-height: 99px; } .flex-con { flex-wrap: wrap; /* <A> */ display: flex; /* 1. uncomment below 2 lines by commenting above 1 line */ /* <B> */ /* display: inline-flex; */ } .label { padding-bottom: 20px; } .flex-inline-play { padding: 20px; border: 1px dashed green; /* <C> */ width: 1000px; /* <D> */ display: flex; } <figure> <blockquote> <h1>Flex vs inline-flex</h1> <cite>This pen is understand difference between flex and inline-flex. Follow along to understand this basic property of css</cite> <ul> <li>Follow #1 in CSS: <ul> <li>Comment <code>display: flex</code></li> <li>Un-comment <code>display: inline-flex</code></li> </ul> </li> <li> Hope you would have understood till now. This is very similar to situation of `inline-block` vs `block`. Lets go beyond and understand usecase to apply learning. Now lets play with combinations of A, B, C & D by un-commenting only as instructed: <ul> <li>A with D -- does this do same job as <code>display: inline-flex</code>. Umm, you may be right, but not its doesnt do always, keep going !</li> <li>A with C</li> <li>A with C & D -- Something wrong ? Keep going !</li> <li>B with C</li> <li>B with C & D -- Still same ? Did you learn something ? inline-flex is useful if you have space to occupy in parent of 2 flexboxes <code>.flex-con</code>. That's the only usecase</li> </ul> </li> </ul> </blockquote> </figure> <br/> <div class="label">Playground:</div> <div class="flex-inline-play"> <div class="flex-con"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> </div> <div class="flex-con"> <div class="item">X</div> <div class="item">Y</div> <div class="item">Z</div> <div class="item">V</div> <div class="item">W</div> </div> </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>

也可以快速创建下面的图像,一目了然地显示差异: