移动菜单按钮内的栏不会出现在垂直中心

时间:2017-08-22 09:29:56

标签: html css css3 flexbox vertical-alignment

使用下面的代码,我在.container内创建了一个移动菜单按钮.navigation。到目前为止,这一切都很好。

但是,我希望移动菜单按钮内的.bars垂直居中。我尝试使用vertical-align: center;,但无法使其正常工作。

我需要更改代码,以便移动菜单按钮.bars中的.container垂直居中?

您还可以找到我的代码here



body {
  margin: 0;
}

.header {
  width: 80%;
  height: 30%;
  margin-left: 10%;
  display: flex;
  justify-content: space-between;
  position: fixed;
  top: 0;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: yellow;
}

.image {
  width: 30%;
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: green;
}

.navigation {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
}

.container {
 height: 100%;
 width: 20%;
 cursor: pointer;
 float: right;
 box-sizing: border-box;
 border-style: solid;
 border-width: 1px;
 background-color: fuchsia;
}

.bars {
 height: 100%;
 width: 100%;
 vertical-align: center;
}

.bar1, .bar2, .bar3 {
 height: 10%;
 width: 100%;
 background-color: #333;
 margin-top: 8%;
}

<div class="header">	

 <div class="image">
 Image
  </div>
  
  <nav class="navigation"> 
  
    <div class="container">
      <div class="bars">
        <div class="bar1"></div>
        <div class="bar2"></div>
        <div class="bar3"></div>
      </div>
    </div>	
    
  </nav>
  
</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

由于您已在使用flexbox,因此请将以下样式添加到bars

display: flex;
justify-content: center;
flex-direction: column;

并为margin: 4% 0bar1bar2

添加bar3

见下面的演示:

body {
  margin: 0;
}

.header {
  width: 80%;
  height: 30%;
  margin-left: 10%;
  display: flex;
  justify-content: space-between;
  position: fixed;
  top: 0;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: yellow;
}

.image {
  width: 30%;
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: green;
}

.navigation {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
}

.container {
  height: 100%;
  width: 20%;
  cursor: pointer;
  float: right;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: fuchsia;
}

.bars {
  height: 100%;
  width: 100%;
  display: flex;
  justify-content: center;
  flex-direction: column;
}

.bar1,
.bar2,
.bar3 {
  height: 10%;
  width: 100%;
  background-color: #333;
  margin: 4% 0;
}
<div class="header">
  <div class="image">
    Image
  </div>
  <nav class="navigation">
    <div class="container">
      <div class="bars">
        <div class="bar1"></div>
        <div class="bar2"></div>
        <div class="bar3"></div>
      </div>
    </div>
  </nav>
</div>

答案 1 :(得分:0)

您可以使用(?P<firstName>[\x{00c0}-\x{01ff}a-zA-Z'-]{2,})(\s([\x{00c0}-\x{01ff}a-zA-Z'-]{1,})*)?\s(?P<lastName>[\x{00c0}-\x{01ff}a-zA-Z'-]{2,})

display:flex

答案 2 :(得分:0)

最简单的方法是在display: flex;上使用.bars;然后flex-direction: column;justify-content: center;

.bars {
 height: 100%;
 width: 100%;

 /* new stuff here: */
 display: flex;
 flex-direction: column;
 justify-content: center;
}

这会有效,但条形图看起来不太正确,因为.bar1的{​​{1}} margin-top。如果您只将8%应用于margin-top.bar2,那么它看起来会正确。

.bar3

.bar2, .bar3 {
  margin-top: 8%;
}
body {
  margin: 0;
}

.header {
  width: 80%;
  height: 30%;
  margin-left: 10%;
  display: flex;
  justify-content: space-between;
  position: fixed;
  top: 0;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: yellow;
}

.image {
  width: 30%;
  display: flex;
  justify-content: center;
  text-align: center;
  align-items: center;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
  background-color: green;
}

.navigation {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  border-style: solid;
  border-width: 1px;
}

.container {
 height: 100%;
 width: 20%;
 cursor: pointer;
 float: right;
 box-sizing: border-box;
 border-style: solid;
 border-width: 1px;
 background-color: fuchsia;
}

.bars {
 height: 100%;
 width: 100%;
 
 /* new stuff here: */
 display: flex;
 flex-direction: column;
 justify-content: center;
}

.bar1, .bar2, .bar3 {
 height: 10%;
 width: 100%;
 background-color: #333;
}
.bar2, .bar3 {
  margin-top: 8%;
}