HTML Table Styling


เพื่อให้ตารางดูดีมากขึ้น โดยใช้ CSS

HTML Table – ลายทาง

ถ้าต้องการให้ตารางมีสีแบบแถวเว้นแถว ให้ใช้ คำสั่งดังนี้ :nth-child(even)

<!DOCTYPE html>
<html>
<head>
<style>
table {
  border-collapse: collapse;
  width: 100%;
}

th, td {
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #D6EEEE;
}
</style>
</head>
<body>

<h2>ตารางแบบสีสลับแถว</h2>
<p>การสลับสีแถวในตารางให้ใช้คำสั่ง nth-child() และเพิ่ม background-color ให้กับแถวคี่ (หรือแถวคู่)</p>

<table>
  <tr>
    <th>ชื่อ</th>
    <th>นามสกุล</th>
    <th>แต้มสะสม</th>
  </tr>
  <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>฿100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>฿150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>$300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>฿250</td>
  </tr>
</table>

</body>
</html>

Note: คำสั่ง :nth-child(even) หากเปลี่ยนข้อความในวงเล็บจาก (even) เป็น (odd) รูปแบบตารางจะเปลี่ยนไป โดยแถวที่ 1, 3, 5 จะมีสีแทน ส่วนแถวที่ 2, 4, 6 สีของแถวจะเป็นสีขาวแทน

HTML Table – สีแถวตามแนวตั้ง

สำหรับการใส่สีทุกแถว คอลัมน์เว้นคอลัมน์ ให้ไปตั้งค่าที่ :nth-child(even) ดังนี้

<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}

th:nth-child(even),td:nth-child(even) {
  background-color: #D6EEEE;
}
</style>
</head>
<body>

<h2>ใส่สีคอมลัมน์เว้นคอลัมน์</h2>
<p>หากต้องการใส่สีทุกแถว คอลัมน์เว้นคอลัมน์ให้ใช้คำสั่ง nth-child() Selector และใส่สีพื้นหลังให้แถวคู่ หรือคี่ในตาราง</p>

<table style="width:100%">
  <tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
    <th>4</th>
    <th>5</th>
    <th>6</th>
    <th>7</th>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
</table>

</body>
</html>

Note: ในกรณีที่ต้องการใส่สีพื้นหลังให้กับส่วนหัวของตารางและคอลัมน์เว้นคอลัมน์ ให้ใส่ td:nth-child() และ th:nth-child()

ตกแต่งตารางแบบผสมทั้งแนวตั้งและแนวนอน

จากตัวอย่างด้านบนทั้ง 2 แบบ ไม่ว่าจะเป็นทั้งแนวตั้งและแนวนอน เราสามารถนำทั้งสองแบบมารวมกันในการจัดรูปแบบตารางได้ ซึ่งหากใส่สีแบบ Transparent (โปร่งใส) เมื่อนำมาจัดรูปแบบตารางแบบนี้ สีที่แสดงอาจซับท้อนกัน

สำหรับการระบุสีแบบ Transparent (โปร่งใส) จะใช้คำสั่ง rgba()

<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}

tr:nth-child(even) {
  background-color: rgba(150, 212, 212, 0.4);
}

th:nth-child(even),td:nth-child(even) {
  background-color: rgba(150, 212, 212, 0.4);
}
</style>
</head>
<body>

<h2>ตกแต่งตารางแบบผสมทั้งแนวตั้งและแนวนอน</h2>
<p>หากต้องการใส่สีลงในบางแถวและคอลัมน์ให้ใช้คำสั่ง nth-child() Selector และใส่สีพื้นหลังให้แถวคู่ หรือคี่ในตาราง</p>

<table style="width:100%">
  <tr>
    <th>1</th>
    <th>2</th>
    <th>3</th>
    <th>4</th>
    <th>5</th>
    <th>6</th>
    <th>7</th>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
  <tr>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td> </td>
  </tr>
</table>

</body>
</html>

เส้นแบ่งตารางแนวนอน

ในกรณีที่ต้องการใส่เส้นขอบตารางด้านล่างของแต่ละแถว โดยให้ใช้คำสั่ง border-bottom ลงใน Elements tr ทุกอัน

<!DOCTYPE html>
<html>
<head>
<style>
table {
  border-collapse: collapse;
  width: 100%;
}

tr {
  border-bottom: 1px solid #ddd;
}
</style>
</head>
<body>

<h2>เส้นแบ่งตาราง</h2>
<p>ใช้คำสั่ง border-bottom ลงใน Elements tr ทุกอัน</p>

<table>
  <tr>
    <th>ชื่อ</th>
    <th>นามสกุล</th>
    <th>จำนวนเงิน</th>
  </tr>
  <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>฿100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>฿150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>฿300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>฿250</td>
  </tr>
</table>

</body>
</html>

ตารางเน้นเมื่อนำเมาส์ไปวางในตาราง (Hover)

ในกรณีที่ต้องการให้ตารางแสดงสีเมื่อนำเมาส์ไปวาง (Hover) ให้ใช้คำสั่ง :hover ใน tr

<!DOCTYPE html>
<html>
<head>
<style>
table {
  border-collapse: collapse;
  width: 100%;
}

th, td {
  padding: 8px;
  text-align: left;
  border-bottom: 1px solid #DDD;
}

tr:hover {background-color: #D6EEEE;}
</style>
</head>
<body>

<h2>Hoverable Table</h2>
<p>นำไปวางในตารางเพื่อดูผลลัพท์</p>

<table>
  <tr>
    <th>ชื่อ</th>
    <th>นามสกุล</th>
    <th>แต้มสะสม</th>
  </tr>
  <tr>
    <td>Peter</td>
    <td>Griffin</td>
    <td>฿100</td>
  </tr>
  <tr>
    <td>Lois</td>
    <td>Griffin</td>
    <td>฿150</td>
  </tr>
  <tr>
    <td>Joe</td>
    <td>Swanson</td>
    <td>฿300</td>
  </tr>
  <tr>
    <td>Cleveland</td>
    <td>Brown</td>
    <td>฿250</td>
  </tr>
</table>

</body>
</html>

Hoverable Table

นำไปวางในตารางเพื่อดูผลลัพท์

ชื่อ นามสกุล แต้มสะสม
Peter Griffin ฿100
Lois Griffin ฿150
Joe Swanson ฿300
Cleveland Brown ฿250