Tiếng Việt

Nắm vững các pseudo-class vị trí trong CSS như :first-child, :last-child, :nth-child(), và nhiều hơn nữa để tạo kiểu động và nâng cao cho các dự án web của bạn. Cải thiện khả năng lựa chọn phần tử và tạo giao diện người dùng hấp dẫn một cách dễ dàng.

Pseudo-class Vị trí trong CSS: Lựa chọn Phần tử Nâng cao để Tạo Kiểu Động

Các pseudo-class vị trí trong CSS cung cấp một cách mạnh mẽ để nhắm mục tiêu và tạo kiểu cho các phần tử dựa trên vị trí của chúng trong cây tài liệu. Những bộ chọn này cho phép bạn áp dụng các kiểu cụ thể cho phần tử con đầu tiên, cuối cùng hoặc thứ n, mở ra nhiều khả năng tạo giao diện web động và hấp dẫn về mặt hình ảnh. Hướng dẫn này sẽ đi sâu vào thế giới của các pseudo-class vị trí, cung cấp các ví dụ và trường hợp sử dụng thực tế để nâng cao kỹ năng CSS của bạn.

Tìm hiểu về Pseudo-class trong CSS

Trước khi đi sâu vào các pseudo-class vị trí, chúng ta hãy xem lại ngắn gọn pseudo-class là gì trong CSS. Pseudo-class là các từ khóa được thêm vào bộ chọn để chỉ định một trạng thái đặc biệt của (các) phần tử được chọn. Chúng cho phép bạn tạo kiểu cho các phần tử dựa trên các yếu tố khác ngoài tên, thuộc tính hoặc nội dung của chúng; thay vào đó, chúng tạo kiểu dựa trên vị trí, trạng thái hoặc các tiêu chí động khác. Ví dụ, pseudo-class :hover áp dụng các kiểu khi người dùng di chuột qua một phần tử.

Giới thiệu về Pseudo-class Vị trí

Pseudo-class vị trí là một tập hợp con của các pseudo-class nhắm mục tiêu các phần tử dựa trên vị trí của chúng trong phần tử mẹ. Chúng cực kỳ hữu ích để tạo kiểu cho danh sách, bảng hoặc bất kỳ cấu trúc nội dung nào mà bạn muốn áp dụng các kiểu khác nhau dựa trên vị trí của một phần tử.

Các Pseudo-class Vị trí Chính

1. :first-child

Pseudo-class :first-child chọn phần tử con đầu tiên trong phần tử mẹ của nó. Điều này hữu ích để áp dụng các kiểu cụ thể cho mục đầu tiên trong danh sách, hàng đầu tiên trong bảng hoặc bất kỳ kịch bản nào khác mà bạn muốn làm nổi bật phần tử ban đầu.

Ví dụ: Tạo kiểu cho mục danh sách đầu tiên trong menu điều hướng.

nav ul li:first-child {
  font-weight: bold;
  color: #007bff;
}

Đoạn mã CSS này sẽ làm cho mục danh sách đầu tiên trong <ul> của phần tử <nav> trở nên đậm và có màu xanh.

Ứng dụng thực tế: Hãy tưởng tượng một trang web thương mại điện tử. Bạn có thể sử dụng :first-child để làm nổi bật trực quan sản phẩm đầu tiên trong khu vực sản phẩm nổi bật.

2. :last-child

Ngược lại, pseudo-class :last-child chọn phần tử con cuối cùng trong phần tử mẹ của nó. Điều này hoàn hảo để thêm đường viền hoặc lề cho tất cả các mục ngoại trừ mục cuối cùng, hoặc để áp dụng một kiểu cụ thể cho phần tử cuối cùng trong một chuỗi.

Ví dụ: Xóa đường viền dưới của mục cuối cùng trong danh sách.

ul li {
  border-bottom: 1px solid #ccc;
}

ul li:last-child {
  border-bottom: none;
}

Đoạn mã CSS này sẽ thêm một đường viền dưới cho tất cả các mục danh sách ngoại trừ mục cuối cùng, tạo ra một sự phân tách trực quan gọn gàng mà không có đường viền thừa ở phía dưới.

Ứng dụng thực tế: Trong một biểu mẫu liên hệ, bạn có thể sử dụng :last-child để xóa lề dưới của trường nhập liệu cuối cùng trước nút gửi.

3. :nth-child(n)

Pseudo-class :nth-child(n) là một bộ chọn linh hoạt hơn cho phép bạn nhắm mục tiêu các phần tử dựa trên vị trí số của chúng trong phần tử mẹ. n có thể là một con số, một từ khóa (even hoặc odd), hoặc một công thức.

Ví dụ: Tạo kiểu cho các hàng xen kẽ trong bảng.

table tr:nth-child(even) {
  background-color: #f2f2f2;
}

