Tuyển dụng
Viettel IDC

Position CSS là gì? Cách dùng 5 giá trị Position trong CSS

05/06/2026

Position CSS là gì? Đây là thuộc tính cốt lõi dùng để xác định vị trí hiển thị chính xác của một phần tử HTML trên trang web. Cùng Viettel IDC phân tích chi tiết về cơ chế hoạt động của position trong CSS kèm ví dụ thực tế.

Position CSS là gì?

Thuộc tính position css là một thuộc tính quan trọng giúp lập trình viên xác định chính xác vị trí của một phần tử (element) HTML trên giao diện trang web. Khi khai báo position trong css, bạn đang chỉ định cách phần tử đó tương tác với luồng tài liệu mặc định (normal document flow) hoặc tương tác với các phần tử bao quanh nó. 

Thuộc tính này thường được sử dụng kết hợp với 4 thuộc tính tọa độ top, right, bottom, left để điều hướng vị trí. Ngoài ra, thuộc tính z-index cũng thường đi kèm để xác định thứ tự xếp chồng (phần tử nào nằm trên, phần tử nào nằm dưới) khi các phần tử đè lên nhau.

Position CSS là gì?

Phân tích 5 giá trị của thuộc tính position trong CSS

Thuộc tính position trong CSS quyết định cách một phần tử HTML được đặt trên giao diện. Để layout trang web chính xác, bạn cần nắm rõ cơ chế xử lý không gian và tọa độ của 5 giá trị sau.

Position: static (Mặc định)

Đây là trạng thái mặc định của mọi phần tử HTML khi được hiển thị trên trình duyệt. Phần tử mang giá trị static sẽ xuất hiện theo đúng thứ tự của luồng tài liệu (normal document flow) từ trên xuống dưới. Ở trạng thái này, các thuộc tính tọa độ bao gồm top, right, bottom, left và z-index hoàn toàn bị vô hiệu hóa. Để điều chỉnh khoảng cách cho phần tử static, lập trình viên bắt buộc phải sử dụng thuộc tính margin hoặc padding.

Ví dụ: Dù khai báo thuộc tính top và left, khối div vẫn nằm im tại vị trí mặc định do trình duyệt bỏ qua các giá trị điều hướng này.

HTML

<div class="box-static">Phần tử hiển thị theo luồng mặc định</div>

 

CSS

.box-static {

  position: static;

  top: 50px; /* Không có tác dụng */

  left: 50px; /* Không có tác dụng */

  background-color: #e2e8f0;

  padding: 20px;

}

Position: relative (Định vị tương đối)

Giá trị relative định vị phần tử dựa trên chính vị trí gốc ban đầu của nó. Khi khai báo thêm các thuộc tính tọa độ, phần tử sẽ dịch chuyển khỏi vị trí cũ. Điểm quan trọng nhất là khoảng không gian gốc mà phần tử này chiếm dụng vẫn được trình duyệt giữ nguyên, không để cho các phần tử xung quanh tràn vào lấp chỗ. Trong thực tế dự án, relative rất ít khi được dùng để dịch chuyển vị trí đơn thuần, mà chủ yếu được thiết lập cho phần tử cha để làm mốc tọa độ cho phần tử con.

Ví dụ: Khối div dưới đây sẽ dịch chuyển xuống dưới 20px và sang phải 30px so với vị trí đáng lẽ nó phải đứng, nhưng khoảng trống cũ của nó không bị mất đi.

HTML

<div class="box-relative">Phần tử dịch chuyển tương đối</div>

 

CSS

.box-relative {

  position: relative;

  top: 20px;

  left: 30px;

  background-color: #cbd5e1;

  padding: 20px;

}

Position: absolute (Định vị tuyệt đối)

