3 phương pháp căn giữa hình ảnh với CSS dễ dàng

3 Phương pháp căn giữa hình ảnh với CSS dễ dàng

Chia sẻ kiến thức 18/06/2022

Cùng FUNiX khám phá cách hiển thị hình ảnh chính xác nơi bạn muốn với các mẹo căn giữa tiện dụng này.

1. Sử Dụng Flexbox

Flexbox là một trong những phương pháp hiện đại và mạnh mẽ để căn giữa các phần tử trong CSS. Nó cho phép căn giữa dễ dàng, linh hoạt và có thể sử dụng trên mọi trình duyệt hiện đại. Flexbox đặc biệt hữu ích khi bạn muốn căn giữa các phần tử trong một container mà không cần phải biết trước kích thước của chúng.

Để căn giữa hình ảnh trong một container bằng Flexbox, chúng ta chỉ cần áp dụng một vài thuộc tính đơn giản. Dưới đây là một ví dụ cụ thể:

html
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Căn Giữa Hình Ảnh Với Flexbox</title>
<style>
.container {
display: flex;
justify-content: center; /* Căn giữa theo chiều ngang */
align-items: center; /* Căn giữa theo chiều dọc */
height: 100vh; /* Chiều cao container bằng với chiều cao cửa sổ */
}
img {
max-width: 100%; /* Đảm bảo hình ảnh không vượt quá kích thước của container */
}
</style>
</head>
<body>
<div class="container">
<img src="image.jpg" alt="Hình ảnh mẫu">
</div>
</body>
</html>

Giải thích:

  • display: flex: Biến .container thành một phần tử flex.
  • justify-content: center: Căn giữa hình ảnh theo chiều ngang.
  • align-items: center: Căn giữa hình ảnh theo chiều dọc.
  • height: 100vh: Đảm bảo rằng chiều cao của .container bằng chiều cao của cửa sổ trình duyệt (viewport).

Với phương pháp này, bất kể kích thước của hình ảnh là gì, nó sẽ luôn được căn giữa cả theo chiều ngang và chiều dọc trong container.

2. Sử Dụng Grid Layout

CSS Grid là một hệ thống bố cục mạnh mẽ cho phép bạn xây dựng giao diện phức tạp. Mặc dù Flexbox có thể căn giữa một cách dễ dàng, Grid Layout cũng là một lựa chọn tuyệt vời nếu bạn muốn kiểm soát cách các phần tử được phân phối và căn giữa trên trang.

Với CSS Grid, bạn có thể dễ dàng căn giữa hình ảnh trong một container. Đây là ví dụ cách làm:

html
 
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Căn Giữa Hình Ảnh Với Grid Layout</title>
<style>
.container {
display: grid;
place-items: center; /* Căn giữa cả theo chiều ngang và chiều dọc */
height: 100vh;
}
img {
max-width: 100%;
}
</style>
</head>
<body>
<div class="container">
<img src="image.jpg" alt="Hình ảnh mẫu">
</div>
</body>
</html>

Giải thích:

  • display: grid: Biến .container thành một phần tử grid.
  • place-items: center: Đây là thuộc tính viết tắt cho justify-items: centeralign-items: center, giúp căn giữa các phần tử con (trong trường hợp này là hình ảnh) theo cả chiều ngang và chiều dọc.
  • height: 100vh: Đảm bảo rằng chiều cao của .container sẽ bằng với chiều cao của cửa sổ trình duyệt.

Grid Layout cho phép bạn căn giữa hình ảnh trong một container một cách rất đơn giản mà không cần phải sử dụng nhiều dòng mã.

>>> Xem thêm: 8 mẹo và thủ thuật CSS mọi lập trình viên nên biết

3. Sử Dụng Positioning (Position Absolute)

Sử Dụng Positioning (Position Absolute)
Sử Dụng Positioning (Position Absolute)

