15

我只是想实现左列有两个合并行而右列没有合并的效果。我怎样才能实现这种布局?

html 表看起来像 -

<table border="1" >
  <tr>
    <td rowspan="2">Div 1</td>
    <td> Div 2 </td>
  </tr>
  <tr>
    <td>Div3</td>
  </tr>
</table>​​​​​​

编辑:我想使用 Div 来实现这一点。我会将用户控件放在每个 div 元素中。重要的是 Div3 从 div2 下方开始,而不是在 Div1 下方。

[对不起,这是第一篇,无法添加图片]

谢谢。

4

2 回答 2

8

CSS

    body {
      margin: 0;
      padding: 50px;
      background-color: #FFFFFF;
      color: #000000;
      font-family: Arial, Helvetica, sans-serif;
    }
    .tablewrapper {
      position: relative;
    }
    .table {
      display: table;
    }
    .row {
      display: table-row;
    }
    .cell {
      display: table-cell;
      border: 1px solid red;
      padding: 1em;
    }
    .cell.empty
    {
      border: none;
      width: 100px;
    }
    .cell.rowspanned {
      position: absolute;
      top: 0;
      bottom: 0;
      width: 100px;
    }

<div class="tablewrapper">
      <div class="table">
        <div class="row">
          <div class="cell">
            Top left
          </div>
          <div class="rowspanned cell">
            Center
          </div>
          <div class="cell">
            Top right
          </div>
        </div>
        <div class="row">
          <div class="cell">
            Bottom left
          </div>
          <div class="empty cell"></div>
          <div class="cell">
            Bottom right
          </div>
        </div>
      </div>
    </div>

演示http ://www.sitepoint.com/rowspans-colspans-in-css-tables/

于 2012-11-27T14:06:09.553 回答
1

2017 年引入了网格布局正是为了这个目的,而且可能更复杂。

在您的情况下,您可以使用例如inline-grid+ grid-template-areas

#page {
  display: inline-grid;
  grid-template-areas: "aside main"
                       "aside foot";
}

#page > aside {
  grid-area: aside;
  background: lightgreen;
}
#page > main {
  grid-area: main;
  background: lightpink;
}
#page > footer {
  grid-area: foot;
  background: lightblue;
}
<section id="page">
  <aside>aside 1</aside>
  <main>main 2</main>
  <footer>footer 3</footer>
</section>

于 2020-07-07T16:12:24.127 回答