刘明芯 發表於 2026-5-3 22:16:54

diaplay:table布局神器的绝妙应用场景

<h3>一、CSS display属性与表格布局相关的属性值解释</h3>
<ul><li>table &nbsp; &nbsp;此元素会作为块级表格来显示(类似 &lt;table&gt;),表格前后带有换行符。</li><li>table-row-group &nbsp; &nbsp;此元素会作为一个或多个行的分组来显示(类似 &lt;tbody&gt;)。</li><li>table-header-group &nbsp; &nbsp;此元素会作为一个或多个行的分组来显示(类似 &lt;thead&gt;)。</li><li>table-footer-group &nbsp; &nbsp;此元素会作为一个或多个行的分组来显示(类似 &lt;tfoot&gt;)。</li><li>table-row &nbsp; &nbsp;此元素会作为一个表格行显示(类似 &lt;tr&gt;)。</li><li>table-column-group &nbsp; &nbsp;此元素会作为一个或多个列的分组来显示(类似 &lt;colgroup&gt;)。</li><li>table-column &nbsp; &nbsp;此元素会作为一个单元格列显示(类似 &lt;col&gt;)</li><li>table-cell &nbsp; &nbsp;此元素会作为一个表格单元格显示(类似 &lt;td&gt; 和 &lt;th&gt;)</li><li>table-caption &nbsp; &nbsp;此元素会作为一个表格标题显示(类似 &lt;caption&gt;)</li></ul>
<h3>二、等高三栏布局</h3>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202309/2023091215345754.png" /></p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      * {
            margin: 0;
            padding: 0;
      }
    &lt;/style&gt;
    &lt;style&gt;
      .main {
            display: table;
            border-collapse: collapse;
      }
      .nav {
            display: table-cell;
            width: 180px;
            background-color: red;
      }
      .extras {
            display: table-cell;
            width: 180px;
            padding-left: 10px;
            border-right: 1px dotted #d7ad7b;
            background-color: #d7ad7b;
      }
      .content {
            display: table-cell;
            width: 380px;
            padding-left: 10px;
            background-color: aqua;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="wrapper"&gt;
    &lt;div class="main"&gt;
      &lt;div class="nav"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;p&gt;2&lt;/p&gt;
      &lt;/div&gt;
      &lt;div class="extras"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;p&gt;2&lt;/p&gt;
            &lt;p&gt;3&lt;/p&gt;
      &lt;/div&gt;
      &lt;div class="content"&gt;
            &lt;p&gt;1&lt;/p&gt;
            &lt;p&gt;2&lt;/p&gt;
            &lt;p&gt;3&lt;/p&gt;
            &lt;p&gt;4&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div>
<h3>三、等高栅格布局</h3>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202309/2023091215345755.png" /></p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      * {
            margin: 0;
            padding: 0;
      }
    &lt;/style&gt;
    &lt;style&gt;
      .grid {
            display: table;
            border-spacing: 10px;
            background-color: orangered;
      }
      .row {
            display: table-row;
      }
      .image {
            display: table-cell;
            width: 120px;
            background-color: #000;
            padding: 8px;
      }
      .image img {
            width: 100%;
      }
      .image p {
            color: #ffffff;
            padding-top: 8px;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="grid"&gt;
    &lt;div class="row"&gt;
      &lt;div class="image"&gt;
            &lt;img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1287814793,457485829&amp;fm=26&amp;gp=0.jpg"&gt;
            &lt;p&gt;描述1&lt;/p&gt;
            &lt;p&gt;描述2&lt;/p&gt;
      &lt;/div&gt;
      &lt;div class="image"&gt;
            &lt;img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1287814793,457485829&amp;fm=26&amp;gp=0.jpg"&gt;
            &lt;p&gt;描述1&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="row"&gt;
      &lt;div class="image"&gt;
            &lt;img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1287814793,457485829&amp;fm=26&amp;gp=0.jpg"&gt;
            &lt;p&gt;描述1&lt;/p&gt;
      &lt;/div&gt;
      &lt;div class="image"&gt;
            &lt;img src="https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1287814793,457485829&amp;fm=26&amp;gp=0.jpg"&gt;
            &lt;p&gt;描述1&lt;/p&gt;
            &lt;p&gt;描述2&lt;/p&gt;
            &lt;p&gt;描述3&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div>
<h3>四、多行文本垂直居中</h3>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202309/2023091215345756.png" /></p>
<div class="jb51code"><pre class="brush:xhtml;">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;Title&lt;/title&gt;
    &lt;style&gt;
      * {
            margin: 0;
            padding: 0;
      }
    &lt;/style&gt;
    &lt;style&gt;
      .article {
            display: table;
            width: 300px;
            height: 300px;
            background-color: yellow;
      }
      .multiline {
            display: table-cell;
            background-color: blueviolet;
            vertical-align: middle;
      }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="article"&gt;
    &lt;p class="multiline"&gt;申请原创将启用(Creative Commons )版权模板,如果不是原创文章,请选择转载或翻译 原创文章默认开启打赏, 打赏管理&lt;/p&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div>
<h3>&nbsp;五、display: table属性布局和table元素布局的区别?</h3>
<p>一般的,<strong>不推荐使用table元素进行页面布局</strong>。table元素在HTML当中是一个<strong>包含语义的标签</strong>:它描述什么是数据。因此,你只能<strong>用它来标记那些需要制表的数据</strong>,例如一张财务信息表。如果数据能够以电子表格的形式保存在你的电脑中,那它在HTML文档中很可能需要用到table标签进行标记。</p>
<p>display的table属性值只是声明了某些元素在浏览器中的样式&mdash;&mdash;它不包含语义。如果使用table元素来进行布局,它将会告诉客户端:这些数据是制表的。使用一些display属性被设置为table和table-cell之类的div标签,除了告诉客户端以某种特定的样式来渲染它们以外,不会告诉客户端任何语义,只要客户端能够支持这些属性值。<br />当然,我们同样还要注意,<strong>当真的需要制表数据的时候,不要使用一大堆被声明为display:table;的div元素</strong>。</p>
<p>CSS表格除了包含table布局的普通规则之外,同时还有着CSS table布局的超强特性:缺少的表格元素会被浏览器以匿名方式创建。</p>
頁: [1]
查看完整版本: diaplay:table布局神器的绝妙应用场景