- Mục tiêu bài học:
- Biết được cách dùng CSS cho các kiểu bộ chọn khác nhau như id, class, pseudo-class (lớp giả), pseudo-element (phần tử giả);
- Sử dụng CSS thực hiện các mẫu định dạng theo thứ tự ưu tiên.
1. Kiểu bộ chọn dạng pseudo-class và pseudo-element
a. Bộ chọn pseudo-class (lớp giả)
Chúng ta đã biết dùng CSS để định dạng các phần tử tĩnh. Vậy làm thế nào để định dạng CSS thay đổi theo tương tác của người dùng, ví dụ như khi di chuột hoặc nhấp chuột lên phần tử nào đó?
Khái niệm: Là các trạng thái đặc biệt của phần tử HTML mà không cần định nghĩa trước.
Cú pháp: :pseudo-class { thuộc tính: giá trị; }
Một số lớp giả phổ biến:
Bộ chọn | Ý nghĩa | Ví dụ |
:link | Liên kết chưa được nhấn | a:link {color: blue;} |
:visited | Liên kết đã được nhấn | a:visited {color: gray;} |
:hover | Khi con trỏ chuột di chuyển qua phần tử | #home:hover {font-size: 150%;} |
Ví dụ minh họa:
<style>
a:link {color: red;}
a:visited {color: green;}
a:hover {color: magenta;}
</style>
<a href="https://www.w3schools.com" target="_blank">Tự học nhanh CSS</a>
Kết quả định dạng liên kết:
- Màu đỏ khi chưa nhấn.
- Màu hồng khi di chuột qua.
- Màu xanh khi đã nhấn.

Ý nghĩa: Khai báo lớp giả để làm thay đổi các giá trị mặc định của đối tượng gây sự chú ý.
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 phần tử HTML bình thường.
Cú pháp: ::pseudo-element {thuộc tính: giá trị;}
Bảng một số phần tử giả phổ biến
Bộ chọn | Mô tả | Ví dụ |
::first-line | Định dạng dòng đầu tiên của đối tượng. | p.test::first-line { font-family: monospace; } |
::first-letter | Định dạng ký tự đầu tiên của đối tượng. | p#first::first-letter { font-size: 200%; color: red; } |
::selection | Định dạng phần văn bản được chọn bằng chuột. | ::selection { background-color: lime; } |
Ví dụ minh họa:
<style>
p::first-letter {
color: blue;
font-size: 300%;
font-weight: 900;
}
</style>
<p>Đây là một đoạn văn bản minh họa sử dụng pseudo-element.</p>
Kết quả: chữ cái đầu trong nội dung của phần tử <p> được định dạng

Ý nghĩa: Khai báo phần tử giả để thiết lập các mẫu định dạng đặc biệt cho phần tử giả đó khác so với mặc định.
Một số phần tử giả khác: ::before; ::after; ::backdrop; ::first-line; ::first-letter; ::selection
Câu hỏi luyện tập (SGK trang 98)
Câu 1. Muốn áp dụng đổi màu chữ một vùng trên màn hình khi nháy chuột tại vùng đó thì cần phải dùng định dạng CSS nào?
Cần dùng mẫu CSS dạng :active {color : ;}
Câu 2: Muốn tăng kích thước một đoạn văn bản khi di chuyển chuột qua đoạn văn bản đó thì cần dùng định dạng CSS nào?
Cần dùng mẫu CSS dạng :hover {font-size: 150% ;}
2. Mức độ ưu tiên khi áp dụng CSS
Thứ tự ưu tiên và trọng số
Khi một phần tử HTML có nhiều định dạng CSS khác nhau, CSS sẽ chọn định dạng nào được ưu tiên cao nhất để áp dụng. Thứ tự ưu tiên này được liệt kê chi tiết trong bảng sau:
STT | CSS | Giải thích |
1 | !important | Được ưu tiên cao nhất |
2 | CSS inline | CSS viết trực tiếp trong thẻ HTML qua thuộc tính style |
3 | Media type | CSS điều chỉnh hiển thị theo kích thước màn hình. VD: @media (max-width: 600px) {font-size: 150%;} |
4 | Trọng số CSS | CSS có trọng số cao hơn sẽ được ưu tiên áp dụng |
5 | Thứ tự code (nguyên tắc thứ tự cuối cùng) | CSS được viết sau sẽ được ưu tiên hơn |
6 | Kế thừa | Dùng thuộc tính CSS của phần tử cha nếu không có định dạng riêng |
7 | Mặc định | Sử dụng giá trị mặc định của trình duyệt nếu không có CSS nào được áp dụng |
Như vậy: Nếu có nhiều mẫu định dạng CSS cùng mức ưu tiên áp dụng cho một phần tử HTML thì mẫu CSS nào có trọng số cao nhất sẽ được áp dụng.
Cách tính trọng số: là tổng trọng số từng thành phần của bộ chọn đó. Giá trị trọng số của từng thành phần trong bộ chọn được quy định trong bảng sau:

Một số ví dụ về cách tính trọng số:

Câu hỏi luyện tập (SGK trang 100)
Câu 1. Tính trọng số của các mẫu định dạng sau:
a) #n12 > .test
100 + 10 = 110 (1 id và 1 lớp)
b) h1, h2, h3, h4 > #new
1 + 1 + 1 + 1 + 100 = 104 (4 phần tử và 1 id)
c) p + em.test
1 + 1 + 10 = 12 (2 phần tử: p, em; 1 lớp: test)
Câu 2. Khi nào nguyên tắc cascading (thứ tự cuối cùng) được áp dụng cho một dãy các định dạng CSS
Khi dãy các định dạng CSS có trọng số bằng nhau. Dựa theo thứ tự ưu tiên trong bảng 17.3 (trang 99).
3. Thực hành
Nhiệm vụ 1: Nhập tệp HTML
Yâu cầu: Nhập tệp HTML với nội dung như sau:

Thực hiện: (gợi ý code mẫu xem và chạy thử: https://otth.vn/codeweb/view_shared.php?id=10)
<h1>Giới thiệu HTML và CSS</h1>
<nav>
<ul style="list-style-type:none">
<li><a href="#P1">Giới thiệu HTML</a></li>
<li><a href="#P2">Giới thiệu CSS</a></li>
</ul>
</nav>
<h2>Giới thiệu HTML</h2>
<h3>HTML là gì</h3>
<p>HTML - tên viết tắt của HyperText Markup Language, ngôn ngữ đánh dấu siêu văn bản, là ngôn ngữ đặc biệt dùng để
thiết kế nội dung các trang web và được thể hiện bằng trình duyệt.</p>
<p>Cấu trúc mỗi tệp HTML là một cấu trúc dạng cây của các phần tử HTML.</p>
<p class="img">Xem logo của HTML.</p>
<img src="https://cdn-icons-png.flaticon.com/512/5968/5968267.png" alt="Logo HTML5">
<p>Link xem thêm chi tiết về HTML tại đây (https://en.wikipedia.org/wiki/HTML).</p>
<p>Link xem và tự học HTML tại đây (https://www.w3schools.com/html/default.asp).</p>
<h2>Giới thiệu CSS</h2>
<h3>CSS là gì</h3>
<p>CSS (Cascading Style Sheets) là ngôn ngữ định dạng đặc biệt được dùng để mô tả cách thể hiện của văn bản HTML
trong trang web.</p>
<p>Mỗi định dạng CSS đều có dạng chuẩn là bộ chọn {thuộc tính : giá trị ;}.</p>
<p class="img">Xem logo của CSS.</p>
<img src="https://cdn4.iconfinder.com/data/icons/flat-brand-logo-2/512/css3-512.png" alt="Logo CSS3">
<p>Link xem thêm chi tiết về CSS tại đây (https://en.wikipedia.org/wiki/CSS).</p>
<p>Link xem và tự học CSS tại đây (https://www.w3schools.com/css/default.asp).</p>
Nhiệm vụ 2: Thiết lập định dạng bằng CSS
Định dạng cho tệp HTML ở nhiệm vụ 1 để được kết quả tương tự mẫu sau: code mẫu xem và chạy thử https://otth.vn/codeweb/view_shared.php?id=9

Code gợi ý:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Giới thiệu HTML và CSS</title>
<style>
h1 {
color: red;
text-align: center;
}
h2 {
color: blue;
}
nav {
text-align: right;
}
li {
display: inline;
border: 1px solid blue;
padding: 5px;
background-color: lime;
}
a:hover {
color: red;
background-color: cyan;
}
h2+p {
color: red;
}
img {
display: none;
}
.img:active+img {
display: block;
}
</style>
</head>
<body>
<h1>Giới thiệu HTML và CSS</h1>
<nav>
<ul>
<li><a href="#P1">Giới thiệu HTML</a></li>
<li><a href="#P2">Giới thiệu CSS</a></li>
</ul>
</nav>
<h2>Giới thiệu HTML</h2>
<h3>HTML là gì</h3>
<p>HTML - tên viết tắt của HyperText Markup Language, ngôn ngữ đánh dấu siêu văn bản, là ngôn ngữ đặc biệt dùng để
thiết kế nội dung các trang web và được thể hiện bằng trình duyệt.</p>
<p>Cấu trúc mỗi tệp HTML là một cấu trúc dạng cây của các phần tử HTML.</p>
<p class="img">Xem logo của HTML.</p>
<img src="https://cdn-icons-png.flaticon.com/512/5968/5968267.png" alt="Logo HTML5">
<p>Link xem thêm chi tiết về HTML tại đây (https://en.wikipedia.org/wiki/HTML).</p>
<p>Link xem và tự học HTML tại đây (https://www.w3schools.com/html/default.asp).</p>
<h2>Giới thiệu CSS</h2>
<h3>CSS là gì</h3>
<p>CSS (Cascading Style Sheets) là ngôn ngữ định dạng đặc biệt được dùng để mô tả cách thể hiện của văn bản HTML
trong trang web.</p>
<p>Mỗi định dạng CSS đều có dạng chuẩn là bộ chọn {thuộc tính : giá trị ;}.</p>
<p class="img">Xem logo của CSS.</p>
<img src="https://cdn4.iconfinder.com/data/icons/flat-brand-logo-2/512/css3-512.png" alt="Logo CSS3">
<p>Link xem thêm chi tiết về CSS tại đây (https://en.wikipedia.org/wiki/CSS).</p>
<p>Link xem và tự học CSS tại đây (https://www.w3schools.com/css/default.asp).</p>
</body>
</html>
Câu hỏi trắc nghiệm dạng D1 và D2 Tin học 12 bài 17: Các mức ưu tiên của bộ chọn
Bảng xếp hạng
Hạng | Họ tên | Điểm số | Thời gian |
---|---|---|---|
1 |
guỳ
1 lần thi
|
86/100
|
3 phút 18 giây |
2 |
Bb
1 lần thi
|
40/100
|
35 phút 51 giây |