Phương pháp sử dụng position là cách tiếp cận truyền thống và đã được sử dụng từ lâu trong CSS. Mặc dù Flexbox và Grid Layout hiện đại hơn, nhưng phương pháp này vẫn rất hữu ích và có thể được sử dụng trong những tình huống cần căn giữa nhanh chóng.

Dưới đây là cách sử dụng position: absolute để căn giữa hình ảnh:

html
 
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Căn Giữa Hình Ảnh Với Positioning</title>
<style>
.container {
position: relative;
height: 100vh;
}
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<div class="container">
<img src="image.jpg" alt="Hình ảnh mẫu">
</div>
</body>
</html>

Giải thích:

  • position: relative: Đặt .container vào chế độ vị trí tương đối, để các phần tử con có thể được căn chỉnh dựa trên nó.
  • position: absolute: Đặt hình ảnh vào vị trí tuyệt đối so với phần tử cha (container).
  • top: 50%left: 50%: Di chuyển hình ảnh đến vị trí giữa theo chiều ngang và chiều dọc của container.
  • transform: translate(-50%, -50%): Dịch chuyển hình ảnh về phía trên và phía trái một nửa chiều rộng và chiều cao của chính nó, từ đó căn giữa chính xác.

Phương pháp này khá đơn giản và có thể áp dụng hiệu quả khi bạn cần căn giữa hình ảnh trong một container cụ thể. Tuy nhiên, phương pháp này có thể gặp vấn đề với các phần tử có chiều cao hoặc chiều rộng thay đổi, vì vậy bạn cần phải kiểm tra kỹ lưỡng trong các trường hợp phức tạp hơn.

>>> Xem thêm: 10 mẫu nền CSS bạn có thể sử dụng trên trang web của mình

4. So Sánh Các Phương Pháp

Mỗi phương pháp đều có những ưu điểm và hạn chế riêng, và việc chọn phương pháp nào phụ thuộc vào nhu cầu cụ thể của bạn.

  • Flexbox: Là phương pháp hiện đại, dễ sử dụng và hỗ trợ căn giữa cả theo chiều ngang và chiều dọc mà không cần biết trước kích thước của phần tử. Phù hợp với hầu hết các trường hợp.
  • Grid Layout: Cũng là một phương pháp hiện đại và rất mạnh mẽ, đặc biệt khi bạn cần kiểm soát bố cục của nhiều phần tử cùng lúc. Tuy nhiên, Grid thường được sử dụng trong các bố cục phức tạp hơn.
  • Positioning: Là phương pháp cổ điển và đơn giản, nhưng có thể gặp vấn đề khi phần tử có kích thước thay đổi hoặc nếu cần căn giữa nhiều phần tử.

Kết Luận

Căn giữa hình ảnh trong CSS không phải là một công việc khó khăn nếu bạn sử dụng đúng phương pháp. Tùy thuộc vào yêu cầu thiết kế và môi trường phát triển của bạn, bạn có thể chọn Flexbox, Grid Layout, hoặc Positioning để căn giữa hình ảnh dễ dàng và hiệu quả. Flexbox và Grid là những lựa chọn tốt cho các dự án hiện đại vì tính linh hoạt và sự đơn giản, trong khi Positioning là một giải pháp đơn giản và hiệu quả khi làm việc với các thiết kế truyền thống. Bằng cách nắm vững các kỹ thuật này, bạn sẽ có thể tạo ra các giao diện đẹp mắt và dễ sử dụng cho người dùng.

>>> Nếu bạn đang có nhu cầu tìm hiểu về khóa học lập trình đi làm ngay. Hãy liên hệ với FUNiX ngay tại đây:

>>> Xem thêm chuỗi bài viết liên quan:

10 ví dụ mã CSS mà bạn có thể học trong 10 phút

Cách tạo Mẫu F và Z bằng HTML và CSS

8 mẹo và thủ thuật CSS mọi lập trình viên nên biết

10 mẫu nền CSS bạn có thể sử dụng trên trang web của mình

 

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/css-center-images/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại