通过忽略其他元素

时间:2017-12-26 08:16:55

标签: html css

我想创建一个标题栏并将我的标题/徽标居中,但它没有完美居中。



body {
  margin: 0;
  background: black;
}

.link {
  text-decoration: none;
}

#header {
  height: 80px;
  display: flex;
  align-items: center;
  background-color: #000000;
}

#headerTitleContainer {
  margin: 0 auto;
}

#headerTitle {
  color: #97d700;
}

#menuBtnContainer {
  display: inline-block;
  cursor: pointer;
  margin-right: 10px;
}

@media (min-width: 300px) {
  #menuBtnContainer {
    margin-left: 20px;
  }
}

@media (max-width: 299px) {
  #menuBtnContainer {
    margin-left: 5px;
  }
}

.menuIconBar {
  width: 35px;
  height: 5px;
  margin: 6px 0 6px 0;
  transition: 0.4s;
  background-color: #97d700;
}

<div id="header">
  <div id="menuBtnContainer">
    <div class="menuIconBar" id="menuIconBar1"></div>
    <div class="menuIconBar" id="menuIconBar2"></div>
    <div class="menuIconBar" id="menuIconBar3"></div>
  </div>
  <div id="headerTitleContainer">
    <h1><a class="link" id="headerTitle" href="/">MyTitle</a></h1>
  </div>
</div>
&#13;
&#13;
&#13;

正如您所看到的,MyTitle未正确居中。我怎样才能做到这一点?我在取出菜单按钮时实现了它,但显然我需要这个按钮。我只是希望它始终位于酒吧的中心。但它不应与菜单按钮重叠。

这就是我在菜单按钮中添加margin-right: 10px;的原因。

1 个答案:

答案 0 :(得分:3)

一个解决方案是使按钮0的宽度为0并且有overflow:visible

&#13;
&#13;
body {
  margin: 0;
  background: black;
}

.link {
  text-decoration: none;
}

#header {
  height: 80px;
  display: flex;
  align-items: center;
  background-color: #000000;
}

#headerTitleContainer {
  margin: 0 auto;
}

#headerTitle {
  color: #97d700;
}

#menuBtnContainer {
  display: inline-block;
  cursor: pointer;
  width: 0;
  overflow: visible;
}

@media (min-width: 300px) {
  #menuBtnContainer {
    margin-left: 20px;
    margin-right:-20px;
  }
}

@media (max-width: 299px) {
  #menuBtnContainer {
    margin-left: 5px;
  }
}

.menuIconBar {
  width: 35px;
  height: 5px;
  margin: 6px 0 6px 0;
  transition: 0.4s;
  background-color: #97d700;
}
&#13;
<div id="header">
  <div id="menuBtnContainer">
    <div class="menuIconBar" id="menuIconBar1"></div>
    <div class="menuIconBar" id="menuIconBar2"></div>
    <div class="menuIconBar" id="menuIconBar3"></div>
  </div>
  <div id="headerTitleContainer">
    <h1><a class="link" id="headerTitle" href="/">MyTitle</a></h1>
  </div>
</div>
&#13;
&#13;
&#13;

或者只是简单地按下按钮绝对位置而不去追查任何其他属性,不要忘记让父position:relative(我更喜欢这个):

&#13;
&#13;
body {
  margin: 0;
  background: black;
}

.link {
  text-decoration: none;
}

#header {
  height: 80px;
  display: flex;
  align-items: center;
  background-color: #000000;
  position:relative;
}

#headerTitleContainer {
  margin: 0 auto;
}

#headerTitle {
  color: #97d700;
}

#menuBtnContainer {
  display: inline-block;
  cursor: pointer;
  margin-right: 10px;
  position: absolute;
}

@media (min-width: 300px) {
  #menuBtnContainer {
    margin-left: 20px;
    margin-right:-20px;
  }
}

@media (max-width: 299px) {
  #menuBtnContainer {
    margin-left: 5px;
  }
}

.menuIconBar {
  width: 35px;
  height: 5px;
  margin: 6px 0 6px 0;
  transition: 0.4s;
  background-color: #97d700;
}
&#13;
<div id="header">
  <div id="menuBtnContainer">
    <div class="menuIconBar" id="menuIconBar1"></div>
    <div class="menuIconBar" id="menuIconBar2"></div>
    <div class="menuIconBar" id="menuIconBar3"></div>
  </div>
  <div id="headerTitleContainer">
    <h1><a class="link" id="headerTitle" href="/">MyTitle</a></h1>
  </div>
</div>
&#13;
&#13;
&#13;

另一种解决方案是使用:after添加第三个隐藏元素,其宽度与按钮相同,以便标题居中:

&#13;
&#13;
body {
  margin: 0;
  background: black;
}

.link {
  text-decoration: none;
}

#header {
  height: 80px;
  display: flex;
  align-items: center;
  background-color: #000000;
}

#header:after {
  content: "";
  width: 35px;
  margin-left: 10px;
}

#headerTitleContainer {
  margin: 0 auto;
}

#headerTitle {
  color: #97d700;
}

#menuBtnContainer {
  display: inline-block;
  cursor: pointer;
  margin-right: 10px;
}

@media (min-width: 300px) {
  #menuBtnContainer {
    margin-left: 20px;
  }
  #header:after {
    margin-right: 20px;
  }
}

@media (max-width: 299px) {
  #menuBtnContainer {
    margin-left: 5px;
  }
}

.menuIconBar {
  width: 35px;
  height: 5px;
  margin: 6px 0 6px 0;
  transition: 0.4s;
  background-color: #97d700;
}
&#13;
<div id="header">
  <div id="menuBtnContainer">
    <div class="menuIconBar" id="menuIconBar1"></div>
    <div class="menuIconBar" id="menuIconBar2"></div>
    <div class="menuIconBar" id="menuIconBar3"></div>
  </div>
  <div id="headerTitleContainer">
    <h1><a class="link" id="headerTitle" href="/">MyTitle</a></h1>
  </div>
</div>
&#13;
&#13;
&#13;