Đoạn mã CSS này sẽ áp dụng nền màu xám nhạt cho mọi hàng có số thứ tự chẵn trong bảng, giúp cải thiện khả năng đọc.

Ví dụ: Chọn phần tử con thứ ba.

div p:nth-child(3) {
  color: green;
}

Đoạn mã CSS này sẽ làm cho đoạn văn thứ ba trong một phần tử <div> có màu xanh lá cây.

Ví dụ: Sử dụng công thức để chọn mỗi phần tử con thứ ba.

ul li:nth-child(3n) {
  font-style: italic;
}

Đoạn mã CSS này sẽ áp dụng kiểu chữ nghiêng cho mỗi mục danh sách thứ ba.

Ứng dụng thực tế: Trên một trang web tin tức, bạn có thể sử dụng :nth-child(n) để tạo kiểu khác nhau cho mỗi bài viết thứ ba, tạo ra sự đa dạng về hình ảnh và làm nổi bật nội dung cụ thể.

4. :nth-of-type(n)

Pseudo-class :nth-of-type(n) tương tự như :nth-child(n), nhưng nó nhắm mục tiêu các phần tử dựa trên loại của chúng trong phần tử mẹ. Điều này có nghĩa là nó chỉ xem xét các phần tử cùng loại khi đếm.

Ví dụ: Tạo kiểu cho đoạn văn thứ hai trong một div.

div p:nth-of-type(2) {
  font-size: 1.2em;
}

Đoạn mã CSS này sẽ tăng kích thước phông chữ của phần tử đoạn văn thứ hai trong một <div>. Nó sẽ bỏ qua bất kỳ loại phần tử nào khác trong div khi đếm.

Ứng dụng thực tế: Trong một bài đăng trên blog, bạn có thể sử dụng :nth-of-type(n) để tạo kiểu khác nhau cho mỗi hình ảnh thứ hai, bất kể sự hiện diện của các phần tử khác như đoạn văn hoặc tiêu đề.

5. :first-of-type

Pseudo-class :first-of-type chọn phần tử đầu tiên của loại của nó trong phần tử mẹ. Điều này hữu ích để tạo kiểu cho đoạn văn, hình ảnh đầu tiên hoặc bất kỳ loại phần tử cụ thể nào khác trong một vùng chứa.

Ví dụ: Tạo kiểu cho hình ảnh đầu tiên trong một bài viết.

article img:first-of-type {
  float: left;
  margin-right: 10px;
}

Đoạn mã CSS này sẽ cho hình ảnh đầu tiên trong một phần tử <article> nổi sang trái và thêm lề bên phải của nó.

Ứng dụng thực tế: Trong một trang mô tả sản phẩm, bạn có thể sử dụng :first-of-type để hiển thị hình ảnh chính của sản phẩm một cách nổi bật.

6. :last-of-type

Pseudo-class :last-of-type chọn phần tử cuối cùng của loại của nó trong phần tử mẹ. Đây là đối trọng của :first-of-type và được sử dụng để tạo kiểu cho phần tử cuối cùng của một loại cụ thể trong một vùng chứa.

Ví dụ: Tạo kiểu cho đoạn văn cuối cùng trong một section.

section p:last-of-type {
  margin-bottom: 0;
}

Đoạn mã CSS này xóa lề dưới của phần tử đoạn văn cuối cùng trong một <section>.

Ứng dụng thực tế: Trong một bài đăng trên blog, bạn có thể sử dụng :last-of-type để xóa lề dưới của đoạn văn kết luận, tạo ra một kết thúc trực quan gọn gàng hơn.

Các Trường hợp Sử dụng và Ví dụ Thực tế

Hãy khám phá một số ví dụ phức tạp và thực tế hơn để chứng minh cách các pseudo-class vị trí có thể được sử dụng trong các kịch bản thực tế.

1. Tạo kiểu cho Menu Điều hướng

Menu điều hướng là một yếu tố phổ biến trên các trang web, và các pseudo-class vị trí có thể được sử dụng để nâng cao giao diện của chúng.


<nav>
  <ul>
    <li><a href="#home">Trang chủ</a></li>
    <li><a href="#about">Giới thiệu</a></li>
    <li><a href="#services">Dịch vụ</a></li>
    <li><a href="#contact">Liên hệ</a></li>
  </ul>
</nav>
nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
}

nav ul li {
  margin-right: 20px;
}

nav ul li:first-child {
  font-weight: bold;
}

nav ul li:last-child {
  margin-right: 0;
}

Đoạn mã này tạo kiểu cho menu điều hướng thành dạng ngang, xóa các dấu đầu dòng và làm cho mục đầu tiên được in đậm. Nó cũng xóa lề phải của mục cuối cùng, đảm bảo khoảng cách phù hợp.

2. Tạo kiểu cho Danh sách Sản phẩm

