将文本居中放置在浮动元素之间

Center a text between to floating elements

我正在为我的网站制作导航栏。导航栏包含一个菜单图标、一个 header 'Reviews' 和一个搜索图标。图标需要与边框保持 3% 的距离。问题是我无法弄清楚如何将文本居中。我认为问题出在浮动元素上,我不知道如何将浮动元素与其他元素(在本例中为两个图标)居中。我希望有人能给我一个答案:)

这是结果:

the navigation bar

* {
  padding: 0px;
  margin: 0px;
}

#nav {
  width: 94%;
  background-color: blue;
  margin: 3%;
}

.menuButton {
  float: left;
}

#nav h1 {
  float: left;
}

.searchButton {
  float: right;
}
<!DOCTYPE html>
<html>

<head>
  <title> Reviews </title>
  <link rel="stylesheet" type="text/css" href="main.css">
  <meta charset="utf-8">
</head>

<div id="dropMenu"></div>

<body>
  <div id="nav">
    <img src="menu.jpg" class="menuButton">
    <h1> REVIEWS. </h1>
    <img src="search.jpg" class="searchButton">

  </div>

  <div id="content"></div>

  <div id="footer"></div>
</body>
</html>

你期待这个输出吗

Check output in codepen.io

* {
  padding: 0;
  margin: 0;
}

#nav {
  width: 100%;
  background-color: blue;
  margin: 3%;
}

.menuButton {
  float: left;
}



.searchButton {
  float: right;
}

.a {
  text-align: center;
}
<head>
  <title> Reviews </title>
  <link rel="stylesheet" type="text/css" href="main.css">
  <meta charset="utf-8">
</head>


<div id="dropMenu">



</div>

<body>

  <div id="nav">
    <img src="menu.jpg" class="menuButton">
    <h1 class="a"> REVIEWS. </h1>
    <img src="search.jpg" class="searchButton">


  </div>

  <div id="content">



  </div>

  <div id="footer">



  </div>


</body>

您可以使用 flex boxmodel 和 margins :

* {
  padding: 0px;
  margin: 0px;
}

#nav {
  width: 94%;
  background-color: blue;
  /* see center */
  background-image:linear-gradient(to right, transparent 50%, rgba(0,0,0,0.5) 50%);
  margin: 3%;
  display: flex;
  justify-content: center;
}

.menuButton {
  float: left;
  margin: auto auto auto 0;
}

#nav h1 {
  float: left;
}

.searchButton {
  margin: auto 0 auto auto;
}
<!DOCTYPE html>
<html>
<head>
  <title> Reviews </title>
  <link rel="stylesheet" type="text/css" href="main.css">
  <meta charset="utf-8">
</head>
<div id="dropMenu"></div>
<body>
  <div id="nav">
    <img src="menu.jpg" class="menuButton">
    <h1> REVIEWS. </h1>
    <img src="search.jpg" class="searchButton">
  </div>
  <div id="content"></div>
  <div id="footer"></div>
</body>
</html>

编辑.

只考虑float,那么float元素应该在flux中领先,让其他non-floatting元素介于两者之间, 所以 h1 可以站在中间得到 text-align 或者通过 displaymargin 居中。

float 不允许元素垂直居中,而 flex 允许。

  • text-align 并且 h1
  • 没有浮动

* {
  padding: 0px;
  margin: 0px;
}

#nav {
  width: 94%;
  background-color: blue;
  margin: 3%;
}

.menuButton {
  float: left;
}

#nav h1 {
 display:table;/* shrinks on itself */
 margin:auto;
}

.searchButton {
  float: right;
}
<div id="dropMenu"></div>


<div id="nav">
  <img src="menu.jpg" class="menuButton">
  <img src="search.jpg" class="searchButton">
  <h1> REVIEWS. </h1>

</div>

<div id="content"></div>

<div id="footer"></div>

  • 或 h1 不带浮动的显示和边距

* {
  padding: 0px;
  margin: 0px;
}

#nav {
  width: 94%;
  background-color: blue;
  margin: 3%;
}

.menuButton {
  float: left;
}

#nav h1 {
 text-align:center
}

.searchButton {
  float: right;
}
<div id="dropMenu"></div>


<div id="nav">
  <img src="menu.jpg" class="menuButton">
  <img src="search.jpg" class="searchButton">
  <h1> REVIEWS. </h1>

</div>

<div id="content"></div>

<div id="footer"></div>