CSS-6: 進階表格、屬性選擇器與變數使用全解析

更新於 發佈於 閱讀時間約 17 分鐘

在本章節,我們將製作圖書館庫存表格,複習關於表格的觀念並學習屬性選擇器、變數的觀念。

首先,我們要確立表格的架構。在<table>標籤中,使用<thead><tbody>標籤。

<body>
<h1>Book Inventory</h1>
<table>
<thead>
<tr>
<th>Title</th>
<th>Author</th>
<th>Category</th>
<th>Status</th>
<th>Rate</th>
<th>Frequence</th>
</tr>
</thead>
<tbody>

</tbody>
</table>
</body>

接著,我們先新增一本書的資訊。分別是書名、作者、分類、狀態、評價、借閱的頻繁度(class="available-1"表示頻繁度低)

<body>
<h1>Book Inventory</h1>
<table>
<thead>
<tr>
<th>Title</th>
<th>Author</th>
<th>Category</th>
<th>Status</th>
<th>Rate</th>
<th>Frequence</th>
</tr>
</thead>
<tbody>
<tr class="read">
<td>The Great Gatsby</td>
<td>F. Scott Fitzgerald</td>
<td>Fiction</td>
<td><span class="status">Read</span></td>
<td><span class="rate one"><span></span><span></span><span></span></span></td>
<td class="available-1"></td>
</tr>
</tbody>
</table>
</body>

好,我們再接著新增三本書。

<body>
<h1>Book Inventory</h1>
<table>
<thead>
<tr>
<th>Title</th>
<th>Author</th>
<th>Category</th>
<th>Status</th>
<th>Rate</th>
<th>Frequence</th>
</tr>
</thead>
<tbody>
<tr class="read">
<td>The Great Gatsby</td>
<td>F. Scott Fitzgerald</td>
<td>Fiction</td>
<td><span class="status">Read</span></td>
<td><span class="rate one"><span></span><span></span><span></span></span></td>
<td class="available-1"></td>
</tr>
<tr class="to-read">
<td>1984</td>
<td>George Orwell</td>
<td>Dystopian</td>
<td><span class="status">To Read</span></td>
<td><span class="rate two"><span></span><span></span><span></span></span></td>
<td class="available-2"></td>
</tr>
<tr class="in-progress">
<td>Becoming</td>
<td>Michelle Obama</td>
<td>Biography</td>
<td><span class="status">In Progress</span></td>
<td><span class="rate three"><span></span><span></span><span></span></span></td>
<td class="available-3"></td>
</tr>
<tr class="read">
<td>To Kill a Mockingbird</td>
<td>Harper Lee</td>
<td>Classic</td>
<td><span class="status">Read</span></td>
<td><span class="rate three"><span></span><span></span><span></span></span></td>
<td class="available-4"></td>
</tr>
</tbody>
</table>
</body>

目前版面有點亂,我們初步設定一下樣式。

h1 {
text-align: center;
font-family: Arial, sans-serif;
}

table {
width: 80%;
margin: 20px auto;
font-family: Arial, sans-serif;
border-collapse: collapse; //記得添加
}
th, td {
border: 1px solid #ddd;
padding: 10px;
text-align: center;
}
thead {
background-color: #f4f4f4;
}

呈現效果:

raw-image

接著,我們要介紹屬性選擇器,屬性選擇器用於根據元素的屬性或屬性值來選擇HTML元素。

以下是常見的屬性選擇器:

  1. [attribute]: 選擇帶有指定屬性的所有元素
[type] {
border: 1px solid red;
}
  1. [attribute="value"]: 選擇具有指定屬性和值完全匹配的的元素
// 選擇所有 "type" 屬性完全等於 "text" 的元素
[type="text"] {
background-color: yellow;
}
  1. [attribute~="value"]: 選擇屬性值中包含指定值的元素 (用空格分隔的單詞列表之一)
// 選擇
[class~="button"] {
font-weight: bold;
}
  1. [attribute^="value"]: 選擇屬性值以指定值開頭的元素。
/* 選擇所有 "href" 屬性值以 "https" 開頭的元素 */
[href^="https"] {
color: green;
}
  1. [attribute$="value"]: 選擇屬性值以指定值結尾的元素。
/* 選擇所有 "src" 屬性值以 ".png" 結尾的元素 */
[src$=".png"] {
border: 2px solid blue;
}
  1. [attribute*="value"]: 選擇屬性值中包含指定字串的元素,無論該字串的位置或是否是單獨的單字。
/* 選擇所有 "alt" 屬性中包含 "cat" 的元素 */
[alt*="cat"] {
background-color: lightblue;
}

好,接著我們就可以繼續為表格添加樣式了:

