搜尋
首頁科技週邊IT業界佈局秘密武器#1:CSS表屬性

CSS display: table 屬性:解決佈局難題的利器

核心要點:

  • CSS 的 table 屬性功能強大,能解決多種佈局問題,並兼容所有現代瀏覽器。它允許 HTML 元素像表格元素一樣運作,為複雜的佈局和對齊問題提供通用的解決方案。
  • CSS table 屬性可用於創建等高盒子、簡單的舊式佈局以及具有內容編排功能的自適應佈局。它在響應式設計中尤其有用,允許元素根據用戶的屏幕尺寸調整其大小和位置。
  • 儘管 CSS table 屬性有很多優點,但它也有一些局限性。與其他顯示屬性相比,它在創建複雜佈局方面的靈活性較低,並且與某些 CSS 屬性(如 floatposition)配合使用效果不佳。但是,在許多情況下,使用 table 屬性的優勢大於其缺點。

Layout Secret Weapon #1: The CSS Table Property

目前,Flexbox 可能是佈局構建的熱門新技術。 Flexbox 適應可用空間的驚人能力,讓許多人對它的可能性充滿了期待。然而,它無法解決所有佈局問題,而且它與舊版瀏覽器的兼容性也存在一些問題。 Flexbox 目前並沒有通用的 polyfill(舊版瀏覽器的回退方案)——目前我只知道一個針對 2009 年版本的 IE 的 polyfill:Flexie。在許多情況下,我發現使用經常被忽略的 CSS table 顯示屬性可以找到更簡單的解決方案。這些 CSS 屬性得到了所有相關瀏覽器的廣泛支持(注意,這排除了 IE6 和 IE7),並且可以優雅地解決一些主要的和小的佈局難題。

如果您不完全熟悉此技術,更改 DIV 的 display 屬性可以使其 表現 得像表格或表格元素。

等等,用表格進行佈局?這不好吧?

21 世紀初最熱門的網頁設計話題之一,就是關於使用 HTML 表格代碼作為佈局工具的爭論。那是一種 hack,現在仍然是不好的做法。

相反,我們在這裡使用完全有意義的 HTML(即 DIV、SECTION、HEADER 等),只是從 CSS 中藉用了一些有用的表格表示知識。這正是 CSS 的設計目的,所以不要覺得這是一個 hack 或補丁。它不是。

使用 display: table-cell

在下面的示例中,點擊頂部的按鈕,您可以將三個彩色 DIV 的 display 屬性從 block 更改為 table-cell

[CodePen 示例鏈接 - 替換為實際 CodePen 鏈接]

您可以看到 DIV 如何在不需要任何 float 屬性的情況下進行水平排列,並且您還可以訪問一些典型的表格規則(就像 vertical-align)。

如果您需要一些間距,請注意,經典的 CSS margin 屬性對錶格單元格沒有任何影響:而是使用 border-spacing(它必須應用於容器表格元素)。如果您想使用這些規則,可以在 Codepen 中找到一些註釋行。

此技術對於解決許多難以用其他方法解決的問題非常有用。

我已經挑選出三個簡單的案例,其中 table 顯示屬性非常有價值。

但首先讓我們看看它們:

display 屬性 呈現為
table, inline-table
display 属性 呈现为
table, inline-table table
table-column col
table-column-group colgroup
table-row-group tbody
table-header-group thead
table-footer-group tfoot
table-row tr
table-cell td
table-caption caption
table-column col
table-column-group colgroup
table-row-group tbody
table-header-group thead
table-footer-group tfoot
table-row tr
table-cell td
table-caption caption

有關表格和 CSS 的真正全面指南,請查看 CSS Tricks:[CSS Tricks 的表格指南鏈接 - 替換為實際鏈接]

案例 1. 等高盒子

我認為這是我處理的最常見問題之一:有一些帶有未知內容的浮動盒子,您必須使它們都具有相同的高度。

我知道,Flexbox 可以輕鬆解決這個問題,但表格規則也可以做到。

只需將 display: table(或 table-row)屬性應用於容器,並將 display: table-cell 屬性應用於內部盒子。注意要刪除任何 float 屬性(否則 table-cell 屬性不會生效)。

HTML:

<div id="wrapper">
    <div id="div1"></div>
    <div id="div2"></div>
    <div id="div3"></div>
</div>

CSS:

#wrapper {
    display: table;
}
#wrapper div {
    display: table-cell;
}

[CodePen 示例鏈接 - 替換為實際 CodePen 鏈接]

案例 2. 簡單的舊式佈局

這是一個比較過時的例子,但我認為您可能需要處理它,就像我最近做的那樣。

幾個月前,我收到一個與以下方案非常相似的圖形佈局。它需要與 IE8 兼容,我發現最好的方法是使用 CSS 表格規則:

[CodePen 示例鏈接 - 替換為實際 CodePen 鏈接]

