搜尋

表格邊框樣式

在網頁裡使用表格時,一定會設定「邊框」,除了基本邊框樣式屬性,表格元素也有自己特有的邊框樣式屬性,透過 border-collapse 和 border-spacing 控制重疊或分離邊框,這篇教學會介紹表格邊框的樣式屬性。

快速導覽:

CSS 教學 - 表格邊框樣式

border-collapse 邊框重疊

border-collapse 是專屬顯示類型為 tableinline-table 的樣式屬性,具有繼承特性,這個樣式屬性可以控制表格裡每個儲存格邊框的「重疊」或「分離」,屬性值說明如下:

屬性值 說明
separate 邊框分離 ( table 元素預設值 )。
collapse 邊框重疊。

下方範例會呈現不同 border-collapse 屬性值的表格 ( 有額外設定表格邊框樣式 ),從中可以注意到,table 本身也可以設定邊框,如果處於邊框重疊樣式狀態,table 的邊框也會與 td 重疊而合併成單一邊框,且會忽略 padding 的設定

線上展示:https://codepen.io/oxxo/pen/wvLOrGJ

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="b">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    border: 1px solid #000;
    margin: 10px;
    padding: 10px;
  }
  td {
    border: 1px solid #000;
    padding: 10px;
  }
  .a {border-collapse: collapse;}
  .b {border-collapse: separate;}
</style>

CSS 教學 - 表格邊框樣式 - border-collapse 邊框重疊

邊框重疊的優先順序

有別於表格裡各個元素有「階層」之分,邊框重疊時也有順序之分,下方列出重疊時採用邊框樣式的權重,權重從上到下,越上方權重越高,就會優先顯示。

  • 邊框樣式設定為 hidden所有重疊的邊框都會被隱藏。
  • 寬度大的邊框優先顯示。
  • 邊框樣式權重順序:double > solid > dashed > dotted > ridge > outset > groove > inset > none
  • 如果上述都相同,邊框顏色會按照表格各個元素的階層排列,參考「表格元素排列階層」。

下方範例使用四個 div,分別代表邊框重疊時的四種權重表現。

線上展示:https://codepen.io/oxxo/pen/poXYWya

<!-- HTML 程式碼 -->
<table class="a">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="b">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="c">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>
<table class="d">
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>papaya</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    margin: 10px;
    padding: 10px;
    border-collapse: collapse;
  }
  td {
    border: 3px dashed red;
    padding: 10px;
  }
  .a {border: hidden;}            /* 重疊部分隱藏 */
  .b {border: 5px dotted blue;}   /* 重疊部分使用 5px 粗的這組邊框樣式 */
  .c {border: 3px solid green;}   /* 重疊部分使用 solid 的這組邊框樣式 */
  .d {border: 3px dashed green;}  /* 重疊部分使用 td 的邊框樣式,因為 td 權重比 table 高 */
 </style>

CSS 教學 - 表格邊框樣式 - 邊框重疊的四種權重表現

如果在重疊邊框的狀態下,設定不同 td 的邊框,也可以因為權重所產生的重疊效果,例如正中間的儲存格就不會有邊框,因為設定 hidden 的權重最大。

線上展示:https://codepen.io/oxxo/pen/abgMLNX

<!-- HTML 程式碼 -->
<table>
  <tr>
    <td class="a">A</td>
    <td class="b">B</td>
    <td class="c">C</td>
  </tr>
  <tr>
    <td class="i">I</td>
    <td class="j">J</td>
    <td class="k">K</td>
  </tr>
  <tr>
    <td class="x">X</td>
    <td class="y">Y</td>
    <td class="z">Z</td>
  </tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    margin: 10px;
    padding: 10px;
    border-collapse: collapse;
  }
  td {padding: 10px 20px;}
  .a {border: 10px dashed red;}
  .b {border: 5px solid orange;}
  .c {border: 5px dotted green;}
  .i {border: 10px solid cyan;}
  .j {border: hidden;}
  .k {border: 10px dotted pink;}
  .x {border: 5px solid black;}
  .y {border: 10px dashed gray;}
  .z {border: 10px double blue;}
 </style>

CSS 教學 - 表格邊框樣式 - td 邊框重疊的優先順序效果

border-spacing 邊框間距

