Căn giữa trong CSS: 7+ Cách Căn Chỉnh Ngang & Dọc Hiệu Quả
Bạn đã bao giờ ‘đau đầu’ vì loay hoay mãi mà không thể đưa một div vào đúng vị trí trung tâm? Việc căn giữa trong CSS tưởng chừng đơn giản nhưng lại là một thách thức kinh điển với nhiều lập trình viên. Đừng lo lắng! Trong bài viết này, Da I Kin sẽ cùng bạn tìm hiểu từ A-Z hơn 7 cách căn chỉnh ngang và dọc hiệu quả, từ cổ điển đến hiện đại. Hãy sẵn sàng để làm chủ kỹ năng thiết yếu này nhé!
Tại sao căn giữa trong CSS lại là một kỹ năng quan trọng?
Trước khi đi vào các đoạn code cụ thể, chúng ta hãy dừng lại một chút. Tại sao việc căn chỉnh các phần tử lại quan trọng đến vậy?
Câu trả lời nằm ở thiết kế layout và trải nghiệm người dùng. Một bố cục được căn chỉnh hợp lý sẽ tạo ra sự cân bằng, hài hòa và có tổ chức. Nó giúp hướng mắt người dùng vào những nội dung quan trọng nhất, tạo ra một luồng thông tin tự nhiên. Ngược lại, một trang web với các phần tử lệch lạc, lộn xộn sẽ trông thiếu chuyên nghiệp và gây khó chịu cho người đọc.
Việc làm chủ kỹ năng css căn giữa không chỉ giúp bạn giải quyết một bài toán kỹ thuật. Nó còn là nền tảng để bạn xây dựng những giao diện đẹp mắt, trực quan và thân thiện hơn. Đây là một trong những kỹ năng cốt lõi mà bất kỳ nhà phát triển front-end nào cũng cần nắm vững.

Các phương pháp Căn giữa theo Chiều ngang
Căn chỉnh theo chiều ngang là yêu cầu phổ biến nhất. May mắn là chúng ta có nhiều cách để thực hiện điều này. Da I Kin sẽ giới thiệu 3 phương pháp hiệu quả nhất, áp dụng cho các trường hợp khác nhau.
Sử dụng text-align cho văn bản và các inline-element
Đây là phương pháp cơ bản và nhanh nhất để canh giữa text trong css. Thuộc tính text-align: center; được áp dụng cho phần tử cha để căn giữa các phần tử con là inline hoặc inline-block (như text, thẻ <a>, <span>, <img>).
Ví dụ:
<div class="parent-container">
<p>Đoạn văn bản này sẽ được căn giữa.</p>
<img src="anh-cua-ban.jpg" alt="Ảnh minh họa">
</div>
.parent-container {
text-align: center;
border: 1px solid #ccc;
}
Lưu ý: Cách này không dùng để căn giữa một div (block-element).
Sử dụng margin: auto cho các block-element
Đây là cách truyền thống và cực kỳ hiệu quả để căn giữa div. Khi bạn đặt margin-left: auto; và margin-right: auto; cho một phần tử block, trình duyệt sẽ tự động chia đều khoảng trống còn lại ở hai bên. Để hoạt động, phần tử đó bắt buộc phải có width xác định.
Ví dụ:
<div class="centered-div">Đây là một div được căn giữa.</div>
.centered-div {
width: 70%; /* Bắt buộc phải có chiều rộng */
margin: 0 auto; /* Viết tắt cho margin-left và margin-right */
background-color: #f0f0f0;
padding: 20px;
}
Căn ngang hiện đại với Flexbox
Flexbox đã thay đổi cuộc chơi trong việc dàn layout. Để căn giữa theo chiều ngang, bạn chỉ cần biến phần tử cha thành một flex container và sử dụng thuộc tính justify-content.
Ví dụ:
<div class="flex-container">
<div class="child-item">Item 1</div>
<div class="child-item">Item 2</div>
</div>
.flex-container {
display: flex;
justify-content: center; /* Căn giữa các item con theo trục ngang */
border: 1px solid blue;
}
Cách này cực kỳ linh hoạt và là lựa chọn hàng đầu cho các layout hiện đại.

