在包装清单上使用保证金不会起作用。 margin:top始终为0

时间:2013-05-29 23:38:49

标签: css

http://jsfiddle.net/MqPDH/10/

为什么第一个包裹.wp-list margin: 10px.a .b使用margin: 10px不起作用?

.wp{
    background-color: blue;
    position: absolute;
    margin-left: auto;
    margin-right: auto;
    left: 0;
    right: 0;
    width: 450px;
}
.wp_list{
    background-color: red;
    margin: 10px;
    height: 130px;
    position:relative;
}
.a, .b, .c{
    background-color: gray;
}
.a{
    width: 220px;
    height: 30px;
    margin: 10px;
}
.b{
    width: 220px;
    height: 100px;
    margin: 10px;
}
.c{
    width: 130px;
    height: 130px;
    top:0;
    right:0;
    position:absolute;
}

HTML:

<div class="wp">
    <div class="wp_list">
        <div class="a">a</div>
        <div class="b">b</div>
        <div class="c">c</div>
    </div>
    <div class="wp_list">
        <div class="a">a</div>
        <div class="b">b</div>
        <div class="c">c</div>
    </div>
    // generate from php
</div>

2 个答案:

答案 0 :(得分:1)

这主要是因为它表现为内联元素。添加display: inline-block;

.wp_ist{
    display: inline-block;
    background-color: red;
    margin: 10px;
    height: 130px;
    position:relative;
}

答案 1 :(得分:1)

Vertical margins may collapse on block level elements,这意味着当您在底部设置了10px边距设置的元素,然后在顶部设置了5px边距设置的元素。两者之间的差距不会是15px,而是会崩溃到两者中最大的一个:10px,或者在这种情况下,当它们都是10px时,它会崩溃到是10px

您应该将display: inline-block;添加到.a, .b, .c,以解决问题:

.a, .b, .c{
    background-color: gray;
    display: inline-block;  
}

jsFiddle