Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> CSS

Chọn nhiều phần tử cùng lúc với CSS (Group Selector - dấu phẩy)

Bộ chọn nhóm (Group Selector - Comma)

Dùng **dấu phẩy (`,`)** để gom nhiều selector chia sẻ **cùng một khối quy tắc CSS**. Giúp code DRY (Don't Repeat Yourself), dễ bảo trì.

Cú pháp

selector1, selector2, selector3 {
  /* Quy tắc chung cho tất cả */
}

Ví dụ: Style cho div và p cùng lúc

<!DOCTYPE html>
<html>
<head>
  <style>
    div, p {
      color: blue;
      background-color: orange;
    }
  </style>
</head>
<body>
  <h1>Demo Website</h1>
  <h2>Fruits</h2>
  <p>Fruits are good for health.</p>      <!-- Áp dụng -->
  <div>
    <p>This is demo text.</p>           <!-- Cả div và p đều áp dụng -->
  </div>
</body>
</html>

Kết quả

  • Thẻ `

    ` đầu: chữ xanh, nền cam.

  • Thẻ `
    `: chữ xanh, nền cam.
  • Thẻ `

    ` trong div: chữ xanh, nền cam (kế thừa từ div + rule riêng).

  • Thẻ `

    `, `

    `: không ảnh hưởng.

Các dạng selector hợp lệ trong group

/* Element */
h1, h2, h3 { color: #333; }

/* Class */
.btn, .button, .link-btn { padding: 10px; }

/* ID (hiếm dùng) */
#header, #footer { background: #f5f5f5; }

/* Attribute */
input[type="text"], input[type="email"], textarea { border: 1px solid #ccc; }

/* Pseudo-class */
a:hover, a:focus, a:active { color: red; }

/* Kết hợp phức tạp */
.header .nav, .footer .nav, .sidebar .menu { display: flex; }

Lưu ý quan trọng

  • Không kế thừa: Group selector chỉ gom *selector*, không gom *specificity*. Mỗi selector giữ độ đặc hiệu riêng.
  • Invalid selector hủy cả nhóm: Nếu 1 selector sai cú pháp (ví dụ typo pseudo-class), **toàn bộ rule bị bỏ qua**.
  • Selector list forgiveness (CSS mới): `:is()`, `:where()` cho phép selector không hợp lệ trong danh sách không làm hỏng cả rule.

Modern: :is() và :where()

/* :is() - specificity = selector cụ thể nhất trong danh sách */
:is(.header, .footer, .sidebar) .nav { color: white; }

/* :where() - specificity = 0 (rất thấp) */
:where(.header, .footer, .sidebar) .nav { color: white; }

/* Cho phép selector invalid không làm hỏng rule */
:is(:valid, :invalid, :user-invalid) { border-color: red; }