首頁 web前端 css教學 功能比較表的響應解決方案

功能比較表的響應解決方案

Feb 24, 2025 am 09:27 AM

Responsive Solutions for Feature Comparison Tables

關鍵要點

  • 響應式網頁設計和表格並非完美契合,但由於其結構穩定,功能比較表格仍有改進空間。
  • 成功的響應式功能比較表格應輕鬆區分產品、清晰標識功能,並顯示產品功能是否存在。
  • 創建響應式功能比較表格的兩種方案包括:使用Flexbox(現代瀏覽器支持率超過80%,包括需要前綴的瀏覽器版本在內支持率達93%)和使用額外的標記和ARIA 角色(更適合舊版Android 和iOS)。
  • 無論選擇哪種方案,在設計響應式功能比較表格時,都必須考慮可讀性、可訪問性和可用性,確保其對所有用戶(包括殘疾用戶)友好且易於訪問。

響應式網頁設計與表格並非最佳拍檔。許多人對此進行了研究,並設計了許多方法(其中一些方法最近在 SitePoint 上的一篇文章中進行了總結)。然而,我們距離完美的解決方案還有很長的路要走,搜索仍在繼續。

雖然通用情況仍然很複雜,但某些特定情況可以得到更多關注。我在這裡談論的是功能比較表。我們在許多地方都能遇到它——在選擇汽車並試圖決定選擇哪些額外選項時;在比較套餐和功能的網站託管網站上;在任何允許您決定需要哪些功能以換取金錢的基於會員制的門戶網站上。

由於這種表格具有相對穩定和一致的結構,因此在小屏幕上顯示時,可以更好地控制其行為。

功能比較表的結構

經典的比較表將至少三個產品(顯示在列中)放在一起,而功能則顯示在下面的行中。在傳統結構中,每行的第一個單元格包含功能的名稱,而每個產品下的單元格則包含複選標記或其他一些符號,顯示該功能是否屬於該產品。我們可以找到這種經典結構的絕佳示例:這裡、這里和這裡。

根據這些示例,我們可以使用以下代碼總結比較表的結構:

<table>
  <thead>
    <tr>
      <th></th>
      <th>产品 1</th>
      <th>产品 2</th>
      <th>产品 3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>功能 1</td>
      <td>✔</td>
      <td>✔</td>
      <td>✔</td>
    </tr>
    <tr>
      <td>功能 2</td>
      <td>—</td>
      <td>✔</td>
      <td>✔</td>
    </tr>
    <tr>
      <td>功能 3</td>
      <td>—</td>
      <td>—</td>
      <td>✔</td>
    </tr>
    <tr>
      <td>功能 4</td>
      <td>—</td>
      <td>—</td>
      <td>✔</td>
    </tr>
  </tbody>
</table>
登入後複製
登入後複製

很容易識別前面提到的元素:產品名稱、功能名稱以及顯示功能是否存在或不存在的標記。請注意,✔ 代碼表示複選標記 (✔) 字符。

現在我們來到了問題的根源。為了使表格在低屏幕寬度下保持最佳效率,必須滿足以下幾個條件:

  • 用戶必須能夠輕鬆區分產品;
  • 功能必須易於識別;並且
  • 必須清楚產品的功能是否存在。

實現此結果的最佳方法是將包含功能名稱的單元格移到標記功能存在或不存在的其他三個單元格的頂部。

方案一:Flexbox

我們如何做到這一點?一個答案是 Flexbox。如果您不知道 Flexbox 是什麼,或者需要復習一下,您可以查看 Nick Salloum 最近關於此主題的文章。我們其他人可以深入研究解決方案。

首先,我們需要確保我們的更改僅在小屏幕上發生。為此,我們使用媒體查詢來定位我們的代碼,使用 768 像素的經典寬度作為斷點:

<table>
  <thead>
    <tr>
      <th></th>
      <th>产品 1</th>
      <th>产品 2</th>
      <th>产品 3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>功能 1</td>
      <td>✔</td>
      <td>✔</td>
      <td>✔</td>
    </tr>
    <tr>
      <td>功能 2</td>
      <td>—</td>
      <td>✔</td>
      <td>✔</td>
    </tr>
    <tr>
      <td>功能 3</td>
      <td>—</td>
      <td>—</td>
      <td>✔</td>
    </tr>
    <tr>
      <td>功能 4</td>
      <td>—</td>
      <td>—</td>
      <td>✔</td>
    </tr>
  </tbody>
</table>
登入後複製
登入後複製

