【问题标题】:CSS display:table-row How to width:100%? And border-bottom for rows with padding for table content?CSS显示:表格行如何宽度:100%?表格内容的填充行的边框底部?
【发布时间】:2019-12-13 21:43:53
【问题描述】:

尝试创建具有 100% 宽度内容的表格,但“宽度”不起作用。任何人都可以帮助PLZ。我该如何解决?并且表格内有“div”,因为我无法以另一种方式填充内容。我需要表格边框的填充,我需要表格行之间的底线。没有“border-collapse”“border-bottom”不适用于表格行。所以我需要再添加一个 div 来做填充 :(。任何人都可以告诉我如何正确地做到这一点,而无需在表格中再添加一个“div”。

  .tabble {
    display: table;
    border-collapse: collapse;
    border-spacing: 10px;
    border-radius: 6px;
    width: 100%;
  }
  .table__row {
    display: table-row;
    width: 100%;
    border-bottom: 1px solid red;
  }

  .table__row:last-child {
    border: none;
  }

  .table__cell {
    display: table-cell;
    width: 20%;
    padding: 10px;
    text-align: left;
  }
.padding-div {
   padding: 5px 20px;
   width: 100%"
}
</style>
<div class="tabble">
  <div class="padding-div">
     <div class="table__row">
       <div class="table__cell">1</div>
       <div class="table__cell">1</div>
     </div>
     <div class="table__row">
       <div class="table__cell">2</div>
       <div class="table__cell">2</div>
     </div>
  </div>
</div>```

【问题讨论】:

    标签: css css-tables


    【解决方案1】:

    您的桌子有很多问题。

    • .padding-div 的 CSS 中有一个错字," 而不是 ;
    • 表格单元格有width:20%,这会干扰宽度计算。浏览器将不知道是使两个单元格加起来是 40% 还是 100% 宽。删除它。
    • 最大的问题是填充 div。您不能在表格内有一个普通的 div 并在里面有一个表格行。删除这个 div。如果您想在整个表格周围留出空间,请为表格本身应用边距。

    那么它就会得到想要的结果。也就是说,如果您想要使整个表格与视口一样宽。

    .tabble {
      display: table;
      border-collapse: collapse;
      border-spacing: 10px;
      border-radius: 6px;
      width: calc(100% - 40px); /* changed */
      margin: 5px 20px; /* new */
      
    }
    
    .table__row {
      display: table-row;
      width: 100%;
      border-bottom: 1px solid red;
    }
    
    .table__row:last-child {
      border: none;
    }
    
    .table__cell {
      display: table-cell;
      /*width: 20%;*/ /* removed */
      padding: 10px;
      text-align: left;
    }
    
    .padding-div {
      padding: 5px 20px;
      width: 100%
    }
    <div class="tabble">
      <div class="table__row">
        <div class="table__cell">1</div>
        <div class="table__cell">1</div>
      </div>
      <div class="table__row">
        <div class="table__cell">2</div>
        <div class="table__cell">2</div>
      </div>
    </div>

    注意:如果您确实希望表格有边框,正如您在 cmets 中所说,解决方案会有所改变。然后表格本身需要有一个填充,这意味着你不能使用border-collapse,你必须使用border-spacing:0,这也意味着你需要将内部边框应用于单元格而不是行。

    .tabble {
      display: table;
      border-spacing: 0; /* changed */
      border-radius: 6px;
      width: calc(100% - 40px); /* changed */
      padding: 5px 20px; /* new */
      border: 1px solid tan; /* purely for demo purposes */
    }
    
    .table__row {
      display: table-row;
      width: 100%;
    }
    
    .table__cell {
      display: table-cell;
      padding: 10px;
      text-align: left;
    }
    
    .table__row:not(:last-child) .table__cell {
      border-bottom: 1px solid red;
    }
    <div class="tabble">
      <div class="table__row">
        <div class="table__cell">1</div>
        <div class="table__cell">1</div>
      </div>
      <div class="table__row">
        <div class="table__cell">2</div>
        <div class="table__cell">2</div>
      </div>
    </div>

    【讨论】:

    • ...虽然我不禁想知道您想对桌子上的边框半径做什么。它没有边框或背景,所以边框半径什么也不做。我错过了什么吗?
    • 感谢您的回答和您的时间。我不能使用“边距” - 我需要表格内的空间 - 在“边框底部”线和表格两侧之间。你能给我建议我该怎么做吗?我不知道是否可以在这里发布所需表格的图片? img 链接:i.imgur.com/mExacU4.png
    • 好的,在这种情况下,您不能使用border-collapse。我在答案中创建了一个新的 sn-p 并进行了必要的更改。希望你喜欢这个。注意:我还在桌子周围加了一个边框,以证明它有效。当然,你可以更新。
    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 2019-01-27
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 2011-11-29
    • 2017-03-29
    相关资源
    最近更新 更多