【发布时间】:2020-03-23 04:43:25
【问题描述】:
我正在使用 flexbox CSS3 创建简单的导航,我有一个包含 3 个项目的列表,但这些项目没有指定宽度。现在我想让中间项目放置在视口的中心。当我遇到这种情况时,我的中间 li 不会以视口为中心。有没有办法让一个项目和其他元素相对于这个项目居中?
查看第一次和第二次导航之间的区别。在第二次导航时,当有一个项目时,它正确地居中于视口。我想把第一个像第二个一样居中。具有 middle 类的 Li 元素必须位于视口的中心。
编辑
一些答案是典型的将第一个和最后一个 LI 移动到 UL LIST 的边缘。这不是重点,MIDDLE li 必须位于视口的中心,第一个和最后一个 LI 应该只有填充和 width: initial
回答
我无法在此处添加答案,因此我将“codepen”链接粘贴到我想要获得的答案中
https://codepen.io/freestyle09/pen/xxxvwPm
更新代码
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
nav {
border: 1px solid red;
display: flex;
justify-content: center;
}
ul {
display: flex;
justify-content: center;
list-style: none;
border: 1px solid green;
width: 1200px;
}
ul > li {
padding: 20px;
white-space: nowrap;
border: 1px solid blue;
}
li:not(.middle) {
flex-basis: 0%;
flex-grow: 1;
}
nav .test {
display: flex;
justify-content: center;
width: 800px;
border: 2px solid pink;
padding: 20px
}
<nav>
<ul>
<li><span>Lorem ipsum sit</span></li>
<li><span>Lorem ipsum sit</span></li>
<li class='middle'><span>Vey long string, very very very long string</span></li>
<li><span>About</span></li>
<li><span>About</span></li>
</ul>
</nav>
<nav>
<div class='test'>
<p>Vey long string, very very very long string</p>
</div>
</nav>
【问题讨论】:
-
检查接受的重复答案中的第二个 sn-p