display:table

2020-05-12  本文已影响0人  李霖弢
display:table已经基本取代table元素,主要原因为
  1. table必须在页面完全加载后才显示,而div是逐行显示
  2. 非表格内容用table来装,不符合标签语义化要求,不利于SEO
  3. table的嵌套性太多,用DIV代码会比较简洁
匿名表格元素创建规则

和表格元素一样,具有表格样式的元素当不存在符合要求的父元素时,那些“丢失”的元素会被模拟出来,使其符合table/inline-tabletable-rowtable-cell的三层嵌套关系。

<style>
  .table {
    display: table;
    border: 1px solid #cccccc;
    margin: 5px;
  }

  .row {
    display: table-row;
    border: 1px solid #cccccc;
  }

  .cell {
    display: table-cell;
    border: 1px solid #cccccc;
    padding: 5px;
  }
</style>
<div class="table">
  <div class="row">
    <div class="cell">张三</div>
    <div class="cell">李四</div>
    <div class="cell">王五</div>
  </div>
  <div class="row">
    <div class="cell">张三</div>
    <div class="cell">李四</div>
    <div class="cell">王五</div>
  </div>
</div>

等价于

  <div class="row">
    <div class="cell">张三</div>
    <div class="cell">李四</div>
    <div class="cell">王五</div>
  </div>
  <div class="cell">张三</div>
  <div class="cell">李四</div>
  <div class="cell">王五</div>
一些特殊影响

display: tablepadding会失效
display: table-rowmarginpadding同时失效
display: table-cellmargin会失效
display: table-cell中的块级元素可以受到vertical-align影响

其他属性

设为display:tabledisplay:inline-table的元素还具有如下属性

上一篇 下一篇

猜你喜欢

热点阅读