我有一个包含display: flex
的容器<div>
,它有一个子容器<a>
。
我怎样才能使孩子显示为“内联”?
具体地说,如何使子对象的宽度由其内容决定,而不扩展到父对象的宽度?
我尝试过
我将孩子设置为display: inline-flex
,但它仍然占据了整个宽度。我也尝试了所有其他显示属性,但没有任何效果。
示例:
.container {
background: red;
height: 200px;
flex-direction: column;
padding: 10px;
display: flex;
}
a {
display: inline-flex;
padding: 10px 40px;
background: pink;
}
<div class="container">
<a href="#">Test</a>
</div>
4条答案
按热度按时间3vpjnl9f1#
在容器上使用
align-items: flex-start
,或在弹性项目上使用align-self: flex-start
。不需要
display: inline-flex
。Flex容器的初始设置为
align-items: stretch
。这意味着Flex项目将沿着横轴扩展以覆盖容器的整个长度。align-self
属性的作用与align-items
相同,不同之处在于align-self
应用于 *flex项 *,而align-items
应用于 *flex容器 *。默认情况下,
align-self
继承align-items
的值。由于容器是
flex-direction: column
,横轴是水平的,align-items: stretch
会尽可能地扩展子元素的宽度(column
设置也是display: inline-flex
不起作用的原因)。您可以在容器上使用
align-items: flex-start
(由所有弹性项目继承)或在项目上使用align-self: flex-start
(仅限于单个项目)覆盖默认值。在此处了解有关沿着 * 横轴 * 伸缩对齐的更多信息:
在此处了解有关沿着 * 主轴 * 伸缩对齐的更多信息:
0tdrvxhp2#
除了
align-self
之外,您还可以考虑使用自动边距,其作用几乎相同4uqofj5v3#
width: min-content
也会产生相同的结果。IE11中不支持,如果这对您很重要:https://caniuse.com/mdn-css_properties_width_min-contentpvcm50d14#
截至2023年,您还可以:
width: -webkit-fill-available