CSS-使div水平对齐


84

我有一个固定的容器DIVwidthheight,用overflow: hidden

我想要水平行的float:此容器内的div左。在向左浮动的Divs阅读其父级的右边界后,自然会推到下面的“行”上。即使height父级的不允许这样做,也会发生这种情况。这是这样的样子:

![错误] [1]-删除了已被广告替换的图片棚屋图片

我希望它看起来如何:

![右] [2]-删除了已被广告替换的图像棚屋图像

注意:我想要的效果可以通过使用内联元素&来实现white-space: no-wrap(这就是我在所示图像中所做的事情)。但是,这对我不利(由于冗长的原因,在这里无法解释),因为子div需要浮动块级元素。


8
您的图片链接似乎已断开。如果您仍然有原始文件,请将其重新上传到stack.imgur。谢谢!
Ilmari Karonen

Answers:


99

您可以在容器中放置一个足够宽的内部div,以容纳所有浮动的div。

#container {
  background-color: red;
  overflow: hidden;
  width: 200px;
}

#inner {
  overflow: hidden;
  width: 2000px;
}

.child {
  float: left;
  background-color: blue;
  width: 50px;
  height: 50px;
}
<div id="container">
  <div id="inner">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
  </div>
</div>


我怎样才能使室外div居中?我试图在外部div上添加align =“ center”,似乎不起作用。
hakunami 2014年

1
这也适用于百分比宽度。就我而言,我使用容器divwidth: 200%;和子元素都是width: 50%;。然后transform: translateX(n%);,只要我有一个带有overflow: hidden;
-evolross

31

style="overflow:hidden"对于父级divstyle="float: left"所有子级divs而言,使divsIE7及更低版本的旧浏览器水平对齐非常重要。

对于现代浏览器,您可以将style="display: table-cell"所有子项都使用,divs并且它将正确地水平呈现。


6

这似乎接近您想要的:

#foo {
  background: red;
  max-height: 100px;
  overflow-y: hidden;
}

.bar {
  background: blue;
  width: 100px;
  height: 100px;
  float: left;
  margin: 1em;
}
<div id="foo">
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
  <div class="bar"></div>
</div>


5

您可以使用该clip属性:

#container {
  position: absolute;
  clip: rect(0px,200px,100px,0px);
  overflow: hidden;
  background: red;
}

请注意position: absoluteoverflow: hidden,以便开始clip工作。


4
剪辑的浏览器支持什么?
亚历克斯

1
来自w3schools.com/cssref/pr_pos_clip.asp:所有主要浏览器都支持clip属性。注意:IE7及更早版本不支持值“继承”。IE8需要!DOCTYPE。IE9支持“继承”。
dsomnus

4

浮动:左,显示:如果元素超出容器的宽度,它们都将无法水平对齐元素。

重要的是要注意,如果元素必须水平显示,则容器不应包装: white-space: nowrap


4

现在,您可以根据需要使用CSS Flexbox在水平和垂直方向上对齐div。通用公式像这样

parent-div {
  display: flex;
  flex-wrap: wrap;
  /* for horizontal aligning of child divs */
  justify-content: center;
  /* for vertical aligning */
  align-items: center;
}

child-div {
  width: /* yoursize for each div */
  ;
}

优雅的解决方案。
zawhtut

1

漂浮他们离开。至少在Chrome中,id="container"在LucaM的示例中,您不需要包装器。


0

您可以执行以下操作:

#container {
  background-color: red;
  width: 200px;
}

.child {
  background-color: blue;
  width: 150px;
  height: 50px;
}
<div id="container">
  <div id="inner">
    <div class="child"></div>
    <div class="child"></div>
    <div class="child"></div>
  </div>
</div>

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.