Các phương pháp Căn giữa theo Chiều dọc
Căn giữa theo chiều dọc từng là một cơn ác mộng trong CSS. Nhưng với các công cụ hiện đại, mọi thứ đã trở nên đơn giản hơn rất nhiều. Hãy cùng tìm hiểu các kỹ thuật phổ biến nhất.
Làm thế nào để căn giữa một div theo chiều dọc với Flexbox?
Đây là cách căn giữa trong css dễ dàng và được khuyến khích nhất hiện nay. Tương tự như căn ngang, bạn chỉ cần thêm thuộc tính align-items: center; vào flex container.
Ví dụ:
<div class="flex-container-vertical">
<div class="child-item">Tôi được căn giữa theo chiều dọc.</div>
</div>
.flex-container-vertical {
display: flex;
align-items: center; /* Căn giữa các item con theo trục dọc */
height: 200px; /* Cha phải có chiều cao xác định */
border: 1px solid green;
}
Bạn thấy không? Căn giữa bằng flexbox thực sự rất trực quan.
Kỹ thuật kết hợp position, top và transform
Trước khi có Flexbox, đây là một kỹ thuật phổ biến. Nó hoạt động bằng cách đẩy phần tử con xuống 50% chiều cao của cha, sau đó kéo ngược lại 50% chiều cao của chính nó.
Ví dụ:
<div class="parent-relative">
<div class="child-absolute">Nội dung căn giữa</div>
</div>
.parent-relative {
position: relative;
height: 200px;
border: 1px solid red;
}
.child-absolute {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Cách này vẫn hữu ích khi bạn không thể sử dụng Flexbox hoặc cần căn chỉnh một phần tử độc lập với các phần tử khác.
Làm cách nào để căn giữa văn bản theo chiều dọc trong CSS?
- Với văn bản một dòng: Bạn có thể đặt
line-heightbằng vớiheightcủa phần tử chứa nó. Cách này đơn giản nhưng chỉ hoạt động với một dòng duy nhất. - Với văn bản nhiều dòng: Giải pháp tốt nhất vẫn là sử dụng Flexbox. Chỉ cần áp dụng
display: flex;vàalign-items: center;cho phần tử cha.

Làm thế nào để căn giữa cả ngang và dọc
Đôi khi, bạn muốn một phần tử nằm ngay ngắn ở chính giữa màn hình hoặc một div cha. Đây là lúc sức mạnh của các phương pháp layout hiện đại tỏa sáng. Cùng Da I Kin xem 3 cách để center div css một cách hoàn hảo.
Flexbox căn giữa như thế nào?
Flexbox cung cấp một giải pháp cực kỳ đơn giản. Bạn chỉ cần kết hợp hai thuộc tính mà chúng ta đã tìm hiểu ở trên.
justify-content: center;để căn theo chiều ngang.align-items: center;để căn theo chiều dọc.
Ví dụ:
<div class="perfect-center-flex">
<div>Tuyệt vời! Tôi ở ngay trung tâm.</div>
</div>
.perfect-center-flex {
display: flex;
justify-content: center; /* Ngang */
align-items: center; /* Dọc */
height: 300px;
border: 1px solid purple;
}
Đây là cách làm phổ biến và được tin dùng nhất.
Giải pháp nhanh gọn với CSS Grid
CSS Grid mang đến một cách còn ngắn gọn hơn. Thuộc tính place-items là cách viết tắt cho align-items và justify-items.
Ví dụ:
<div class="perfect-center-grid">
<div>Tôi cũng ở trung tâm, nhưng code ngắn hơn!</div>
</div>
.perfect-center-grid {
display: grid;
place-items: center; /* Căn giữa cả ngang và dọc */
height: 300px;
border: 1px solid orange;
}
Chỉ với hai dòng CSS, bạn đã hoàn thành nhiệm vụ. Rất ấn tượng phải không?
Phương pháp position: absolute kết hợp transform
Chúng ta có thể mở rộng kỹ thuật position để căn giữa theo cả hai chiều. Logic hoàn toàn tương tự.
Ví dụ:
<div class="parent-relative-full">
<div class="child-absolute-full">Vị trí trung tâm hoàn hảo</div>
</div>
.parent-relative-full {
position: relative;
height: 300px;
border: 1px solid darkcyan;
}
.child-absolute-full {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%); /* Kéo ngược lại 50% trên cả 2 trục */
}

