html - 均匀间隔子级,但将父级与 flex 右对齐
问题描述
我有以下代码来设置菜单。这个想法是让菜单项水平间隔均匀,但当有额外空间时,它们之间的间隔不要太远。如果有多余的空间,现在菜单向左对齐(绿色朝向黄色的左侧)。
目的是使菜单与右侧对齐。如何做到这一点?
.wrapper {
display: flex;
height: 5em;
}
.left {
flex: 1;
display: flex;
}
.middle {
flex: 4;
background: #ffc;
display: flex!important; /* this comes from the library i'm using */
}
ul {
display: flex;
max-width: 200px;
}
li {
list-style: none;
flex: 1;
background: #cfc;
text-align: center;
}
.right {
flex: 1;
}
<div class="wrapper">
<div class="left">
<div class="tagline">Left</div>
</div>
<div class="middle">
<ul>
<li>menu item</li>
<li>menu item</li>
<li>menu item</li>
<li>menu item</li>
</ul>
</div>
<div class="right">
right
</div>
</div>
解决方案
要将菜单项向右对齐margin-left: auto
,我们可以在ul
. 也许您也想将默认值 padding
设置ul
为零。
请参阅下面的演示:
.wrapper {
display: flex;
height: 5em;
}
.left {
flex: 1;
display: flex;
}
.middle {
flex: 4;
background: #ffc;
display: flex!important; /* this comes from the library i'm using */
}
ul {
display: flex;
max-width: 200px;
margin-left: auto; /* ADDED */
padding: 0; /* ADDED */
}
li {
list-style: none;
flex: 1;
background: #cfc;
text-align: center;
}
.right {
flex: 1;
}
<div class="wrapper">
<div class="left">
<div class="tagline">Left</div>
</div>
<div class="middle">
<ul>
<li>menu item</li>
<li>menu item</li>
<li>menu item</li>
<li>menu item</li>
</ul>
</div>
<div class="right">
right
</div>
</div>
推荐阅读
- javascript - 如何在不返回浏览器的情况下使用 JavaScript 返回上一个路由?
- mysql - 如何将csv文件的某些列导入mysql phpmyadmin
- mongodb - MongoDB 的查询优化器有多可靠?
- c# - 在 C# 中替换 xml 字符串时出错
- php - 如何回显在 unlink 方法中的函数中返回的变量
- json - 将 JSON 转换为缺少字段名的 CSV
- c++ - 使用基于此标志的条件语句是否比添加更多代码行更有效?
- .net-core - .Net Core 查询来自不同微服务的记录
- javascript - 使用“relay-test-utils”测试反应组件
- swift - 你能在 Swift 中测试目标配置吗?