css - Flex-wrap 和对齐
问题描述
我在 flexbox 中有一个 div,其中有 2 个元素,它们之间有空格。我还有一个flex-wrap
容器和每个元素的 flex auto。
有没有办法让第一个元素在换行之前在左侧具有文本对齐,在文本对齐到中心之后。
问题是我不知道元素何时包装。
这里有一个例子:https ://jsfiddle.net/bj9km7vg/1/
.align-center{
text-align: center; // it have to be visible only when the div is wrap and 100% of the with
}
谢谢大家,
解决方案
您可以以不同的方式执行此操作,无需考虑text-align
元素宽度,因为它只有一行。基本上,您的文本将始终居中,但宽度将适合内容或全宽:
header {
display: flex;
flex-wrap: wrap;
}
header div:first-child {
text-align:center; /*center by default*/
flex-grow:1; /*will be full width after the wrap*/
}
header div:last-child {
flex-grow:100; /*make it consume more space to have a left alignment before wrap*/
}
ul {
margin: 0;
padding: 0;
display: flex;
justify-content:center;
}
li {
margin: 0 1em;
}
<header>
<div class="align-center">
<a href="">Have to be align</a>
</div>
<div>
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
</div>
</header>
更新
要控制边距,您可以考虑第二个容器内的伪元素:
header {
display: flex;
flex-wrap: wrap;
}
header div:first-child {
text-align:center; /*center by default*/
flex-grow:1; /*will be full width after the wrap*/
}
header div:last-child {
flex-grow:100; /*make it consume more space to have a left alignment before wrap*/
display: flex;
flex-wrap:wrap;
}
ul {
margin: 0;
padding: 0;
display: flex;
flex-grow:1;
}
li {
margin: 0 1em;
}
header div:last-child::before {
content:"";
width:6em; /*your margin*/
}
<header>
<div class="align-center">
<a href="">Have to be align</a>
</div>
<div>
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
</div>
</header>
推荐阅读
- javascript - 猫鼬将所有倾斜的 ObjectIds 转换为字符串格式
- c# - Coap 服务器未经授权的访问 C#
- c# - 生成素数序列,Loop Break vs LINQ TakeWhile
- security - 未经授权的设备登录了我的 Google 帐户。接下来我该怎么办?
- c# - 使用附加参数在 SqlCommand 中传递数组参数
- angular - 角度材料选项卡 - 悬停时更改选项卡
- excel - 使用 IIS 应用程序池将 Excel 导入 SQL 的问题
- python - 将低级列与熊猫中每一行的列表相乘
- javascript - 想要将“onclick”处理程序与我的 html 标记分开
- php - Ceil 数字到最接近的非零千