div 不水平和垂直居中

divs not centering horizontally & vertically

我想让蓝绿色和绿色 div 位于红色 div 的中心。我试过 margin:0 自动、浮动、文本对齐,都不起作用。

turquoise div = header-logo-wrap
green div = header-text-wrap

如何使这些 div 水平和垂直居中?

非常感谢任何帮助,谢谢

@charset "UTF-8";
/* CSS Document */

body{
 background-color:#F6F7C1; 
 padding:0px;
 margin:0 auto; /* aligns content to touch the edge; gets rid of default spacing/margin between edge and content */
}

/* Header */
#header-wrap{
 background:#D6ECFF;
 width:100%;
 height:auto;
 border-bottom: 3px solid #CCC;
 /* margin:0 auto; needed? */
}
#header-top{
 /* contains logo & title text */
 background:#F00;
 width:960px;
 height:200px;
 margin:0 auto; /* aligns centrally */
}
.header-text-wrap{
 width:452px;
 height:auto;
 background:#0F0;
 text-align:justify;
 float:left;
}
.header-logo-wrap{
 width:100px;
 height:100px;
 background:#0CC;
 text-align:justify;
 float:left;
}
#header-bottom{
 /* contains navigation menu */
 background:#00F;
 width:960px;
 height:50px;
 margin:0 auto; /* aligns centrally */
 border-top: 3px solid #CCC;
}

/* Fonts */
header{
 font-family: Arial, sans-serif, tahoma, Arial, Cambria;
 -webkit-font-smoothing: antialiased; /* subtley makes fonts smoother */
 font-size:45px;
 text-transform:uppercase;
 line-height:40px;
}
slogan{
 font-family: courier new, tahoma, Arial, Cambria, serif;
 -webkit-font-smoothing: antialiased; /* subtley makes fonts smoother */
 font-size:20px;
 text-transform:uppercase;
 word-spacing:10px;
 letter-spacing:5px;
}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css"/>
<!-- Meta Tags Below -->
<meta name="description" content="" />
<meta name="keywords" content="" />
<title>___________________________</title>
<!-- Google Analytics Code Below -->
<!-- _____________________________ -->
</head>

<body>
<div id="header-wrap">

<div id="header-top">
<div class="header-logo-wrap"></div>
<div class="header-text-wrap">
<header>text goes here &amp; more here
</header>
<slogan>more text goes here</slogan>
</div>
</div>
<div id="header-bottom"></div>

</div>
</body>
</html>

使用flex定位。

@charset "UTF-8";

/* CSS Document */

body {
  background-color: #F6F7C1;
  padding: 0px;
  margin: 0 auto;
  /* aligns content to touch the edge; gets rid of default spacing/margin between edge and content */
}
/* Header */

#header-wrap {
  background: #D6ECFF;
  width: 100%;
  height: auto;
  border-bottom: 3px solid #CCC;
  /* margin:0 auto; needed? */
}
#header-top {
  /* contains logo & title text */
  background: #F00;
  width: 100%;
  height: 200px;
  margin: 0 auto;
  /* aligns centrally */
  display: flex;
  justify-content: center;
  align-items: center;
}
.header-text-wrap {
  width: 452px;
  height: auto;
  background: #0F0;
  text-align: justify;
  float: left;
}
.header-logo-wrap {
  width: 100px;
  height: 100px;
  background: #0CC;
  text-align: justify;
  float: left;
}
#header-bottom {
  /* contains navigation menu */
  background: #00F;
  width: 100%;
  height: 50px;
  margin: 0 auto;
  /* aligns centrally */
  border-top: 3px solid #CCC;
}
/* Fonts */

header {
  font-family: Arial, sans-serif, tahoma, Arial, Cambria;
  -webkit-font-smoothing: antialiased;
  /* subtley makes fonts smoother */
  font-size: 45px;
  text-transform: uppercase;
  line-height: 40px;
}
slogan {
  font-family: courier new, tahoma, Arial, Cambria, serif;
  -webkit-font-smoothing: antialiased;
  /* subtley makes fonts smoother */
  font-size: 20px;
  text-transform: uppercase;
  word-spacing: 10px;
  letter-spacing: 5px;
}
<div id="header-wrap">

  <div id="header-top">
    <div class="header-logo-wrap"></div>

    <div class="header-text-wrap">
      <header>text goes here &amp; more here
      </header>
      <slogan>more text goes here</slogan>
    </div>

  </div>
  <div id="header-bottom"></div>

您需要使这些 div-s display: inline-block 使它们水平居中,并使 display: table-cell 用于包装容器以使 divs 垂直居中。

@charset "UTF-8";
/* CSS Document */

body{
 background-color:#F6F7C1; 
 padding:0px;
 margin:0 auto; /* aligns content to touch the edge; gets rid of default spacing/margin between edge and content */
}

/* Header */
#header-wrap{
 background:#D6ECFF;
 width:100%;
 height:auto;
 border-bottom: 3px solid #CCC;
 /* margin:0 auto; needed? */
}
#header-top{
 /* contains logo & title text */
    display: table-cell;
 background:#F00;
 width:960px;
 height:200px;
    text-align: center;
    vertical-align: middle;
}
.header-text-wrap{
    display: inline-block;
 width:452px;
 background:#0F0;
 text-align: center;
    margin: 0;
}
.header-logo-wrap{
    display: inline-block;
 width:100px;
 height:100px;
 background:#0CC;
 text-align: center;
}
#header-bottom{
 /* contains navigation menu */
 background:#00F;
 width:960px;
 height:50px;
 margin:0 auto; /* aligns centrally */
 border-top: 3px solid #CCC;
}

/* Fonts */
header{
 font-family: Arial, sans-serif, tahoma, Arial, Cambria;
 -webkit-font-smoothing: antialiased; /* subtley makes fonts smoother */
 font-size:45px;
 text-transform:uppercase;
 line-height:40px;
}
slogan{
 font-family: courier new, tahoma, Arial, Cambria, serif;
 -webkit-font-smoothing: antialiased; /* subtley makes fonts smoother */
 font-size:20px;
 text-transform:uppercase;
 word-spacing:10px;
 letter-spacing:5px;
}
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css"/>
<!-- Meta Tags Below -->
<meta name="description" content="" />
<meta name="keywords" content="" />
<title>___________________________</title>
<!-- Google Analytics Code Below -->
<!-- _____________________________ -->
</head>

<body>
<div id="header-wrap">

<div id="header-top">
<div class="header-logo-wrap"></div>
<div class="header-text-wrap">
<header>text goes here &amp; more here
</header>
<slogan>more text goes here</slogan>
</div>
</div>
<div id="header-bottom"></div>

</div>
</body>
</html>