Khi sử dụng absolute, phần tử bị loại bỏ hoàn toàn khỏi luồng tài liệu và không còn chiếm không gian vật lý trên giao diện, khiến các phần tử phía dưới tự động đẩy lên lấp chỗ trống. Trình duyệt sẽ định vị phần tử absolute dựa trên phần tử cha gần nhất có chứa thuộc tính position khác static (thường là cha mang thuộc tính relative). Nếu không tìm thấy phần tử cha nào phù hợp, nó sẽ lấy thẻ <html> làm mốc tọa độ cuối cùng. Kỹ thuật này thường được dùng để thiết kế menu dropdown, tooltip hoặc các icon đè lên hình ảnh.

Ví dụ: Mô phỏng giao diện huy hiệu thông báo (badge) nằm đè lên góc phải của hình đại diện (avatar). Thẻ cha bắt buộc phải dùng relative để giữ chân thẻ con dùng absolute.

HTML

<div class="avatar-box">

  <img src="avatar.jpg" alt="Ảnh đại diện">

  <div class="badge">3</div>

</div>

 

CSS

.avatar-box {

  position: relative; /* Tạo mốc tọa độ cho phần tử con */

  width: 60px;

  height: 60px;

}

 

.badge {

  position: absolute;

  top: -5px; /* Đẩy vượt lên trên viền thẻ cha */

  right: -5px; /* Đẩy vượt sang phải viền thẻ cha */

  background-color: red;

  color: white;

  border-radius: 50%;

  padding: 4px 8px;

}

Position: fixed (Định vị cố định)

Giống với absolute, phần tử mang giá trị fixed cũng bị tách khỏi luồng tài liệu mặc định và không chiếm diện tích trên khung layout. Tuy nhiên, mốc tọa độ của nó không phụ thuộc vào phần tử cha mà luôn gắn liền với cửa sổ trình duyệt (viewport). Do đó, phần tử sẽ đứng yên cố định tại một vị trí trên màn hình ngay cả khi người dùng cuộn trang xuống dưới. Thuộc tính này là tiêu chuẩn để xây dựng thanh điều hướng (header) luôn hiển thị ở đầu trang, nút quay về đầu trang hoặc khung chat hỗ trợ.

Ví dụ: Tạo một thanh menu điều hướng luôn ghim chặt ở mép trên cùng của màn hình khi cuộn trang.

HTML

<header class="header-fixed">Menu Điều Hướng</header>

<main>Nội dung website...</main>

 

CSS

.header-fixed {

  position: fixed;

  top: 0;

  left: 0;

  width: 100%;

  background-color: #1e293b;

  color: white;

  padding: 15px 20px;

  z-index: 999; /* Đảm bảo không bị các phần tử khác đè lên */

}

Position: sticky (Định vị dính)

Giá trị sticky là cơ chế chuyển đổi tự động giữa relative và fixed dựa trên thao tác cuộn trang. Ở trạng thái ban đầu, phần tử nằm trong luồng tài liệu và di chuyển bình thường như một phần tử relative. 

Khi người dùng cuộn trang đến một mốc tọa độ được khai báo trước (ví dụ: top: 20px), nó sẽ chuyển sang trạng thái giống fixed và ghim chặt tại vị trí đó. Khi cuộn qua hết chiều cao của phần tử cha chứa nó, khối sticky sẽ được giải phóng để tiếp tục trôi đi. Đây là giải pháp tối ưu để làm mục lục bài viết chạy dọc màn hình hoặc cố định tiêu đề của bảng dữ liệu dài.

Ví dụ: Tạo một khối mục lục (Table of Contents) nằm ở thanh bên (sidebar), tự động ghim lại cách mép trên màn hình 20px khi người dùng cuộn chuột đọc nội dung.

HTML

<div class="sidebar">

  <div class="toc-sticky">

    <h4>Mục lục bài viết</h4>

    <ul>

      <li>1. Khái niệm</li>

      <li>2. Phân loại</li>

    </ul>

  </div>

</div>

 

CSS