Giải quyết các trường hợp cụ thể
Lý thuyết là vậy, nhưng thực tế đôi khi có những trường hợp đặc biệt. Da I Kin sẽ giúp bạn giải quyết hai tình huống thường gặp.
Cách căn giữa một tấm ảnh trong CSS
Ảnh (<img>) là một inline-block element. Do đó, bạn có thể sử dụng những cách sau:
- Dùng
text-align: Đặttext-align: center;chodivcha chứa tấm ảnh. - Dùng
margin: auto: Nếu bạn đặtdisplay: block;cho ảnh, bạn có thể dùngmargin: 0 auto;để căn ngang nó. - Dùng Flexbox/Grid: Cách đơn giản và mạnh mẽ nhất là biến
divcha thành flex hoặc grid container và dùng các thuộc tính căn chỉnh tương ứng. Đây là giải pháp căn giữa ảnh trong css linh hoạt nhất.
Ví dụ với Flexbox:
.image-container {
display: flex;
justify-content: center;
}
Căn giữa nhiều items trên một hàng
Khi bạn có nhiều phần tử và muốn chúng dàn đều và nằm giữa container, Flexbox là công cụ lý tưởng. Bạn có thể sử dụng justify-content với các giá trị khác nhau để kiểm soát khoảng cách giữa chúng.
Ví dụ:
<div class="multi-item-container">
<span>Item 1</span>
<span>Item 2</span>
<span>Item 3</span>
</div>
.multi-item-container {
display: flex;
justify-content: center; /* Gom các item vào giữa */
gap: 20px; /* Tạo khoảng cách giữa các item */
}
Bằng cách thay đổi giá trị của justify-content (ví dụ: space-around, space-between), bạn có thể tạo ra nhiều kiểu bố cục khác nhau một cách dễ dàng.

Thuộc tính căn giữa trong CSS
Qua các ví dụ trên, bạn có thể thấy không có một “thuộc tính căn giữa” duy nhất. Thay vào đó, chúng ta có một tập hợp các thuộc tính và kỹ thuật hoạt động cùng nhau. Dưới đây là bảng tóm tắt nhanh để bạn dễ dàng tham khảo.
Bảng tóm tắt các thuộc tính và phương pháp
| Phương pháp/Thuộc tính | Dùng để căn chỉnh | Áp dụng cho | Ghi chú |
| text-align: center; | Ngang | Phần tử con inline/inline-block | Đặt trên phần tử cha. |
| margin: 0 auto; | Ngang | Phần tử block | Phần tử phải có width. |
| display: flex; | Cả ngang và dọc | Phần tử con (flex items) | justify-content cho trục chính, align-items cho trục phụ. |
| display: grid; | Cả ngang và dọc | Phần tử con (grid items) | place-items: center là cách nhanh nhất. |
| position + transform | Cả ngang và dọc | Phần tử được định vị (absolute) | Hữu ích khi không dùng được Flexbox/Grid. |
Khi nào nên dùng Flexbox và khi nào nên dùng Grid?
Đây là một câu hỏi rất hay. Quy tắc chung khá đơn giản:
- Dùng Flexbox khi bạn cần sắp xếp các phần tử theo một chiều (một hàng hoặc một cột). Flexbox rất mạnh mẽ trong việc phân phối không gian và căn chỉnh các mục trong một dòng.
- Dùng Grid khi bạn cần xây dựng layout phức tạp theo hai chiều (cả hàng và cột). Grid cho phép bạn kiểm soát chính xác vị trí của các phần tử trong một hệ thống lưới.
Đối với việc căn giữa một phần tử duy nhất, cả hai đều làm rất tốt. Tuy nhiên, place-items: center của Grid có phần ngắn gọn hơn một chút.

Lời kết
Việc căn giữa trong CSS không còn là một điều gì đó đáng sợ. Với sự ra đời của Flexbox và Grid, chúng ta đã có những công cụ cực kỳ mạnh mẽ và trực quan để xây dựng layout. Đối với hầu hết các tác vụ căn chỉnh hàng ngày, Flexbox là lựa chọn hàng đầu vì tính linh hoạt của nó.
Da I Kin hy vọng bài viết này đã cung cấp cho bạn một cái nhìn tổng quan và rõ ràng về các kỹ thuật căn giữa. Hãy thực hành thường xuyên để biến chúng thành kỹ năng của riêng mình.
Bạn thường dùng cách nào để căn giữa các phần tử? Hãy chia sẻ phương pháp yêu thích của bạn bên dưới nhé!
Nếu bạn đang tìm kiếm một đối tác thiết kế website chuyên nghiệp, nơi mọi chi tiết đều được chăm chút tỉ mỉ, Da I Kin luôn sẵn sàng đồng hành. Liên hệ với chúng tôi ngay hôm nay!