案例 3. 具有內容編排功能的自適應佈局

前面的例子引導我們進入一個新的主題:是否可以使用 CSS 表格規則構建自適應佈局?

這不僅是可能的,而且我們還可以執行一些內容編排任務。

我們已經看到,如何將兩個 div 的 display 屬性從 block 更改為 table-cell 可以將其排列方式從垂直更改為水平。

此外,具有 table-header-group 屬性的元素會被置於表格佈局的頂部。同樣,table-footer-group 元素會被置於底部,依此類推。在重新格式化響應式佈局時,這可能出乎意料地有用。

在下面的筆中,標題元素在窗口調整大小時與其位置與導航元素交換,只需將其 display 屬性更改為 table-header-group

HTML:

<div id="wrapper">
    <nav></nav>
    <header></header>
    <div id="banner2"></div>
    <footer></footer>
</div>

CSS:

#wrapper, header {
    display: block; /* 我们实际上不需要此规则,因为它默认为此值 */
}

@media (min-width: 48em) {
    #wrapper {
        display: table;
    }
    header {
        display: table-header-group;
    }
}

footer#banner2 div 也會出現類似的行為。

這是一個佈局方案:左側是默認的移動版本,右側是桌面版本:

Layout Secret Weapon #1: The CSS Table Property

這是一個運行中的演示:

[CodePen 示例鏈接 - 替換為實際 CodePen 鏈接]

有關此論點的更多信息,還可以查看:

  • 使用 display:table 進行 CSS 堆疊
  • CSS 佈局的反英雄——“display:table

結論

CSS table 顯示屬性是解決大小佈局挑戰的被低估且有價值的解決方案。

雖然我個人可能不會選擇使用它們來構建複雜的佈局,但它們肯定可以解決與佈局部分相關的許多難題。

關於 CSS table 屬性的常見問題解答

(此處應補充關於CSS table 屬性的常見問題解答,內容與原文類似,但需調整措辭,避免重複。)

請注意,以上所有CodePen鏈接都需要替換成實際的CodePen鏈接。 我無法直接訪問和創建CodePen。

以上是佈局秘密武器#1:CSS表屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
定制電信軟件的好處定制電信軟件的好處May 11, 2025 am 08:28 AM

定制电信软件开发无疑是一项相当大的投资。然而,从长远来看,您可能会意识到,这样的项目可能更具成本效益,因为它可以像市场上任何现成的解决方案一样提高您的生产力。了解构建定制电信系统的最重要优势。 获取您所需的确切功能 您可以购买的现成电信软件有两个潜在问题。有些缺乏可能显著改善您工作效率的有用功能。有时您可以通过一些外部集成来增强它们,但这并不总是足以使它们变得出色。 其他软件功能过多,使用起来过于复杂。您可能不会使用其中的一些(永远不会!)。大量的功能通常还会增加价格。 基于您的需求

CNCF觸發了ARM64和X86的平台平等突破CNCF觸發了ARM64和X86的平台平等突破May 11, 2025 am 08:27 AM

Arm64 架構開源軟件的 CI/CD 難題與解決方案 在 Arm64 架構上部署開源軟件需要一個強大的 CI/CD 環境。然而,Arm64 和傳統 x86 處理器架構的支持水平之間存在差異,Arm64 通常處於劣勢。面向多種架構的基礎設施組件開發人員對工作環境有一定的期望: 一致性:跨平台使用的工具和方法保持一致,避免因採用不太流行的平台而需要改變開發流程。 性能:平台和支持機制具有良好的性能,確保在支持多個平台時部署方案不會因速度不足而受影響。 測試覆蓋率:對所有平台同時進行效率、合規性和

21個開發人員新聞通訊將在2025年訂閱21個開發人員新聞通訊將在2025年訂閱Apr 24, 2025 am 08:28 AM

與這些頂級開發人員新聞通訊有關最新技術趨勢的了解! 這個精選的清單為每個人提供了一些東西,從AI愛好者到經驗豐富的後端和前端開發人員。 選擇您的收藏夾並節省時間搜索REL

使用AWS ECS和LAMBDA的無服務器圖像處理管道使用AWS ECS和LAMBDA的無服務器圖像處理管道Apr 18, 2025 am 08:28 AM

該教程通過使用AWS服務來指導您通過構建無服務器圖像處理管道。 我們將創建一個部署在ECS Fargate群集上的next.js前端,與API網關,Lambda函數,S3桶和DynamoDB進行交互。 Th

CNCF ARM64飛行員:影響和見解CNCF ARM64飛行員:影響和見解Apr 15, 2025 am 08:27 AM

該試點程序是CNCF(雲本機計算基礎),安培計算,Equinix金屬和驅動的合作,簡化了CNCF GitHub項目的ARM64 CI/CD。 該計劃解決了安全問題和績效

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具