border-spacing 是專屬顯示類型為 tableinline-table 的樣式屬性,具有繼承特性,這個樣式屬性可以控制表格裡「儲存格邊框與邊框」之間的「間距」,間距會從邊框外緣延伸出去,border-spacing 支援所有長度單位,通常使用絕對長度 px 作為單位。

注意,表格儲存格元素並不支援 margin 外邊界的樣式屬性,需要使用 border-spacing 設定間隔。

在沒有設定 border-spacingborder-collapse:separate 的狀態下,表格裡每個儲存格預設採用 2px 的間距,設定後就會按照設定值進行間隔,下方範例將表格設定為 border-spacing:10px

線上展示:https://codepen.io/oxxo/pen/VwJRMjw

<!-- HTML 程式碼 -->
<table>
  <tr><td>apple</td><td>oxxo</td></tr>
  <tr><td>banana</td><td>orange</td></tr>
</table>

<!-- CSS 程式碼 -->
<style>
  table {
    border: 20px solid #000;
    padding: 20px;
    border-spacing: 20px;
  }
  td {
    border: 20px solid #000;
    width: 120px;
    height: 100px;
    background: orange;
  }
 </style>

CSS 教學 - 表格邊框樣式 - border-spacing 邊框間距

border-spacing 支援「兩個數值」的屬性值,使用一個數值表示上下左右都是同樣間距,使用兩個數值表示「左右、上下」間距,下方範例將剛剛的程式碼改成兩個數值,就能清楚看到上下的間距變成 5px,左右仍然維持 20px。

table {
  border: 20px solid #000;
  padding: 20px;
  border-spacing: 20px 5px;  /* 左右 20px,上下 5px */
}

td {
  border: 20px solid #000;
  width: 120px;
  height: 100px;
  background: orange;
}

CSS 教學 - 表格邊框樣式 - border-spacing 設定兩個數值

小結

表格的邊框雖然與一般網頁元素的邊框大同小異,但又具有自己專屬的設定樣式,特別是重疊與分開的特性,有時會讓初學者不容易掌握,透過這邊教學的介紹,應該就能對表格邊框有更深一層的認識。

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~

CSS 教學

基本介紹

認識 CSS 開始使用 CSS CSS 語法規則 CSS 命名原則

CSS 選擇器

認識 CSS 選擇器 優先順序 ( 權重 ) 樣式繼承與聯集 元素選擇器 ID 和 Class 選擇器 屬性選擇器 文件結構選擇器 虛擬類別選擇器 ( 結構 ) 虛擬類別選擇器 ( 類型 ) 虛擬類別選擇器 ( 輸入 ) 虛擬類別選擇器 ( 行為 ) 虛擬類別選擇器 ( 超連結 ) 虛擬類別選擇器 ( 邏輯 ) 虛擬類別選擇器 ( 其他 ) 虛擬元素選擇器 群組與組合選擇器

數值與單位

關鍵字與文字數值 長度與角度單位 顏色單位 位置名稱與時間單位

變數與函式

變數 數學計算 文字與清單計數 生成內容與引號 色彩模型 漸層色 影像濾鏡

文字樣式

使用通用字型 使用外部字型 @font-face 定義字型 文字尺寸 常用文字樣式 文字換行 文字空白與 Tab 大小 文字行高與縮排 文字水平與垂直對齊 文字書寫方向 特殊文字樣式

元素容器

容器顯示類型 ( display ) 元素 display 對照表 盒子模型 ( Box Model ) 寬度與高度 內邊距 ( padding ) 外邊界 ( margin ) 邊框 ( border ) 邊框圓角 影像邊框 輪廓 ( outline ) 可見性與透明度 內容溢出與裁切

背景與陰影

背景顏色 背景圖 ( 定位、尺寸 ) 背景圖 ( 固定、重複 ) 背景圖 ( 多重背景、混合 ) 背景縮寫 ( background ) 容器陰影 ( box-shadow )

清單與表格

清單樣式 清單計數器 定義計數規則 表格基本樣式 表格邊框樣式 表格內容寬度與對齊

基本排版與定位

元素排版方式 浮動 ( float ) 浮動形狀 定位 ( position )

Flexbox 彈性排版

Flexbox 彈性盒子 Flexbox 對齊方式