Tin học 12 – Bài 17. Các mức ưu tiên của bộ chọn

Mục tiêu bài học

  • Biết cách dùng CSS cho các kiểu bộ chọn khác nhau (id, class, pseudo-class, pseudo-element).
  • Biết cách sử dụng CSS thực hiện các mẫu định dạng theo thứ tự ưu tiên của mình.
  • Hiểu và vận dụng được các nguyên tắc về trọng số (specificity) trong CSS.

Mức độ kiến thức và kĩ năng cần đạt

  • Nhận biết:
    • Nhận diện được cú pháp của pseudo-class (lớp giả) và pseudo-element (phần tử giả).
    • Liệt kê được 7 mức độ ưu tiên khi áp dụng CSS.
  • Thông hiểu:
    • Giải thích được sự khác nhau giữa pseudo-class và pseudo-element.
    • Hiểu cách tính giá trị trọng số của một bộ chọn dựa trên các thành phần (ID, class, element).
    • Hiểu nguyên tắc “Cascading” (xếp chồng) khi có xung đột định dạng.
  • Vận dụng:
    • Viết được CSS sử dụng pseudo-class để tạo hiệu ứng tương tác (ví dụ: hover).
    • Viết được CSS sử dụng pseudo-element để trang trí văn bản (ví dụ: chữ cái đầu, dòng đầu).
    • Tính toán chính xác trọng số để giải quyết các xung đột định dạng trong bài tập thực tế.

Hoạt động khởi động

Trong thực tế, các lệnh định dạng CSS đã biết đều chỉ áp dụng cho các phần tử tĩnh. Tuy nhiên, trang web cần tương tác với người dùng (ví dụ: đổi màu khi di chuột, đổi màu liên kết đã xem).

Làm thế nào để định dạng cho các trạng thái tương tác hoặc các phần tử động trong HTML?

Để định dạng cho các trạng thái tương tác (như khi di chuột, nháy chuột) hoặc các phần tử động, CSS cung cấp các công cụ là pseudo-class (lớp giả) và pseudo-element (phần tử giả). Chúng cho phép chọn và định dạng các phần tử dựa trên trạng thái hoặc vị trí của chúng mà không cần thêm class hoặc id vào mã HTML.

1. Kiểu bộ chọn dạng Pseudo-class và Pseudo-element

a) Bộ chọn pseudo-class (Lớp giả)

  • Khái niệm: Là các trạng thái đặc biệt của phần tử HTML. Các trạng thái này không cần định nghĩa trước trong HTML mà được coi như có sẵn trong CSS.
  • Cú pháp: :pseudo-class {thuộc tính : giá trị ;}
  • Các pseudo-class thường dùng:
Bộ chọnÝ nghĩaVí dụ
:linkLiên kết chưa được kích hoạt.a:link {color: blue;}
:visitedLiên kết đã được kích hoạt một lần.a:visited {color: gray;}
:hoverKhi di chuyển con trỏ chuột lên đối tượng.#home:hover {
font-size: 150%;
}
Tin học 12 - Bài 17

b) Bộ chọn kiểu pseudo-element (Phần tử giả)

  • Khái niệm: Chỉ một phần (hoặc một thành phần) của các phần tử bình thường. Có thể coi là một phần tử giả và có thể thiết lập mẫu định dạng CSS.
  • Cú pháp: ::pseudo-element {thuộc tính : giá trị ;}
  • Các pseudo-element thường dùng:
Bộ chọnMô tảVí dụ
::first-lineDòng đầu tiên của đối tượng.p.test::first-line {
font-family: monospace;}
::first-letterKí tự đầu tiên của đối tượng.p#first::first-letter{font-size: 200%;
}
::selectionPhần được chọn (bôi đen) bởi chuột.::selection {
background-color: lime;
}
Tin học 12 - Bài 17
Sự khác nhau cơ bản giữa Pseudo-class và Pseudo-element là gì?

Pseudo-class (Lớp giả): Dùng để chọn các phần tử dựa trên trạng thái của chúng (ví dụ: khi di chuột, khi đã click).
Nó mô tả các trạng thái động.

Pseudo-element (Phần tử giả): Dùng để chọn và định dạng một phần cụ thể của phần tử (ví dụ: dòng đầu, chữ cái đầu) mà không cần bao bọc phần đó bằng thẻ HTML riêng.
Nó mô tả các thành phần nhỏ hơn của phần tử.


2. Mức độ ưu tiên khi áp dụng CSS

Khi có nhiều mẫu định dạng cùng áp dụng cho một phần tử, trình duyệt sẽ quyết định mẫu nào được ưu tiên dựa trên các quy tắc sau:

a) Các mức ưu tiên (từ cao xuống thấp)

  1. !important: Các thuộc tính có từ khoá này có mức ưu tiên cao nhất.
  2. CSS trực tiếp (Inline CSS): Định dạng nằm ngay trong thẻ HTML (style="...").
  3. Media Type: CSS liên quan đến kích thước thiết bị (ví dụ @media screen...).
  4. Trọng số CSS (Specificity): Mẫu định dạng có trọng số cao hơn sẽ được áp dụng.
  5. Nguyên tắc thứ tự cuối cùng (Rule order): Nếu cùng trọng số, định dạng nào viết sau sẽ được áp dụng.
  6. Kế thừa (Inheritance): Lấy thông số từ phần tử cha.
  7. Mặc định: Của trình duyệt.

b) Cách tính trọng số của bộ chọn (Specificity)

Trọng số được tính bằng tổng giá trị của các thành phần trong bộ chọn:

Thành phần bộ chọnGiá trị đóng góp
Mã định danh (ID)100
Class, pseudo-class, attribute10
Element (tên thẻ), pseudo-element1
*0

Ví dụ tính trọng số:

  • p > em: 1 (p) + 1 (em) = 2
  • .test #p11: 1 (class) + 1 (id) = 10 + 100 = 110
  • p.test em.more: 2 (element) + 2 (class) = 2 + 20 = 22

Lưu ý: Nguyên tắc thứ tự cuối cùng chỉ được áp dụng khi dãy các định dạng CSS có trọng số bằng nhau.


Luyện tập

Bài tập 1: Phân biệt mẫu định dạng

Giải thích sự khác nhau giữa hai mẫu định dạng sau:

#p123 + p {color : red ;}
h2#p123 + p {color : red ;}
  • #p123 + p: Áp dụng cho các phần tử p nằm ngay sau một phần tử bất kì có mã định danh (id) là #p123.
  • h2#p123 + p: Áp dụng cho các phần tử p nằm ngay sau một phần tử h2 có mã định danh (id) là #p123. Mẫu này cụ thể hơn mẫu 1 (yêu cầu thẻ phía trước bắt buộc phải là h2).

Bài tập 2: Thiết lập CSS cho tên riêng

Yêu cầu: Trong phần Thực hành, các tên riêng (tên người, tên tổ chức) cần được bổ sung định dạng đóng khung và in nghiêng. Em sẽ thực hiện như thế nào?

Để thực hiện yêu cầu này, ta làm theo 2 bước:

  1. Trong HTML: Đưa tất cả các tên riêng cần định dạng vào bên trong thẻ <em>...</em> (hoặc một thẻ <span> có class cụ thể).
  2. Trong CSS: Thiết lập định dạng đóng khung (border) và in nghiêng (font-style) cho thẻ em đó.
em {
    border: 1px solid black; /* Đóng khung */
    font-style: italic;      /* In nghiêng */
    display: inline-block;   /* Để khung bao quanh đẹp hơn */
    padding: 2px;
}

Vận dụng

Câu 1: Tìm hiểu thêm các dạng pseudo-class khác

Hãy nêu ý nghĩa và ví dụ ứng dụng thực tế cho một số pseudo-class khác ngoài :link:visited:hover.

→ Một số pseudo-class khác:

  • :active (a:active): Áp dụng khi người dùng đang nháy chuột lên phần tử (trạng thái “đang ấn”).
  • :empty (p:empty): Áp dụng cho phần tử rỗng (không có nội dung text hoặc phần tử con).
  • :first-child (p:first-child): Áp dụng cho phần tử là con đầu tiên trong phần tử cha.
  • :last-child (p:last-child): Áp dụng cho phần tử là con cuối cùng trong phần tử cha.
  • :checked (input:checked): Áp dụng cho ô input (checkbox/radio) đang được chọn.
  • :not(selector) (:not(p)): Áp dụng cho các phần tử không khớp với bộ chọn trong ngoặc.

Câu 2: Tìm hiểu thêm các dạng pseudo-element khác

Hãy nêu ý nghĩa và ví dụ ứng dụng thực tế cho một số pseudo-element khác.

→ Một số pseudo-element thường dùng khác:

  • ::before (p::before { content: "Đọc ngay: "; }): Chèn nội dung vào trước phần tử được áp dụng. Thường dùng để thêm biểu tượng hoặc nhãn trang trí.
  • ::after (p::after { content: " - Hết."; }): Chèn nội dung vào sau phần tử được áp dụng.
  • ::placeholder: Định dạng văn bản gợi ý (placeholder) trong các ô nhập liệu (<input><textarea>).