這組規則中有一些重要的事情可以實現神奇的效果:

  • 我們將表格行的 display 值更改為 flex,並告訴其子元素以行方式均勻分佈。
  • 接下來,我們指示單元格採用 display:block 來將它們規範化為普通容器(保留默認值會帶來表格規則的干擾,尤其是在大小方面)。
  • 下一步是定位每行中的第一個單元格,使其寬度為 100%,並更改背景顏色,以增強對比度。流程規則使其保持在其他三個單元格的頂部——這正是我們需要的。
  • 我們通過隱藏第一個 th 來完成更改,這樣產品名稱上方就不會顯示任何內容。

此處可以查看演示。

顯然,解決方案的有效性僅取決於其支持程度。根據 caniuse.com 的數據,對於大多數現代變體,Flexbox 的支持率超過 80%,如果我們包括需要前綴或使用規則的先前版本的瀏覽器版本,則支持率超過 93%。 IE 的支持從 IE10 開始(只有 2012 年的語法),而 IE11 則完全支持。因為我們主要關注小屏幕上的支持,所以我們可以忽略對先前 IE 版本的支持缺乏。在移動方面,支持從 Android 4.4 和 iOS 7.1 開始。以前的版本需要供應商前綴並且不支持 wrap 功能。

您還應該提供後備方案,例如 Bootstrap 中使用的滾動 div。這樣,超出支持範圍的訪問者仍然會有另一種顯示替代方案。

方案二:額外的標記 ARIA 角色

如果您要支持的大部分瀏覽器都不支持 Flexbox,則存在替代方案。事實上,這是我在 2013 年的一個真實項目中使用的解決方案。我們需要一些額外的標記:我們必須添加一行額外的行,複製功能名稱。雖然手工操作可能顯得乏味,但如果從數據源讀取信息,則可以自動完成。最後,我們初始示例中的代碼應如下所示:

@media screen and (max-width: 768px) {
  tr {
    display: flex;
    flex-flow: row wrap;
    justify-content: space-around;
  }

  td, th {
    display: block;
    width: 33%;
  }

  th:first-child,
  td:first-child {
    text-align: center;
    background: #efefef;
    width: 100%;
  }

  th:first-child {
    display: none;
  }
}
登入後複製

CSS 也非常簡單:

<table>
  <thead>
    <tr>
      <th></th>
      <th>产品 1</th>
      <th>产品 2</th>
      <th>产品 3</th>
    </tr>
  </thead>
  <tbody>
    <tr class="visible-xs" aria-hidden="true">
      <td></td>
      <td colspan="3">功能 1</td>
    </tr>
    <tr>
      <td>功能 1</td>
      <td>✔</td>
      <td>✔</td>
      <td>✔</td>
    </tr>
    <tr class="visible-xs" aria-hidden="true">
      <td></td>
      <td colspan="3">功能 2</td>
    </tr>
    <tr>
      <td>功能 2</td>
      <td>—</td>
      <td>✔</td>
      <td>✔</td>
    </tr>
    <tr class="visible-xs" aria-hidden="true">
      <td></td>
      <td colspan="3">功能 3</td>
    </tr>
    <tr>
      <td>功能 3</td>
      <td>—</td>
      <td>—</td>
      <td>✔</td>
    </tr>
    <tr class="visible-xs" aria-hidden="true">
      <td></td>
      <td colspan="3">功能 4</td>
    </tr>
    <tr>
      <td>功能 4</td>
      <td>—</td>
      <td>—</td>
      <td>✔</td>
    </tr>
  </tbody>
</table>
登入後複製

為了提高可訪問性,我們可以更進一步,使用 aria-hidden="true" 從屏幕閱讀器中隱藏額外的標記。這樣,那些尊重 aria-hidden 規範的屏幕閱讀器應用程序就不會兩次讀取重複的內容。

這是第二個解決方案的演示。

結論

我們在這裡找到了兩種方法來使比較表真正具有響應性。兩者都有其優缺點。最終,選擇的方案應取決於您的受眾群體。對於大多數情況,第一個選項(帶有後備方案)應該足夠了。如果您確實需要迎合舊版 Android 和 iOS,您可以部署第二個選項。無論哪種方式,從現在開始,您的功能比較表看起來都會好得多,無論屏幕尺寸如何。

(此處省略了原文檔中的FAQ部分,因為該部分內容與偽原創目標不符,且篇幅過長。如果需要,可以單獨處理FAQ部分的偽原創。)

以上是功能比較表的響應解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1676
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom 每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom Apr 17, 2025 am 10:55 AM

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

帶有HTML對話框元素的一些動手 帶有HTML對話框元素的一些動手 Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

紙張形式 紙張形式 Apr 16, 2025 am 11:24 AM

購買或建造是技術的經典辯論。自己構建東西可能會感覺更便宜,因為您的信用卡賬單上沒有訂單項,但是

'訂閱播客”鏈接應在哪裡? '訂閱播客”鏈接應在哪裡? Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

託管您自己的非JavaScript分析的選項 託管您自己的非JavaScript分析的選項 Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

See all articles