【发布时间】:2016-12-26 00:31:43
【问题描述】:
我有一个 flex-box(参见下面的 sn-p 示例)。
我想设置它,以便在所有情况下,<h2> 都位于 flex-box 的中心,而其他跨度将根据它们的标记围绕它流动。
我基本上是在寻找align-self CSS 代码,但它是针对主轴,而不是横轴(this 可能有助于解释我的要求)。
我还将margin: auto; 应用于我的<h2>,这是我在阅读this 后了解到的(很棒的页面,但仍然给我留下了以下问题——除非我没有完全理解它)。
这是我得到的代码:
.container {
align-items: center;
border: 1px solid red;
display: flex;
justify-content: center;
width: 100%;
}
h2 {
margin: auto;
]
<div class="container">
<h2>I'm an h2</h2>
<span>I'm span 1</span>
<span>I'm span 2</span>
<span>I'm span 3</span>
</div>
<div class="container">
<span>I'm span 1</span>
<span>I'm span 2</span>
<span>I'm span 3</span>
<h2>I'm an h2</h2>
<span>I'm span 4</span>
<span>I'm span 5</span>
<span>I'm span 6</span>
</div>
<div class="container">
<span>I'm span 1</span>
<span>I'm span 2</span>
<h2>I'm an h2</h2>
<span>I'm span 3</span>
</div>
完全重申我的问题:我想知道如何将
<h2>放在我的页面的中心,这样无论其他<span>s 在哪里,<h2>将始终处于死亡 strong> 弹性盒的中心。
谢谢。
附:我愿意使用 JS 和 jQuery,但更喜欢纯 CSS 方式来实现这一点。
更新
这是@Michael_B回答后更新
他的回答让我思考。虽然我还没有找到这样做的方法,但我相信以下是朝着正确方向迈出的一步:
HTML
<div class="container">
<div>
<span>I'm span 1</span>
<span>I'm span 2</span>
<span>I'm span 3</span>
</div>
<h2>I'm an h2</h2>
<div>
<span>I'm span 4</span>
<span>I'm span 5</span>
<span>I'm span 6</span>
</div>
</div>
CSS
.container div {
flex: 1 1 auto;
text-align: center;
}
h2 {
flex: 0 0 auto;
margin: auto;
}
.container {
align-items: center;
border: 1px solid red;
display: flex;
justify-content: center;
width: 100%;
}
.container div {
flex: 1 1 auto;
text-align: center;
}
h2 {
flex: 0 0 auto;
margin: auto;
}
<div class="container">
<div>
</div>
<h2>I'm an h2</h2>
<div>
<span>I'm span 1</span>
<span>I'm span 2</span>
<span>I'm span 3</span>
</div>
</div>
<div class="container">
<div>
<span>I'm span 1</span>
<span>I'm span 2</span>
<span>I'm span 3</span>
</div>
<h2>I'm an h2</h2>
<div>
<span>I'm span 4</span>
<span>I'm span 5</span>
<span>I'm span 6</span>
</div>
</div>
<div class="container">
<div>
<span>I'm span 1</span>
<span>I'm span 2</span>
</div>
<h2>I'm an h2</h2>
<div>
<span>I'm span 3</span>
</div>
</div>
理论上,虽然<span>s 的总数未知,但已知的是总共会有三个元素:<div><h2><div>
正如你在上面的 sn-p 中看到的,我已经尝试(
flex: 0 0 auto和flex: 1 1 auto等)让它工作但没有成功。谁能告诉我这是否是朝着正确方向迈出的一步,以及如何将其推向实际产品?
再次感谢您。
【问题讨论】:
标签: javascript jquery html css flexbox