我搜索了其他问题,虽然这个问题看起来与其他几个问题相似,但到目前为止我所看到的似乎都没有解决我遇到的问题。

我有一个 div,其中包含许多其他 div,每个 div 都向左浮动。这些 div 每个都包含一张照片和一个标题。我想要的只是将照片组集中在包含的 div 中。

正如您从下面的代码中看到的,我尝试过同时使用 overflow:hiddenmargin:x auto 在父 div 上,我还添加了一个 clear:both (如另一个主题中所建议的)在照片之后。似乎没有什么区别。

谢谢。我很感激任何建议。

<div style="position: relative; margin: 0 auto; overflow: hidden; text-align: center;">
    <h4>Section Header</h4>

    <div style="margin: 2em auto;">

        <div style="float: left; margin: auto 1.5em;">
            <img src="photo1.jpg" /><br />
             Photo Caption
        </div>
        <div style="float: left; margin: auto 1.5em;">
            <img src="photo2.jpg" /><br />
             Photo Caption
        </div>
        <div style="float: left; margin: auto 1.5em;">
            <img src="photo3.jpg" /><br />
             Photo Caption
        </div>

        <div style="clear: both; height: 0; overflow: hidden;"> </div>

    </div>

</div>
有帮助吗?

解决方案

首先,移除在所述内floats的div属性。然后,把 text-align: center 主外div。而对于内divs,  使用 display: inline-block 。也可能是明智的给他们明确的宽度了。


<div style="margin: auto 1.5em; display: inline-block;">
  <img title="Nadia Bjorlin" alt="Nadia Bjorlin" src="headshot.nadia.png"/>
  <br/>
  Nadia Bjorlin
</div>

其他提示

使用 Flexbox的可以很容易地水平(和垂直)中心的浮动儿童一个div内。

因此,如果有简单的标记,像这样:

<div class="wpr">
    <span></span>
    <span></span>
    <span></span>
    <span></span>
    <span></span>
</div>

与CSS:

.wpr
{
    width: 400px;
    height: 100px;
    background: pink;
    padding: 10px 30px;
}

.wpr span
{
    width: 50px;
    height: 50px;
    background: green;
    float: left; /* **children floated left** */
    margin: 0 5px;
}

(这是(预期 - 和不期望的) RESULT

现在添加以下规则来包装:

display: flex;
justify-content: center; /* align horizontal */

和浮动子代将对准中心(的 演示

只是为了好玩,让垂直对齐,以及只需添加:

align-items: center; /* align vertical */

演示

我完成上述使用相对定位和浮动到右侧。

HTML代码:

<div class="clearfix">                          
    <div class="outer-div">
        <div class="inner-div">
            <div class="floating-div">Float 1</div>
            <div class="floating-div">Float 2</div>
            <div class="floating-div">Float 3</div>
        </div>
    </div>
</div>

CSS:

.outer-div { position: relative; float: right; right: 50%; }
.inner-div { position: relative; float: right; right: -50%; }
.floating-div { float: left; border: 1px solid red; margin: 0 1.5em; }

.clearfix:before,
.clearfix:after { content: " "; display: table; }
.clearfix:after { clear: both; }
.clearfix { *zoom: 1; }

的jsfiddle: http://jsfiddle.net/MJ9yp/

这将在IE8工作和,但不早(惊喜,惊喜!)

我不记得这个方法的来源很遗憾,所以我不能给原作者给予信贷。如果别人知道,请张贴链接!

以下解决方案不使用内联块。但是,它需要两个辅助 div:

  1. 内容已浮动
  2. 内部助手是浮动的(它会拉伸与内容一样多)
  3. 内部助手向右推 50%(其左侧与外部助手的中心对齐)
  4. 内容向左拉 50%(其中心与内部助手的左侧对齐)
  5. 外部助手设置为隐藏溢出

.ca-outer {
  overflow: hidden;
  background: #FFC;
}
.ca-inner {
  float: left;
  position: relative;
  left: 50%;
  background: #FDD;
}
.content {
  float: left;
  position: relative;
  left: -50%;
  background: #080;
}
/* examples */
div.content > div {
  float: left;
  margin: 10px;
  width: 100px;
  height: 100px;
  background: #FFF;
}
ul.content {
  padding: 0;
  list-style-type: none;
}
ul.content > li {
  margin: 10px;
  background: #FFF;
}
<div class="ca-outer">
  <div class="ca-inner">
    <div class="content">
      <div>Box 1</div>
      <div>Box 2</div>
      <div>Box 3</div>
    </div>
  </div>
</div>
<hr>
<div class="ca-outer">
  <div class="ca-inner">
    <ul class="content">
      <li>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</li>
      <li>Nullam efficitur nulla in libero consectetur dictum ac a sem.</li>
      <li>Suspendisse iaculis risus ut dapibus cursus.</li>
    </ul>
  </div>
</div>

display: inline-block;将不会以任何的IE浏览器。这是我使用了什么。

// change the width of #boxContainer to 
// 1-2 pixels higher than total width of the boxes inside:

#boxContainer {         
    width: 800px; 
    height: auto;
    text-align: center;
    margin-left: auto;
    margin-right: auto;
}

#Box{
    width: 240px; 
    height: 90px;
    background-color: #FFF;
    float: left;
    margin-left: 10px;
    margin-right: 10px;
}

