我想要一个左侧有徽标的菜单和右侧的菜单项,我使用flexbox但这不起作用。菜单项目贴在徽标上。你知道问题出在哪里吗?
这是html:
<div class="container">
<header class="Header content">
<h1 class="title"><a href="">LOGO</a></h1>
<ul class="main_nav">
<li><a href="">Item 1</a></li>
<li><a href="">Item 2</a></li>
</ul>
<div class="clear"></div>
</header>
</div>
示例:https://jsfiddle.net/adwkkvt6/
CSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
ul {
list-style: none;
margin:0;
padding: 0;
}
.container {
float: left;
width: 100%;
}
.content {
width: 94%;
margin: 0 auto;
}
.Header, .main_nav{
display: flex;
}
.title a{
color:green;
font-size: 0.85em;
}
.main_nav li{
padding: 0 15px;
}
.main_nav{
background-color: red;
justify-content: space-between;
align-items: center;
}
.main_nav a{
font-weight: 700;
font-size: 0.85em;
color:gray;
}
答案 0 :(得分:1)
如果您删除了<div class="clear"></div>
,则可以使用justify-content: space-between
之类的
.Header, .main_nav{
display: flex;
justify-content: space-between;
}
答案 1 :(得分:1)
添加此
.title{
flex:1 0 0;
}
标题是一个孩子,所以你必须给马赫占据父div的空间,所以用flex:1 0 0
来获得徽标的空间。
flex:1 0 0
是 -
flex-grow:1;
flex-shrink:0;
flex-basis:0;
有关flex Updated fiddle link的更多信息。
<强> {{3}} 强>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
.container {
float: left;
width: 100%;
}
.content {
width: 94%;
margin: 0 auto;
}
.Header,
.main_nav {
display: flex;
}
.title {
flex: 1 0 0;
}
.title a {
color: green;
font-size: 0.85em;
}
.main_nav li {
padding: 0 15px;
}
.main_nav {
background-color: red;
justify-content: space-between;
align-items: center;
}
.main_nav a {
font-weight: 700;
font-size: 0.85em;
color: gray;
}
<div class="container">
<header class="Header content">
<h1 class="title"><a href="">LOGO</a></h1>
<ul class="main_nav">
<li><a href="">Item 1</a></li>
<li><a href="">Item 2</a></li>
</ul>
<div class="clear"></div>
</header>
</div>
答案 2 :(得分:0)
您必须指定Flexbox项目的位置:
.Header, .main_nav{
display: flex;
justify-content: space-between;
}
justify-content
的默认值为flex-start
,它会将每个项目推送到Flexbox的左侧。