我有以下菜单(.logo
和.socials
由JS放在里面)我需要.logo
总是在页面中间,其他项目同样包围。< / p>
<ul class="menu">
<li><a href="/">Homepage</a></li>
<li><a href="/contact/">Contact</a></li>
<li><a href="/documentary/">Documentary</a></li>
<div class="logo"></div>
<li><a href="/stories/">Stories</a></li>
<li><a href="/weddings/">Weddings</a></li>
<div class="socials">
<a href="https://www.instagram.com"><i class="sprite-instagram">i</i></a>
<a href="https://www.facebook.com"><i class="sprite-email">f</i></a>
</div>
</ul>
使用CSS对项目进行居中,但我不知道如何将.logo
放在中间位置:
.menu {
bottom: 0;
margin-left: auto;
margin-right: auto;
left: 0;
right: 0;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
position: relative;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
如果你想看看,这是小提琴:https://jsfiddle.net/kybernaut/134L25vc/1/
答案 0 :(得分:2)
您正在使用Flex容器,该容器使用空间分布来定位项目。
为了使徽标水平居中,左侧和右侧的内容需要占用相同的空间。这将创造平衡,徽标可以居中。
或者,您可以使用绝对定位从正常流中移除徽标。然后使用left
和transform
将徽标置于中心位置。
这两个方法(和其他方法)都在这里详细介绍:
以下是一个例子:
.menu {
display: flex;
position: relative;
justify-content: space-around;
height: 80px;
margin-left: auto;
margin-right: auto;
padding: 0;
}
.menu > * {
flex: 1; /* see linked explanation below */
list-style-type: none;
border: 1px dashed black;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
}
.logo {
flex: 0 0 200px; /* also try `flex: 2` */
background-color: red;
}
<ul class="menu">
<li><a href="/">Homepage</a></li>
<li><a href="/contact/">Contact</a></li>
<li><a href="/documentary/">Documentary</a></li>
<div class="logo"></div>
<li><a href="/stories/">Stories</a></li>
<li><a href="/weddings/">Weddings</a></li>
<div class="socials">
<a href="https://www.instagram.com"><i class="sprite-instagram">i</i></a>
<a href="https://www.facebook.com"><i class="sprite-email">f</i></a>
</div>
</ul>
flex: 1
如何运作:
答案 1 :(得分:0)
另一个li
通过推动它使弹性项更小。这是不可能的,而你的所有li
都没有足够的空间来展示。
答案 2 :(得分:0)
这段代码应该适合你(我觉得你不想要子弹点,所以我添加了(list-style:none)....
.menu {
sisplay: -webkit-box;
display: -ms-flexbox;
display: flex;
width: 100%;
position: relative;
-ms-flex-pack: distribute;
justify-content: space-around;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
list-style: none;
padding: 0px;
margin: 0px;
}
.menuitem {
width: 14.28%;
text-align: center;
}
.logo {
width: 14.28%;
text-align: center;
}
<ul class="menu">
<li class="menuitem"><a href="/">Homepage</a></li>
<li class="menuitem"><a href="/contact/">Contact</a></li>
<li class="menuitem"><a href="/documentary/">Documentary</a></li>
<li class="logo"><img src="https://www.logogarden.com/wp-content/uploads/lg-index/Example-Logo-6.jpg" width="100%"></li>
<li class="menuitem"><a href="/stories/">Stories</a></li>
<li class="menuitem"><a href="/weddings/">Weddings</a></li>
<li class="menuitem">
<div class="socials">
<a href="https://www.instagram.com"><i class="sprite-instagram">i</i></a>
<a href="https://www.facebook.com"><i class="sprite-email">f</i></a>
</div>
</li>
</ul>