Z-index trong CSS là thuộc tính dùng để kiểm soát thứ tự xếp chồng của các phần tử trên trục z (trục không gian thứ ba, chiều sâu) khi chúng được hiển thị trên trang web. Khi có nhiều phần tử được đặt chồng lên nhau, giá trị z-index sẽ xác định phần tử nào hiển thị phía trước và phần tử nào sẽ ở phía sau.
Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về cách sử dụng z-index trong CSS, nguyên tắc hoạt động của nó, các lưu ý khi sử dụng, và các ví dụ thực tế giúp bạn hiểu rõ cách áp dụng z-index vào thiết kế web.
1. Z-index là gì?
Z-index xác định thứ tự hiển thị của các phần tử trên trang web dọc theo trục z (từ trước ra sau). Khi các phần tử có cùng vị trí trên trục x (chiều ngang) và trục y (chiều dọc), z-index sẽ xác định phần tử nào xuất hiện phía trước hay phía sau.
- Phần tử có z-index lớn hơn sẽ nằm phía trước các phần tử có z-index nhỏ hơn.
- Mặc định nếu không có z-index, thứ tự xếp chồng sẽ phụ thuộc vào vị trí xuất hiện trong mã HTML: phần tử nào viết sau sẽ nằm trên.
Cú pháp:
element {
z-index: value;
}Trong đó:
valuelà một số nguyên (có thể âm hoặc dương) hoặc các từ khóa mặc định (auto), xác định thứ tự hiển thị của phần tử.
2. Khi nào sử dụng z-index?
Z-index được sử dụng trong các tình huống mà các phần tử có thể đè lên nhau, như khi làm việc với các menu thả xuống, cửa sổ modal, hộp thoại, hình ảnh và các hiệu ứng khác. Để z-index hoạt động, phần tử phải có một thuộc tính position (khác với static), như relative, absolute, fixed, hoặc sticky.
3. Các giá trị của z-index
3.1. z-index: auto
Giá trị auto là giá trị mặc định của z-index. Khi phần tử có giá trị z-index: auto, thứ tự hiển thị của phần tử sẽ phụ thuộc vào thứ tự xuất hiện trong DOM, phần tử nào nằm sau trong mã HTML sẽ nằm trên.
Ví dụ:
div {
position: relative;
z-index: auto;
}3.2. z-index: số nguyên dương
Giá trị dương của z-index sẽ đưa phần tử lên phía trước so với các phần tử khác có giá trị z-index nhỏ hơn.
Ví dụ:
.box1 {
position: absolute;
z-index: 1;
}
.box2 {
position: absolute;
z-index: 5;
}Trong ví dụ này, box2 có giá trị z-index là 5 nên sẽ hiển thị phía trước box1, có giá trị z-index là 1.
3.3. z-index: số nguyên âm
Giá trị âm của z-index sẽ đẩy phần tử ra phía sau các phần tử có giá trị z-index bằng 0 hoặc lớn hơn.
Ví dụ:
.box1 {
position: relative;
z-index: 0;
}
.box2 {
position: relative;
z-index: -1;
}Trong ví dụ này, box2 có z-index là -1 nên sẽ hiển thị phía sau box1 (z-index bằng 0).
4. Nguyên tắc hoạt động của Z-index
4.1. Chỉ hoạt động trên phần tử có position khác static
Thuộc tính z-index chỉ hoạt động khi phần tử có thuộc tính position được đặt là relative, absolute, fixed, hoặc sticky. Nếu position là static (mặc định), z-index sẽ không có hiệu lực.
Ví dụ:
.box1 {
position: static; /* Z-index không hoạt động */
z-index: 10;
}
.box2 {
position: relative; /* Z-index hoạt động */
z-index: 5;
}4.2. Thứ tự xếp chồng theo DOM nếu không có z-index
Nếu không có z-index, các phần tử được hiển thị theo thứ tự xuất hiện trong DOM. Phần tử nào xuất hiện sau trong mã HTML sẽ được ưu tiên hiển thị phía trên các phần tử trước đó.
