【问题标题】:How to horizontally center two divs within a header div?如何在标题 div 中水平居中两个 div?
【发布时间】:2012-07-20 15:20:36
【问题描述】:

我有一个标题 div,它以 100% 的宽度固定在浏览器窗口的顶部。在标题 div 中有一个带有标题文本的 div 和一个带有水平列表的 div。水平列表 div 应该出现在标题文本 div 的右侧。

这是我的 CSS 和 HTML:

#header {
  position:fixed;
  top:0;
  left:0;
  right:0;
  background-color:#333333;
  padding:20px;
}

#title {
  float:left;
  color:#000000;
  font-size:30px;
  margin-right:24px;
  background-color:#ffffff;
  padding:8px;
}

#navigation ul {
  padding:0;
  margin:0;
  list-style-type:none;
}

#navigation ul li {
  display:inline;
  margin-right:20px;
  padding:3px;
  background-color:#ffffff;
}

#navigation ul li a {
  color:#000000;
  text-decoration:none;
}
<div id="header">
  <div id="title">Some Title Text</div>
  <div id="navigation"><ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
    </ul></div>
</div>

所以现在标题和导航 div 在标题 div 内左对齐。如何将标题和导航 div 水平居中?

编辑:更喜欢不使用硬编码宽度的解决方案(例如width: 500px),因为列表大小并不总是相同。

【问题讨论】:

标签: html css center


【解决方案1】:

一种适用于更改标题和/或两个 div 宽度的方法(如果标题变长或变短,或者添加或删除导航项):

#header 上设置text-align: center,在#title#navigation 上设置display: inline-block - 演示http://dabblet.com/gist/3151355

CSS 的变化:

#header {
    position:fixed;
    top:0;
    left:0;
    right:0;
    background-color:#333333;
    padding:20px;
    text-align: center; /* added */
}
#title {
    color:#000000;
    font-size:30px;
    margin-right:24px;
    display: inline-block; /* took out float:left and added this */
    background-color:#ffffff;
    padding:8px;
}
#navigation {
    display: inline-block; /* added */
}

我还添加了#navigation ul li:last-child {margin-right:0},以便在最后一个列表项之后没有24px 边距(这会使导航右侧看起来有更多空间)

【讨论】:

    【解决方案2】:

    您可以将标题和导航 div 包装在另一个 div 中,然后使用 margin: 0 auto 将该 div 居中。

    HTML

    <div id="header">
        <div id="center">
            <div id="title">Some Title Text</div>
            <div id="navigation">
                <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">About</a></li>
                <li><a href="#">Contact</a></li>
                </ul>
            </div>
        </div>
    </div>​​​​​​​​
    

    CSS

    #center {
        width: 500px; /* or any other width */
        margin: 0 auto;
    }
    

    JS 小提琴:http://jsfiddle.net/rJyuJ/

    【讨论】:

    • 如果你想改变菜单的宽度,或者让它动态调整大小,这将不起作用。
    • 我认为这不是一个好的解决方案,因为列表项的数量并不总是相同的。例如,如果用户已登录,则可能会有更多项目。有没有办法不用指定width: 500px
    【解决方案3】:

    您好,请您尝试使用 #header 的以下 css

    #header {
        position:fixed;
        top:0;
        left:0;
        right:0;
        background-color:#333333;
        padding:20px;
        text-align:center;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 2013-03-30
      • 2016-10-16
      • 1970-01-01
      相关资源
      最近更新 更多