【问题标题】:How can I keep divs centered when resizing a webpage?调整网页大小时如何使 div 居中?
【发布时间】:2016-11-17 15:25:48
【问题描述】:

我正在通过 The Odin Project 学习 CSS,并制作了 Google.com 主页的模型。一切看起来都很完美,直到我调整了浏览器窗口的大小并且元素移动了位置。

我一直在尝试许多不同的方法来让 div(Google 徽标、搜索栏和按钮)在调整页面大小时居中。

#header {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -150px;
  margin-top: -125px;
  width: 300px;
  padding: 10px;
}
#topbar {
  font-family: arial, sans-serif;
}
.centered {
  width: 960px
}
.footer {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 0.15rem;
  background-color: #f2f2f2;
  font-family: arial, sans-serif;
  font-size: 15px;
  color: #666;
}
.alignleft {
  float: left;
}
.alignright {
  float: right;
}
p {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 14px;
  color: #7D7676;
}
<title>Google</title>
<link rel="stylesheet" type="text/css" href="google-homepage-css.css">
<!-- Top bar -->

<body>
  <div id="topbar">
    <p align="right"><a href="https://mail.google.com" style="color:#7D7676;text-decoration: none">Gmail</a>&nbsp;&nbsp;<a href="https://images.google.com" style="color:#7D7676;text-decoration: none">Images</a>&nbsp;&nbsp;
      <img style="vertical-align:middle" src="http://i.imgur.com/xmMdSIp.png">&nbsp;</p>
  </div>
  <br>
  <!-- Google Center Image -->
  <div id="centered">
    <div id="logo">
      <img id="header" src="http://i.imgur.com/hs6n5hR.png" width="400">
    </div>
  </div>

  <!-- Search Bar and Buttons -->
  <div id="search">
    <form id="searchbar" width="500">
      <br>
      <input type="text">
      <br>
    </form>
    <br>
    <button type="button" id="firstbutton">Google Search</button>
    <button type="button" id="secondbutton">I'm Feeling Lucky</button>
  </div>

  <!-- Footer -->
  <div class="footer">
    <p class="alignleft"><a href="https://www.google.com/intl/en/ads/" style="color:#666;text-decoration: none">&nbsp;&nbsp;Advertising</a>
      &nbsp;&nbsp;&nbsp;
      <p class="alignleft"><a href="https://www.google.com/services/" style="color:#666;text-decoration: none">Business</a>
        &nbsp;&nbsp;&nbsp;
        <p class="alignleft"><a href="https://www.google.com/intl/en/about/" style="color:#666;text-decoration: none">About</a>
        </p>
        <p class="alignright"><a href="https://www.google.com/intl/en/policies/privacy/" style="color:#666;text-decoration: none">Privacy</a>
          &nbsp;&nbsp;
          <a href="https://www.google.com/intl/en/policies/terms/" style="color:#666;text-decoration: none">Terms</a>
          &nbsp;&nbsp;
          <a href="https://www.google.com/preferences" style="color:#666;text-decoration: none">Settings&nbsp;&nbsp;</a>
        </p>
  </div>

jsFiddle


我觉得应该是这样的,但我不确定:

div {
    position: relative
    margin-left:auto;
    margin-right:auto;
}

注意:之后,我将致力于调整搜索栏和按钮的大小并为其添加颜色,我最关心的是如何在调整浏览器页面大小时将搜索栏和按钮保持在 Google 徽标下方居中。

【问题讨论】:

  • 你试过了吗? &lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;
  • 无论屏幕大小如何,谷歌徽标都会居中。复制你为此所做的一切?
  • 可以设置margin-left/margin-right为“auto”,但需要指定div的宽度,让浏览器计算margin。
  • 不要使用position 属性来定位元素(是的,我知道...)。 display and float 更适合布局(以及强大的 Flexbox 和 1-3 年的网格布局,但我认为它不适合初学者)。还要搜索“CSS 中的水平居中”=> 边距:0 auto vs text-align: center(用于将自身或其内容居中,大致)