<强>解决方案:

<!DOCTYPE HTML>
<html>
    <head>
        <title>Knowledge is Power</title>
        <script src="js/jquery.js"></script>
        <script type="text/javascript">
        </script>
        <style type="text/css">
            #outer {
                text-align:center;
                width:100%;
                height:200px;
                background:red;
            }
            #inner {
                display:inline-block;
                height:200px;
                background:yellow;
            }
        </style>
    </head>
    <body>
        <div id="outer">
            <div id="inner">Hello, I am Touhid Rahman. The man in Light</div>
        </div>
    </body>
</html>

在我的情况,我无法用@Sampson得到的答复工作对我来说,最好的我在页面上居中一列。在这个过程中不过,我学会了漂浮实际上是如何工作的,并创造了这个解决方案。在它的核心的解决方法是很简单,但很难通过这个线程已经在这个岗位没有提到的时间已经超过146K的观点找到,因为显而易见的。

全部所需要的是与总屏幕空间宽度所期望的布局将占据然后使母体相同的宽度和应用余量的量:自动。这就是它!

在布局中的元素将决定“外” div的宽度和高度。每次取“myFloat”或元素的宽度或高度+边界+利润率和填充和添加它们放在一起。然后以同样的方式添加其他元素结合在一起。这会给你父宽度。他们都可以有所不同的大小,您可以用更少或更多的元素做到这一点。

实施例(每个元素有2路两侧,以便边界,边缘和填充得到相乘×2)

所以具有10px的,边界2px的,边缘6像素的宽度的元件,填充3PX看起来像这样: 10 + 4 + 12 + 6 = 32

然后添加所有元素的总计宽度在一起。

Element 1 = 32
Element 2 = 24
Element 3 = 32
Element 4 = 24

在此实例中为“外部”的div宽度将是112。

.outer {
  /* floats + margins + borders = 270 */
  max-width: 270px;
  margin: auto;
  height: 80px;
  border: 1px;
  border-style: solid;
}

.myFloat {
    /* 3 floats x 50px = 150px */
    width: 50px;
    /* 6 margins x 10px = 60 */
    margin: 10px;
    /* 6 borders x 10px = 60 */
    border: 10px solid #6B6B6B;
    float: left;
    text-align: center;
    height: 40px;
}
<div class="outer">
  <div class="myFloat">Float 1</div>
  <div class="myFloat">Float 2</div>
  <div class="myFloat">Float 3</div>
</div>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top