代码之家  ›  专栏  ›  技术社区  ›  George Johnston

在CSS中水平对齐浮动项

  •  1
  • George Johnston  · 技术社区  · 15 年前
    1. 我有一个无限/未绑定的DIV标记数,这些标记浮在左边。

    2. 当浏览器调整大小时,DIV标记将换行到下一行。

    3. 因为DIV标记根据屏幕右侧是否有足够的间距进行换行,所以当它们进行换行时,会在屏幕右侧留下很大的空间。

    4. 所以如果DIV是32x32,那么32x32空间将留在屏幕的右侧。

    我希望父级DIV在这种情况下将内容居中,因此,例如,如果换行后右侧有一个32px的空间,它将调整子级内容,使其左侧有16px,右侧有16px。

    例如,如果内容不居中,屏幕将如下所示:

    [DIV][DIV][DIV][DIV]。。 差距 .|

    [DIV]<-包装…………|

    我希望将这些分隔符放在父级中,这样当分隔符被包装时,内容将如下所示:

    …..【DIV】【DIV】【DIV】【DIV】……居中,但仍向左浮动。

    ……[DIV]……

    仍然允许换行,但当浏览器水平收缩或增长时,父DIV会自动将子DIV的内容调整到中心。

    我怎样才能做到这一点?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Andrew    15 年前

    正如你所描述的,你做不到。您可以将所有div设置为显示:inline块而不是float-left,然后将它们全部放在一个具有文本对齐中心的大包装器div中。不过,这将使跳下一行的DIV居中,而不是左对齐。

    或者,您可以设置一个包装分区,将其宽度设置为页面的百分比,以及最小像素宽度,然后将其设置为页边0自动。类似:

    div.wrapper {width:90%; min-width:800px; margin: 0 auto;}
    

    我怀疑这会像你想的那样,但我还没有测试过。希望这能激发一些想法!

        2
  •  0
  •   Marc Thibault    15 年前

    这可能不是你想要的,但我认为它符合美学要求:

    <!DOCTYPE HTML>
    <html lang="en">
    <head>
    <style>
        #wrapper {
            margin: 0 auto;
            border: 1px solid gray;
            text-align: justify;
        }
    
        .me {
            display: inline-block;
            padding: 1em;
            border: 1px solid blue;
        }
    </style>
    </head>
    <body>
        <div id = "wrapper">
                <div class="me"><p>One line of stuff in a div.</p></div>
                <div class="me"><p>One line of stuff in a div.</p></div>
                <div class="me"><p>One line of stuff in a div.</p></div>
                <div class="me"><p>One line of stuff in a div.</p>
                    <p>Or two.</p></div>
                <div class="me"><p>One line of stuff in a div.</p></div>
                <div class="me"><p>One line of stuff in a div.</p></div>
                <div class="me"><p>One line of stuff in a div.</p></div>
        </div>
    </body>
    </html>