标签: html css


【解决方案1】:

&lt;div&gt; 是一个块元素,默认情况下它占用其父元素的 100% 宽度。

如果您尝试使用margin: 0 auto 将其居中,那么您将无法获得预期的结果。您必须设置宽度才能应用边距。

请看下面的例子:

.parent{
  width: 400px;
  height: 100px;
  border: 1px solid blue;
}

.item{
  width: 100px;
  margin: 0 auto;
  border: 1px solid green;
}
<div class="parent">
  <div class="item">
    <span>some text</span>
  </div>
</div>

【讨论】:

    【解决方案2】:

    您可以将属性text-align: center 添加到您的&lt;div&gt; 祖先,ID 为#search

    #search{ text-align: center; }
    

    这将使&lt;input&gt;&lt;button&gt; 元素居中,因为它们保留了它们的inline 特征。

    #header {
      position: absolute;
      top: 50%;
      left: 50%;
      margin-left: -150px;
      margin-top: -125px;
      width: 300px;
      padding: 10px;
    }
    #topbar {
      font-family: arial, sans-serif;
    }
    #search {
      text-align: center;
    }
    .centered {
      width: 960px
    }
    .footer {
      position: absolute;
      right: 0;
      bottom: 0;
      left: 0;
      padding: 0.15rem;
      background-color: #f2f2f2;
      font-family: arial, sans-serif;
      font-size: 15px;
      color: #666;
    }
    .alignleft {
      float: left;
    }
    .alignright {
      float: right;
    }
    p {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 14px;
      color: #7D7676;
    }
    <title>Google</title>
    <link rel="stylesheet" type="text/css" href="google-homepage-css.css">
    <!-- Top bar -->
    
    <body>
      <div id="topbar">
        <p align="right"><a href="https://mail.google.com" style="color:#7D7676;text-decoration: none">Gmail</a>&nbsp;&nbsp;<a href="https://images.google.com" style="color:#7D7676;text-decoration: none">Images</a>&nbsp;&nbsp;
          <img style="vertical-align:middle" src="http://i.imgur.com/xmMdSIp.png">&nbsp;</p>
      </div>
      <br>
      <!-- Google Center Image -->
      <div id="centered">
        <div id="logo">
          <img id="header" src="http://i.imgur.com/hs6n5hR.png" width="400">
        </div>
      </div>
    
      <!-- Search Bar and Buttons -->
      <div id="search">
        <form id="searchbar" width="500">
          <br>
          <input type="text">
          <br>
        </form>
        <br>
        <button type="button" id="firstbutton">Google Search</button>
        <button type="button" id="secondbutton">I'm Feeling Lucky</button>
      </div>
    
      <!-- Footer -->
      <div class="footer">
        <p class="alignleft"><a href="https://www.google.com/intl/en/ads/" style="color:#666;text-decoration: none">&nbsp;&nbsp;Advertising</a>
          &nbsp;&nbsp;&nbsp;
          <p class="alignleft"><a href="https://www.google.com/services/" style="color:#666;text-decoration: none">Business</a>
            &nbsp;&nbsp;&nbsp;
            <p class="alignleft"><a href="https://www.google.com/intl/en/about/" style="color:#666;text-decoration: none">About</a>
            </p>
            <p class="alignright"><a href="https://www.google.com/intl/en/policies/privacy/" style="color:#666;text-decoration: none">Privacy</a>
              &nbsp;&nbsp;
              <a href="https://www.google.com/intl/en/policies/terms/" style="color:#666;text-decoration: none">Terms</a>
              &nbsp;&nbsp;
              <a href="https://www.google.com/preferences" style="color:#666;text-decoration: none">Settings&nbsp;&nbsp;</a>
            </p>
      </div>

    Revised jsFiddle

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 2016-03-16
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多