为什么菜单项不在div的右边?

时间:2017-07-28 14:09:57

标签: css

我想要一个左侧有徽标的菜单和右侧的菜单项,我使用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;
}

3 个答案:

答案 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的左侧。