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

20/10/2026

Viettel IDC dẫn đầu bảng xếp hạng Enterprise of Choice 2026 tại nhiều hạng mục quan trọng

Viettel IDC đạt 6 thứ hạng nổi bật tại Enterprise of Choice 2026, trong đó có 5 vị trí Top 1 ở các hạng mục về công nghệ thông tin, phát triển bền vững, doanh nghiệp được yêu thích bởi người lao động, lãnh đạo và thế hệ trẻ. Kết quả ghi nhận những nỗ lực của doanh nghiệp trong xây dựng môi trường làm việc tích cực, lấy con người làm trung tâm.

20/10/2026

So sánh các dịch vụ cloud backup phổ biến tại Việt Nam

So sánh các dịch vụ cloud backup phổ biến tại Việt Nam về phạm vi sao lưu, bảo mật, khôi phục, chi phí và mô hình triển khai để doanh nghiệp dễ lựa chọn.

20/10/2026

Dịch vụ lưu trữ đám mây nào tốt nhất cho doanh nghiệp nhỏ 2026? 9 lựa chọn nên tham khảo

So sánh 9 dịch vụ lưu trữ đám mây cho doanh nghiệp nhỏ năm 2026: công cụ chia sẻ file, Object Storage trong nước và quốc tế, kèm tiêu chí chọn nhà cung cấp.

20/10/2026

Mua chứng chỉ SSL cho website ở đâu uy tín? 5 kênh mua và triển khai

Có 5 kênh mua và triển khai chứng chỉ SSL cho website: CA, đại lý trong nước, nhà cung cấp hosting, nhà đăng ký tên miền và CA miễn phí. Xem ưu nhược điểm và cách kiểm tra nơi bán uy tín.

20/10/2026

Lưu trữ ngoài có an toàn không? Rủi ro và cách bảo vệ dữ liệu doanh nghiệp

Lưu trữ dữ liệu bên ngoài có an toàn không? Phân tích rủi ro, các lớp bảo vệ cần có và tiêu chí chọn nhà cung cấp cho doanh nghiệp.

19/10/2026

VDS là gì? VDS khác VPS và Dedicated Server như thế nào?

VDS là gì, khác VPS và Dedicated Server ở điểm nào, ưu nhược điểm và trường hợp nên sử dụng.

19/10/2026

Cách triển khai observability cho ứng dụng đám mây và microservices như thế nào

Hướng dẫn triển khai observability cho ứng dụng đám mây và microservices qua 7 bước, từ xác định SLI/SLO đến tối ưu chi phí telemetry.

19/10/2026

Top nhà cung cấp dịch vụ Dedicated Server giá tốt, tốc độ ổn định tại Việt Nam

Tổng hợp các nhà cung cấp Dedicated Server tại Việt Nam, so sánh mô hình dịch vụ, cấu hình, Data Center, uptime, băng thông và giá công bố.

19/10/2026

Top nhà cung cấp dịch vụ Hosting và VPS uy tín tại Việt Nam

Top nhà cung cấp Hosting và VPS uy tín tại Việt Nam. So sánh hạ tầng, uptime, loại dịch vụ và các tiêu chí cần kiểm tra trước khi lựa chọn.

19/10/2026

Thuê Cloud GPU có đắt không?

Thuê Cloud GPU có đắt không phụ thuộc vào yếu tố nào? Phân tích các mô hình tính phí, chi phí ẩn và cách tối ưu ngân sách khi dùng GPU đám mây.