使用flexbox进行对齐并且可以正常工作,但我也无法将分离的中点对齐;它们是通过伪类使用css-content制作的。此外,我想知道是否有更好的方法来垂直居中项目,而不是通过添加填充来伪造它。
这是我的代码和fiddle:
ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-between;
}
li.home {
padding: 0;
}
li {
vertical-align: middle;
padding-top: 10px;
}
nav {
border-bottom: 1px solid black;
border-top: 1px solid black;
height: 40px;
}
li::after {
//padding: 0em 0.4em;
content: '\00b7';
pointer-events: none;
}
li.home::after,
li.last::after {
content: none;
text-align: justify;
}
<nav id="main-menu">
<ul>
<li class="home">
<a href="/de"><img src="http://dummyimage.com/40x40/000/fff"></a>
</li>
<li class="second"><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">One more Item</a></li>
<li><a href="#">Another Item</a></li>
<li class="last"><a href="#">Contact</a></li>
</ul>
</nav>
答案 0 :(得分:3)
body { margin: 0; } /* 1 */
nav {
height: 40px;
border-bottom: 1px solid black;
border-top: 1px solid black;
}
ul {
display: flex;
justify-content: space-between; /* 2 */
align-items: center; /* 2 */
height: 100%;
list-style: none;
padding: 0;
margin: 0;
}
li:not(.home) {
flex: 1; /* 3 */
height: 100%;
border: 1px dashed red; /* 4 */
background-color: lightgreen; /* 4 */
}
li:not(.home) > a { /* 5 */
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
li img { vertical-align: bottom; } /* 6 */
li { position: relative; } /* 7 */
li:not(.home):not(:last-child)::before { /* 8 */
position: absolute;
content: '\26AB'; /* 4 */
left: 100%;
top: 50%;
transform: translate(-50%,-50%);
z-index: 1;
pointer-events: none;
}
&#13;
<nav id="main-menu">
<ul>
<li class="home">
<a href="/de"><img src="http://dummyimage.com/40x40/000/fff"></a>
</li>
<li class="second"><a href="#">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">One more Item</a></li>
<li><a href="#">Another Item</a></li>
<li class="last"><a href="#">Contact</a></li>
</ul>
&#13;
注意:
body
element flex-grow
property 答案 1 :(得分:1)
您可以使用array
垂直居中项目,但我认为使用align-self: center;
或:before
等伪元素无法实现点分隔符。
我建议对分隔符使用单独的:after
标记,如下所示:
请注意,您的图片元素需要<li>
才能拥有合适的高度。
display: block;
&#13;
ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-between;
}
img {
display: block;
}
li.home {
padding: 0;
}
li {
align-self: center;
}
nav {
border-bottom: 1px solid black;
border-top: 1px solid black;
height: 40px;
}
&#13;