.toc-sticky {

  position: -webkit-sticky; /* Hỗ trợ trình duyệt Safari */

  position: sticky;

  top: 20px; /* Ngưỡng kích hoạt trạng thái ghim */

  background-color: #f8fafc;

  padding: 15px;

  border: 1px solid #e2e8f0;

}

Lỗi thường gặp khi dùng Position CSS

Trong quá trình làm dự án thực tế, việc sử dụng các giá trị position (đặc biệt là absolute, fixed và sticky) rất dễ gây ra lỗi vỡ giao diện nếu không kiểm soát tốt. Dưới đây là 3 vấn đề phổ biến nhất và cách các lập trình viên chuyên nghiệp xử lý chúng.

Hội chứng Z-index (Xung đột thứ tự xếp chồng)

Khi bạn sử dụng absolute, fixed hoặc sticky, các phần tử này bị tách khỏi luồng tài liệu mặc định, dẫn đến tình trạng chúng dễ dàng đè lên nhau hoặc che khuất nội dung quan trọng. Để giải quyết, chúng ta sử dụng thuộc tính z-index (phần tử có z-index lớn hơn sẽ nằm trên).

- Vấn đề: Lập trình viên mới thường gán bừa các giá trị z-index khổng lồ như 999 hay 99999 để ép một phần tử nổi lên, dẫn đến việc mất kiểm soát khi dự án phình to. Hơn nữa, z-index chỉ hoạt động khi phần tử có thuộc tính position khác static.

- Cách khắc phục: Thay vì gán số ngẫu nhiên, hãy xây dựng một hệ thống biến (variable) chuẩn mực cho toàn dự án để quản lý thứ tự hiển thị.

Suy giảm hiệu suất (Performance) khi dùng làm Animation

Một sai lầm rất phổ biến là thay đổi liên tục các thuộc tính top, left, bottom, right của phần tử absolute hoặc relative để tạo hiệu ứng chuyển động (ví dụ: thanh menu trượt ra trượt vào).

- Vấn đề: Trình duyệt mất rất nhiều tài nguyên để tính toán lại layout (quá trình Reflow) mỗi khi các giá trị tọa độ này thay đổi, gây ra hiện tượng giật lag (rớt FPS) trên các thiết bị cấu hình yếu.

- Cách khắc phục: Để tối ưu hiệu suất, hãy để nguyên tọa độ ban đầu và sử dụng thuộc tính transform: translate() cho các hiệu ứng chuyển động. Trình duyệt xử lý transform mượt mà hơn rất nhiều nhờ sự hỗ trợ của GPU.

Lỗi Position: sticky không hoạt động

position: sticky là một tính năng tuyệt vời, nhưng cũng là giá trị dễ gây "ức chế" nhất vì nó rất hay bị vô hiệu hóa mà không báo lỗi.

- Vấn đề: Bạn đã khai báo position: sticky và mốc top: 0, nhưng phần tử vẫn cuộn trôi đi mất chứ không chịu ghim lại trên màn hình.

- Cách khắc phục: Nếu khối sticky của bạn không hoạt động, hãy kiểm tra ngay 2 yếu tố cốt lõi sau:

+ Phần tử cha phải có chiều cao dư dả: Thuộc tính sticky chỉ hoạt động trong phạm vi chiều cao của phần tử cha chứa nó. Nếu thẻ cha không cao hơn thẻ sticky, nó sẽ không có không gian để "trượt".
+ Xung đột thuộc tính Overflow: Đây là thủ phạm phổ biến nhất. Hãy rà soát lại toàn bộ cây HTML từ phần tử sticky ngược lên tận thẻ <body>. Nếu bất kỳ thẻ cha nào có chứa thuộc tính overflow: hidden, overflow: scroll, hoặc overflow: auto, thì position: sticky bên trong nó sẽ bị vô hiệu hóa hoàn toàn.

Kết luận

Position CSS là gì không còn là rào cản kỹ thuật nếu bạn nắm chắc nguyên lý hoạt động và hệ quy chiếu của từng giá trị định vị. Việc áp dụng linh hoạt thuộc tính position trong CSS đòi hỏi quá trình quan sát luồng tài liệu HTML và hiểu rõ cách các phần tử tương tác không gian với nhau.

Để được hỗ trợ tư vấn và tìm hiểu các dịch vụ của Viettel, bạn có thể liên hệ trực tiếp tới Viettel IDC qua các kênh:

- Hotline: 1800 8088 (miễn phí cước gọi)

- Fanpage: https://www.facebook.com/viettelidc  

Bình luận ()

Đăng nhập | Đăng ký
để gửi bình luận
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Ý kiến của bạn sẽ được xét duyệt trước khi đăng.
Xem thêm bình luận

Tin liên quan

09/11/2026

Cổng SATA là gì? Cách nhận biết và kết nối ổ HDD, SSD

Cổng SATA là gì? Cách nhận biết cổng SATA trên mainboard, phân biệt các phiên bản và kiểm tra ổ HDD, SSD có tương thích trước khi nâng cấp.

09/11/2026

Microsoft Publisher là gì? Tổng quan về phần mềm thiết kế dàn trang

Microsoft Publisher là gì? Đây là phần mềm dàn trang của Microsoft, hỗ trợ thiết kế ấn phẩm bằng các mẫu có sẵn và công cụ sắp xếp văn bản, hình ảnh linh hoạt.

09/11/2026

Có nên sử dụng các công cụ Text to speech miễn phí? Ưu điểm và hạn chế

Có nên sử dụng các công cụ Text to Speech miễn phí? Cân nhắc chất lượng giọng đọc, hạn mức và quyền sử dụng để biết khi nào bản miễn phí đủ dùng hoặc cần nâng cấp.

09/11/2026

Kiến trúc Client Server là gì? Cách mô hình máy chủ - máy khách hoạt động

Kiến trúc Client Server là gì? Đây là mô hình máy khách - máy chủ, tổ chức việc gửi yêu cầu, xử lý và trao đổi dữ liệu trong các ứng dụng và dịch vụ mạng.

09/11/2026

Cấu trúc silo là gì trong SEO? Cách xây dựng cấu trúc silo cho website

Cấu trúc silo là gì? Nắm rõ cách phân nhóm nội dung, phân biệt silo vật lý và silo ảo để xây dựng website dễ điều hướng, thuận tiện quản lý và hỗ trợ SEO.

09/11/2026

Top 15 các phần mềm quay lại màn hình miễn phí cho máy tính và điện thoại

Các phần mềm quay lại màn hình miễn phí giúp bạn ghi hình rõ nét, lưu lại thao tác và tạo video hướng dẫn trực quan cho nhu cầu học tập, làm việc hằng ngày.

09/11/2026

Postfix là gì? Hướng dẫn cài đặt và cấu hình trên Ubuntu

Postfix là gì được giải đáp qua vai trò của phần mềm chuyển thư mã nguồn mở, giúp doanh nghiệp chủ động quản lý luồng email và cấu hình hệ thống trên Linux.

09/11/2026

Cách quét mã độc cho website WordPress và lưu ý bảo mật cần biết

Cách quét mã độc cho website WordPress giúp phát hiện tệp đáng ngờ, xác định dấu vết xâm nhập và hỗ trợ xử lý sớm nguy cơ ảnh hưởng đến dữ liệu, người truy cập.

09/11/2026

Top 20 các plugin hữu ích cho WordPress tốt nhất nên cài đặt

Các plugin hữu ích cho WordPress giúp mở rộng chức năng sẵn có của website, cải thiện trải nghiệm người dùng và đơn giản hóa công việc quản trị hằng ngày.

09/11/2026

Hướng dẫn cài đặt các ứng dụng trên Ubuntu cho người mới

Hướng dẫn cài đặt các ứng dụng trên Ubuntu chi tiết từng bước, giúp người mới dễ dàng thao tác từ tải phần mềm, thiết lập gói cài đến khởi chạy ứng dụng.