Câu hỏi trắc nghiệm Tin học 12 bài 17: Các mức ưu tiên của bộ chọn (Có đáp án & đua Top)

Thời gian làm bài: 30 phút
Đáp án hiển thị sau khi nộp bài
Câu hỏi sẽ được hiển thị ngẫu nhiên
Vui lòng nhập họ và tên để bắt đầu làm bài

NB

Thuộc tính CSS nào được dùng để thay đổi loại phần tử HTML?

NB

Giá trị nào của thuộc tính display sẽ làm ẩn hoàn toàn phần tử trên trang web?

TH

Cho đoạn CSS sau: span {display: block;}
Đoạn code trên có tác dụng gì?

NB

Đâu là ý nghĩa của thuộc tính padding trong CSS?

NB

Thuộc tính CSS nào dùng để thiết lập màu của viền khung?

TH

Thuộc tính CSS border: 2px solid red; tương đương với việc thiết lập các thuộc tính nào?

NB

Giá trị nào của thuộc tính border-style tạo ra đường viền khung dạng đường đôi?

TH

Cho đoạn CSS sau:
h1 {
    border: 5px ridge blue;
    margin: 20px;
}

Đoạn code trên có tác dụng gì?

NB

Để định dạng một nhóm các phần tử có cùng ý nghĩa, ta sử dụng bộ chọn nào trong CSS?

TH

Cho đoạn HTML sau:
<p class="test warning">Thông tin cần warning.</p>
Để định dạng đoạn văn bản trên, bộ chọn CSS nào sau đây là đúng?

NB

Mỗi phần tử HTML có bao nhiêu mã định danh id duy nhất trong một trang web?

TH

Cho đoạn CSS sau: [href] {border: 1px solid blue;}
Đoạn code trên có tác dụng gì?


<a href="https://www.example.com" target="_blank">Link</a>
Bộ chọn CSS nào sau đây sẽ được áp dụng cho thẻ <a> trên?’ a=’a[target="_blank"]‘ b=’[href]‘ c=’a‘ d=’Tất cả các đáp án trên’ correct=’d’]
NB

Cấu trúc chung của định dạng CSS liên quan đến class là gì?


NB

Cấu trúc chung của định dạng CSS với bộ chọn ID là?


TH

Cho đoạn CSS sau: #home {color: red;}
Đoạn code trên có tác dụng gì?

NB

CSS cho phép thiết lập bộ chọn là gì?

TH

Phát biểu nào sau đây là đúng về tên của idclass trong CSS?

VD

Cho đoạn HTML sau:
<p class="test more once">Đoạn chương trình cần kiểm tra.</p>
Đoạn văn bản trên thuộc bao nhiêu lớp?

VD

Cho đoạn CSS sau: .test .test_more {background-color: red;}
Đoạn code trên có tác dụng gì?

Một trang web có nhiều thẻ <p>. Bạn muốn đoạn P1 có định dạng khác biệt, P2 và P3 có cùng kiểu định dạng khác với P1, và các đoạn còn lại có định dạng giống nhau.

NB Có thể sử dụng thuộc tính id để định dạng riêng cho P1

NB Có thể sử dụng thuộc tính class để định dạng chung cho P2 và P3

TH Cần tạo 4 class khác nhau để thực hiện yêu cầu trên

VD Có thể thiết lập định dạng CSS cho các khung với thông số khung, viền trên, dưới, trái, phải khác nhau

Bạn muốn tạo một trang web hiển thị thông tin về sản phẩm. Bạn muốn mỗi sản phẩm được hiển thị trong một khung riêng biệt với viền và lề khác nhau.

NB Thuộc tính margin dùng để chỉ khoảng cách giữa nội dung sản phẩm và viền của khung

NB Chỉ có thể thiết lập chiều rộng và chiều cao cho phần tử dạng khối

TH Có thể sử dụng thuộc tính border-style để tạo viền có kiểu dáng khác nhau như đường liền, đường chấm chấm, đường gạch nối

VD Các thuộc tính liên quan đến khung của một phần tử HTML có tính kế thừa

Một trang web sử dụng CSS để định dạng các phần tử. Một số phần tử có id và class trùng nhau.

VD Các định dạng CSS áp dụng cho id sẽ ghi đè các định dạng áp dụng cho class nếu chúng xung đột

NB Một phần tử HTML có thể thuộc nhiều lớp class khác nhau

TH Tên của id và class không được bắt đầu bằng số

VD Các định dạng được gán trực tiếp cho phần tử HTML sẽ có độ ưu tiên cao nhất so với định dạng từ CSS bên ngoài

Bảng xếp hạng

Chưa có kết quả nào.

1 Bình luận

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *