如何在div的两侧使用相等的填充。 CSS

时间:2013-05-22 16:26:48

标签: html css css-float padding centering

我有这个元素:

<div class="menubar">
    <a href="http://home.com"><img src="../img/home_button.png"/></a>
    <a href="http://home.com/a"><img src="../img/a_button.png"/></a>
    <a href="http://home.com/b"><img src="../img/b_button.png"/></a>
    <a href="http://home.com/c"><img src="../img/c_button.png"/></a>
</div>

我的目标是让菜单栏div的内容居中。

使用display: table;margin:auto;实现了这一目标,但我正在使用的背景图片被裁剪为仅适合div的内容:

.menubar {
    display: table;
    margin: auto;
    background-image:url(/img/menubar_background.png);
}

那么,我有另一个版本,两侧都增加了50%的填充,但问题是结果的总宽度是100%+按钮的宽度。

.menubar {
    padding-right:50%;
    padding-left:50%;
    background-image:url(/img/menubar_background.png);
}

我通过使用max-width:960px(100%)来实现更接近的目标,但仍存在一个问题:它实际上并没有向两侧应用相同数量的填充。它最终向左填充50%,向右移动到达960px到右边。

欢迎任何帮助!

2 个答案:

答案 0 :(得分:5)

改为使用text-align。

.menubar {
  text-align:center;
  background-image:url(/img/menubar_background.png);
}

答案 1 :(得分:0)

如果你知道元素的宽度,你可以使用 calc:

.menubar {
  --menu-width: 112px;
  width: var(--menu-width);
  padding-left: calc((100% - var(--menu-width)) / 2);
  padding-right: calc((100% - var(--menu-width)) / 2);
  color: #4fff09;
  background: gray;
}
<div class="menubar">
    menu bar content
</div>