使用display渲染(错误):table-cell;

时间:2015-11-18 20:27:45

标签: html5 css3 tablecell

我目前在网站上工作。 HTML文件的标题如下所示:

<div id="page">
    <header>
        <a href="#" class="redsquare">&nbsp;</a>
        <div class="head-wrapper">
            <!-- some more -->
        </div>
        <div class="flags-container">
            <!-- some more -->
        </div>
    </header>

此html部分的CSS如下所示:

#page {
    width: 100%;
    display: table;
    clear: both;
    margin-bottom: 30px;
}

header {
    width: 100%;
    height: 223px;
    background: #F0F0F0 url("../resources/header-background.png") repeat-x;
    margin: 0;
    padding: 0;
    display: table-row;
    clear: both;
}

header > a.redsquare {
    background-image: url("../resources/logo-figure.png");
    float: left;
    height: 223px;
    width: 240px;
    margin: 0px;
    padding: 0px;
    display: table-cell;
    vertical-align: top;
}

header > .head-wrapper {
    height: 223px;
    margin: 0;
    padding: 0;
    display: table-cell;
    vertical-align: top;
}

header > .flags-container {
    width: 110px;
    height: 100px;
    padding: 20px 5px 20px 5px;
    margin-bottom: 83px;
    float: right;
    display: table-cell;
    vertical-align: top;
    clear: both;
}

所有元素都在它们的位置,但在redsquarehead-wrapper之间以及head-wrapperflags-container之间有一条小线(显示在如下图。)

enter image description here

我的问题是,我该如何防止这种情况发生?

1 个答案:

答案 0 :(得分:1)

我接受了你发布的标记和css并制作了一个小提琴,因为表格的默认行为是通过添加

来覆盖需要覆盖它的边框的单元格
border-collapse: collapse;

给你#page元素。

enter image description here

在IE和Chrome中快速测试了这个,fiddle can be found here

然而我非常同意其他评论,因为您不应该使用表格或出于设计原因模拟表格,而是建议使用相同的html结构,而不是

display: table-cell;

尝试使用

display: inline-block;

这会产生相同的“列”效果但不那么悲惨。表格很悲惨。