1

我有以下代码

<div id="main">
    <div id="one"> </div>
    <div id="two"> </div>
    <div id="three"> </div>
    <div id="four"> </div>
</div>

我需要如下对齐中间的 4 个 div,在每一侧保持相等的空间(顶部空间 = 底部空间和右侧空间 = 左侧空间):

______________________________________
|                                    |
|         ________  ________         |
|        |        ||        |        |
|        |  one   ||   two  |        |
|        |        ||        |        |
|        |________||________|        |
|         ________  ________         |
|        |        ||        |        |
|        | three  ||  four  |        |
|        |        ||        |        |
|        |________||________|        |
|                                    |
|____________________________________|

四个 div 等距,请任何人都可以在这里帮我解决任何 css 片段吗?我也确实看到了很多关于这个的问题,但无法解决这个问题。有人可以指出任何有用的链接来完美地解释与 div 对齐相关的所有概念吗?

(伙计们,我知道这将是重复的,但请帮忙,因为我只是通过谷歌搜索来回走动。)

提前致谢 :)

4

4 回答 4

3

这是一种适用于所有现代浏览器的方法,包括 IE8:jsFiddle 示例

HTML

<div id="main">
    <div id="one"></div>
    <div id="two"></div><br />
    <div id="three"></div>
    <div id="four"></div>
</div>​

CSS

div {
    border:1px solid #999;
}
#main {
    width:400px;
    height:400px;
    display:table-cell;
    vertical-align:middle;
    text-align:center;
}
#one,#two,#three,#four{
    width:100px;
    height:100px;   
    display:inline-block;    
}

请注意,我确实必须在<br />您的代码中添加一个中断标记 ( )。

于 2012-06-18T20:27:04.283 回答
1

@j08691 有一个很好的例子。但如果有用的话,这里是我的……

<html>
<body>

<div style="width: 960px; margin: 0 auto;">

    <div>
        <div style="width: 480px; float: left;">
            <div style="padding: 10px; border: 1px solid #F00;">
                1
            </div>
        </div>
        <div style="width: 480px; float: left;">
            <div style="padding: 10px; border: 1px solid #F00;">
                2
            </div>
        </div>
    </div>

    <div>
        <div style="width: 480px; float: left;">
            <div style="padding: 10px; border: 1px solid #F00;">
                3
            </div>
        </div>
        <div style="width: 480px; float: left;">
            <div style="padding: 10px; border: 1px solid #F00;">
                4
            </div>
        <div>
    </div>

</div>

</body>
</html>
于 2012-06-18T20:31:02.660 回答
1

水平居中是很容易的部分,但是有一个巧妙的技巧可以使用绝对定位和负边距使事物垂直对齐。这是我几年前写的一个工作示例

这是一些代码和解释:

<div id="main">
    <div id="one"></div>
    <div id="two"></div>
    <div id="three"></div>
    <div id="four"></div>    
</div>

CSS

#main {
    position: absolute;
    top: 50%;  /* gets the first pixel in the center of the browser */  
    left: 50%;
    height: 860px;
    width: 860px;
    margin-top: -430px; /* negative margin half the height of the div to make it appear center */  
    margin-left: -430px;
    border: solid 1px #000;
    overflow: visible; /* allows an absolutely positioned element to contain floats */ 
    }
#one, #two, #three, #four { 
    float: left;
    height: 400px; 
    width: 400px;
    background-color: blue;
    margin: 20px; 
    }
#one, #three { 
     margin-right: 0; 
     }
#one, #two {  
    margin-top: 20px;  
    margin-bottom: 0;  
    }
于 2012-06-18T21:41:04.893 回答
0

我的答案略有不同(但@j08691 有一个很好的解决方案),

#main{
    position:absolute;
    top:50%;
    left:50%;

    width:100px;
    height:100px;
    margin:auto;
}

#one, #two, #three, four{
    float:left;
    width:50px;
    height:50px;
}

我测试过的完整工作代码是,

    <html>
<head>

<style media="screen" type="text/css">

#main{
    position:absolute;
    top:50%;
    left:50%;

    width:100px;
    height:100px;
    margin:auto;
}

#one, #two, #three, four{
    float:left;
    width:50px;
    height:50px;
}

.box{
    float:left;
    width:50px;
    height:50px;
}


#one{
    background-color:#f00;
}
#two{
    background-color:#0f0;
}
#three{
    background-color:#00f;
}
#four{
    background-color:#000;
}


</style>
</head>
<body>
<div id="main">
    <div id="one" class="box"> </div>
    <div id="two" class="box"> </div>
    <div id="three" class="box"> </div>
    <div id="four"class="box" > </div>
</div>
</body>
</html>
于 2012-06-18T20:32:18.173 回答