我想创建一个标题栏并将我的标题/徽标居中,但它没有完美居中。
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;
正如您所看到的,MyTitle
未正确居中。我怎样才能做到这一点?我在取出菜单按钮时实现了它,但显然我需要这个按钮。我只是希望它始终位于酒吧的中心。但它不应与菜单按钮重叠。
这就是我在菜单按钮中添加margin-right: 10px;
的原因。
答案 0 :(得分:3)
一个解决方案是使按钮0的宽度为0并且有overflow:visible
:
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;
或者只是简单地按下按钮绝对位置而不去追查任何其他属性,不要忘记让父position:relative
(我更喜欢这个):
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;
另一种解决方案是使用:after
添加第三个隐藏元素,其宽度与按钮相同,以便标题居中:
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;