代码之家  ›  专栏  ›  技术社区  ›  avernet

表之间的边距折叠

  •  0
  • avernet  · 技术社区  · 6 年前

    我在一页上有几张桌子,想在桌子之间留点空间。有些表可能只有空单元格;这样的表有一个零高度,在这种情况下,我不希望添加任何额外的间距。

    通常情况下,利润率的下降会起到作用。但是,我正在收集表建立块格式上下文(bcf),并且在建立bcf的框之间不会发生边距折叠。

    你可以在下面的代码片段中看到这个:你得到一个 1em “1”和“2”之间的空格,但是 2em 介于“2”和“3”之间,而我总是想 1EM 空间。但如何做到这一点呢?

    注意:我必须处理一些约束:我不能删除空表的标记或在它们上添加类。但是,我可以为每个表添加一个容器,例如 <div> . (我希望这样做并移动 margin-bottom 最后,我当然可以编写javascript,在非空表上添加一个具有边距的类,但不要认为这是一个可接受的解决方案。

    table { margin-bottom: 1em }
    <table><tr><td>1</td></tr></table>
    <table><tr><td>2</td></tr></table>
    <table><tr><td></td></tr></table>
    <table><tr><td>3</td></tr></table>
    1 回复  |  直到 6 年前
        1
  •  0
  •   MSC    6 年前

    有趣的问题。不容易。这样怎么样: https://codepen.io/MSCAU/pen/jQLWxL ?间隔片是灰色的,用来显示发生了什么:

    table {  
      border-spacing: 0;
    }
    
    td {
      border: 1px solid grey;
    }
    
    td:empty {
      display: none;
    }
    
    td:not(:empty) {
      &:after {
        content: '';
        display: block;
        height: 30px;
        width: 10px;
        background-color: rgba(99,66,33,0.3);
      }
    }
    

    在您的示例中,每个表中只有一个单元格,所以这是有效的。