tr[class="read"] {
background-image: linear-gradient(to right, #d4edda, #c3e6cb);
}

tr[class="to-read"] {
background-image: linear-gradient(to right, #fff3cd, #ffeeba);
}

tr[class="in-progress"] {
background-image: linear-gradient(to right, #d1ecf1, #bee5eb);
}

呈現效果:

raw-image

好,接下來我們要為 Starus 增加邊框效果。

span {
display: inline-block;
}
/* 狀態樣式 */
span[class="status"] {
padding: 5px 10px;
border-radius: 5px;
}

tr[class="read"] span[class="status"] {
border: 1px solid #28a745;
background-image: linear-gradient(to right, #d4edda, #c3e6cb);
}

tr[class="to-read"] span[class="status"] {
border: 1px solid #ffc107;
background-image: linear-gradient(to right, #fff3cd, #ffeeba);
}

tr[class="in-progress"] span[class="status"] {
border: 1px solid #17a2b8;
background-image: linear-gradient(to right, #d1ecf1, #bee5eb);
}

呈現效果:

raw-image

再接下來,我們要讓 Rate 中呈現可以評分的圓框。為此我們要 選擇所有 <span> 元素,其 class 屬性的值以 "rate" 開頭。而子選擇器 > 表示僅選擇某元素的直接子元素,也就是說: 只有 class 屬性值以 "rate" 開頭的 <span> 父元素的直接子 <span> 元素會被套用樣式。

span[class^="rate"] > span {
width: 15px;
height: 15px;
margin: 0 2px;
border: 1px solid #ccc;
border-radius: 50%;
background-color: #e0e0e0;
}

呈現效果:

raw-image

好,接著我們要為每本書個別設定評分。

span[class~="one"] span:first-child {
background-image: linear-gradient(to right, #ffcccb, #f08080);
}

span[class~="two"] span:nth-child(-n+2) {
background-image: linear-gradient(to right, #ffe4b5, #f5deb3);
}

span[class~="three"] span {
background-image: linear-gradient(to right, #add8e6, #87cefa);
}
  • 其中我們對顏色套用了向右漸層的效果。
  • 要應用漸層,必須使用 background-image

呈現效果:

raw-image

好,最後,我們要介紹變數的觀念: CSS 變數(也稱為 自訂屬性)是一種在 CSS 中定義和使用值的方式,可以讓你更方便地重複使用、維護和管理樣式。

語法:

:root {
--main-color: #3498db;
--font-size: 16px;
--spacing: 10px;
}

:root(表示 HTML 文件的根元素)中,適用於整個頁面。

如何使用變數:

body {
color: var(--main-color);
font-size: var(--font-size);
margin: var(--spacing);
}

有了簡單的認識後,我們就可以為Frequence改變顏色來表示借閱的頻繁程度,首先,先定義好一些顏色變數。

:root {
--color1: #ffb3b3;
--color2: #ff8080;
--color3: #ff4d4d;
--color4: #e60000;
}

接著,我們再個別套用相應的設定。

.available-1 {
background-color: var(--color1);
}

.available-2 {
background-color: var(--color2);
}

.available-3 {
background-color: var(--color3);
}

.available-4 {
background-color: var(--color4);
}

呈現效果:

raw-image

最後,我們再添加一個 Degree 表示顏色所代表的頻繁程度。

  <div id="legend">
<span>Degree</span>
<div id="legend-gradient"></div>
</div>
</body>
#legend-gradient {
width: calc(50% + 20px);
height: 20px;
background-image: linear-gradient(
to right,
var(--color1) 0% 25%, /* 第一段:0% 到 25% */
var(--color2) 25% 50%, /* 第二段:25% 到 50% */
var(--color3) 50% 75%, /* 第三段:50% 到 75% */
var(--color4) 75% 100% /* 第四段:75% 到 100% */
);
}

呈現效果:

raw-image




留言
avatar-img
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
8會員
209內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/03/03
本章節你將了解 日期物件,包括處理日期的方法以及如何設定日期格式,切入要點的示範所有常見的使用方法範例與應用。
Thumbnail
2025/03/03
本章節你將了解 日期物件,包括處理日期的方法以及如何設定日期格式,切入要點的示範所有常見的使用方法範例與應用。
Thumbnail
2025/03/03
表單驗證是一個在用戶輸入資料時確保其正確性、完整性及格式符合要求的重要功能,它可以在用戶提交表單之前進行檢查,防止錯誤資料的傳輸。本章節將帶你初步了解其原理與使用。
2025/03/03
表單驗證是一個在用戶輸入資料時確保其正確性、完整性及格式符合要求的重要功能,它可以在用戶提交表單之前進行檢查,防止錯誤資料的傳輸。本章節將帶你初步了解其原理與使用。
2025/03/03
本篇文章深入淺出地介紹 JavaScript 正規表達式,從基本語法、常用符號、方法應用到進階的捕獲群組、斷言等,並搭配豐富的範例程式碼,幫助讀者快速掌握正規表達式的使用技巧。
2025/03/03
本篇文章深入淺出地介紹 JavaScript 正規表達式,從基本語法、常用符號、方法應用到進階的捕獲群組、斷言等,並搭配豐富的範例程式碼,幫助讀者快速掌握正規表達式的使用技巧。
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
高中數學主題練習—根式化簡
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
本文介紹瞭如何寫 HTML 標籤,製作一個簡單的自我介紹網頁。透過介紹寫標籤的實例,讓讀者能夠更瞭解如何在 HTML 中使用不同的標籤。
Thumbnail
本文介紹瞭如何寫 HTML 標籤,製作一個簡單的自我介紹網頁。透過介紹寫標籤的實例,讓讀者能夠更瞭解如何在 HTML 中使用不同的標籤。
Thumbnail
HTML 標籤是網頁內容的基礎,透過學習不同的標籤,你可以設計出各式各樣的內容。本文介紹了各種基本的標籤,如標題、段落、修飾樣式、超連結以及區塊等,讓你對 HTML 標籤有更深入的瞭解。
Thumbnail
HTML 標籤是網頁內容的基礎,透過學習不同的標籤,你可以設計出各式各樣的內容。本文介紹了各種基本的標籤,如標題、段落、修飾樣式、超連結以及區塊等,讓你對 HTML 標籤有更深入的瞭解。
Thumbnail
人們對於學習HTML的興趣持續增長,本篇文章將解析HTML的架構、標籤、排序方式、標籤屬性和標籤結構解析的相關課程,為讀者提供全方位的學習體驗。
Thumbnail
人們對於學習HTML的興趣持續增長,本篇文章將解析HTML的架構、標籤、排序方式、標籤屬性和標籤結構解析的相關課程,為讀者提供全方位的學習體驗。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News