Các trang web thương mại điện tử thường hiển thị sản phẩm theo dạng lưới hoặc danh sách. Các pseudo-class vị trí có thể được sử dụng để tạo ra các danh sách sản phẩm hấp dẫn về mặt hình ảnh.


<div class="product-list">
  <div class="product"><img src="product1.jpg" alt="Sản phẩm 1"><p>Mô tả Sản phẩm 1</p></div>
  <div class="product"><img src="product2.jpg" alt="Sản phẩm 2"><p>Mô tả Sản phẩm 2</p></div>
  <div class="product"><img src="product3.jpg" alt="Sản phẩm 3"><p>Mô tả Sản phẩm 3</p></div>
  <div class="product"><img src="product4.jpg" alt="Sản phẩm 4"><p>Mô tả Sản phẩm 4</p></div>
</div>

.product-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

.product {
  border: 1px solid #ccc;
  padding: 10px;
}

.product:nth-child(odd) {
  background-color: #f9f9f9;
}

Đoạn mã này hiển thị các sản phẩm trong một lưới hai cột và thêm một đường viền cho mỗi sản phẩm. Nó cũng áp dụng một nền màu xám nhạt cho mỗi sản phẩm có số thứ tự lẻ, cải thiện sự phân biệt trực quan.

3. Tạo kiểu cho Bảng

Bảng thường được sử dụng để hiển thị dữ liệu dạng bảng. Các pseudo-class vị trí có thể nâng cao khả năng đọc và giao diện của bảng.


<table>
  <thead>
    <tr>
      <th>Tên</th>
      <th>Tuổi</th>
      <th>Quốc gia</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>John Doe</td>
      <td>30</td>
      <td>USA</td>
    </tr>
    <tr>
      <td>Jane Smith</td>
      <td>25</td>
      <td>Canada</td>
    </tr>
    <tr>
      <td>David Lee</td>
      <td>40</td>
      <td>UK</td>
    </tr>
  </tbody>
</table>

table {
  width: 100%;
  border-collapse: collapse;
}

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

thead {
  background-color: #f2f2f2;
}

tbody tr:nth-child(even) {
  background-color: #f9f9f9;
}

Đoạn mã này tạo kiểu cho bảng với đường viền, đệm và các hàng có màu xen kẽ để cải thiện khả năng đọc.

Kết hợp Pseudo-class Vị trí với các Bộ chọn Khác

Các pseudo-class vị trí có thể được kết hợp với các bộ chọn CSS khác để tạo ra các quy tắc tạo kiểu thậm chí còn cụ thể và mạnh mẽ hơn. Ví dụ, bạn có thể kết hợp một pseudo-class vị trí với một bộ chọn lớp hoặc một bộ chọn thuộc tính.

Ví dụ: Tạo kiểu cho mục đầu tiên có một lớp cụ thể.

ul li.highlight:first-child {
  color: red;
}

Đoạn mã CSS này sẽ chỉ áp dụng màu đỏ cho mục danh sách đầu tiên cũng có lớp "highlight".

Khả năng Tương thích Trình duyệt

Các pseudo-class vị trí được hỗ trợ rộng rãi bởi các trình duyệt web hiện đại, bao gồm Chrome, Firefox, Safari, Edge và Opera. Tuy nhiên, luôn là một thói quen tốt để kiểm tra mã CSS của bạn trên các trình duyệt khác nhau để đảm bảo hiển thị nhất quán.

Các Thực hành Tốt nhất và Lưu ý

Kết luận

Các pseudo-class vị trí trong CSS là một công cụ có giá trị cho các nhà phát triển web, cho phép lựa chọn phần tử nâng cao và tạo kiểu động. Bằng cách nắm vững các bộ chọn này, bạn có thể tạo ra các giao diện web hấp dẫn về mặt hình ảnh và thân thiện với người dùng, có thể thích ứng với các cấu trúc nội dung khác nhau. Hãy thử nghiệm với các ví dụ được cung cấp trong hướng dẫn này và khám phá những khả năng vô tận của các pseudo-class vị trí trong các dự án web của bạn.

Hướng dẫn toàn diện này cung cấp một nền tảng vững chắc để hiểu và sử dụng các pseudo-class vị trí trong CSS. Khi bạn tiếp tục học hỏi và thử nghiệm, bạn sẽ khám phá ra nhiều cách sáng tạo hơn nữa để nâng cao kỹ năng phát triển web và tạo ra những trải nghiệm người dùng đặc biệt.

Tìm hiểu thêm

Để hiểu sâu hơn về các pseudo-class vị trí trong CSS, hãy xem xét khám phá các tài nguyên sau:

Chúc bạn tạo kiểu vui vẻ!

Pseudo-class Vị trí trong CSS: Lựa chọn Phần tử Nâng cao để Tạo Kiểu Động | MLOG