2011-01-19 72 views
9

除了margin-top被table row div完全忽略之外,下面的html可以像預期的那樣工作。我無法弄清楚爲什麼。爲什麼div顯示:錶行忽略邊距?

<div class='table'> 

    <div class='margin-top5 row user' id='user_113'> 
    <div class='cell left avatar margin-right5'><img alt="Blank_avatar_thumb" src="/images/blank_avatar_thumb.png?1295354025" /></div> 
    <div class='cell left'> 
     <div class='bold'><a href="/voisins/113">Dandre</a></div> 
     <div class='small of_hidden'>toothpicking, veryveryveryveeerrrryyyyyylooooooooong, kidnapping...</div> 
    </div> 
    <div class='cell right'>42</div> 

    <div class='clear'></div> 
    </div> 
    /* more rows */ 
</div> 

CSS:

div.table { 
    display: table; 
    width: 100%; 
} 
div.row { 
    display: table-row; 
} 
div.cell { 
    display: table-cell; 
} 
div.left { 
    float: left; 
} 
div.right { 
    float: right; 
} 
div.clear { 
    clear: both; 
} 
.avatar { 
    vertical-align: middle; 
} 
.margin-top5 { 
    margin-top: 5px; 
} 
.margin-right5 { 
    margin-right: 5px; 
} 
.bold { 
    font-weight: bold; 
} 
.of_hidden { 
    overflow: hidden; 
} 
.small { 
    font-size: 0.8em; 
} 
body, p, ol, ul, td { 
    font-family: verdana, arial, helvetica, sans-serif; 
    font-size: 13px; 
    line-height: 18px; 
} 

編輯

如果我刪除行的div .row類,它開始拿起邊距。

回答

14

這是cullprit:display: table-row; 你告訴div來表現得像一個trtr的沒有margin ...或padding

您可以將padding應用於td,而不是margin

+1

這是非常違反直覺 - 它畢竟是格...並且順便說一句保證金正確適用於`顯示:表細胞;`(這是代碼示例中) – artemave 2011-01-20 09:27:14