CSS object-fit là một thuộc tính hữu ích cho phép bạn kiểm soát cách hình ảnh hoặc video phù hợp với khung chứa. Thuộc tính này giúp bạn xử lý tình huống khi hình ảnh có tỷ lệ không khớp với kích thước khung chứa, từ đó đảm bảo rằng nội dung hiển thị đẹp mắt và không bị méo mó. Với object-fit, bạn có thể dễ dàng điều chỉnh hình ảnh để lấp đầy, thu nhỏ, hoặc duy trì tỷ lệ gốc mà không làm ảnh hưởng đến trải nghiệm người dùng.
Bài viết này là một phần trong chuỗi học CSS trên "codetuthub.com", cùng với các bài viết như CSS Background Images, CSS Image Filters, và CSS Flexbox.
1. Tổng quan về object-fit
Thuộc tính object-fit được sử dụng chủ yếu cho các phần tử hình ảnh (<img>) hoặc video (<video>) khi kích thước của chúng không khớp với kích thước của phần tử chứa. Thuộc tính này giúp xác định cách nội dung của phần tử sẽ điều chỉnh để vừa khung chứa.
Cú pháp
object-fit: value;- value: Các giá trị khác nhau mà
object-fitcó thể nhận, bao gồmfill,contain,cover,none, vàscale-down.
2. Các giá trị của object-fit
2.1 fill
fill là giá trị mặc định của object-fit, yêu cầu hình ảnh hoặc video lấp đầy hoàn toàn khung chứa. Với fill, nội dung có thể bị kéo giãn hoặc co lại để khớp với kích thước của khung.
.image-fill {
width: 300px;
height: 200px;
object-fit: fill;
}Trong ví dụ trên, hình ảnh sẽ được co giãn để lấp đầy toàn bộ khung 300x200px, bất kể tỷ lệ gốc của nó.
2.2 contain
contain giữ tỷ lệ gốc của hình ảnh hoặc video và điều chỉnh kích thước sao cho toàn bộ nội dung vừa trong khung. Nếu kích thước khung lớn hơn, các khoảng trống sẽ xuất hiện để giữ nguyên tỷ lệ gốc.
.image-contain {
width: 300px;
height: 200px;
object-fit: contain;
}Với contain, hình ảnh sẽ được co lại cho vừa với khung mà không bị méo mó, duy trì tỷ lệ ban đầu.
2.3 cover
cover là lựa chọn phổ biến để làm hình nền hoặc khi muốn hình ảnh lấp đầy khung chứa mà vẫn giữ nguyên tỷ lệ. Hình ảnh sẽ được cắt để vừa với khung mà không có khoảng trống.
.image-cover {
width: 300px;
height: 200px;
object-fit: cover;
}Trong ví dụ này, hình ảnh sẽ phóng to để lấp đầy khung mà vẫn giữ nguyên tỷ lệ gốc, các phần vượt ngoài khung sẽ bị cắt bỏ.
2.4 none
none giữ nguyên kích thước ban đầu của nội dung mà không thay đổi tỷ lệ hay cắt xén. Nếu hình ảnh hoặc video lớn hơn khung, phần thừa sẽ bị cắt bớt.
.image-none {
width: 300px;
height: 200px;
object-fit: none;
}Với none, kích thước gốc của hình ảnh hoặc video được giữ nguyên, nên nội dung có thể vượt ra ngoài hoặc bị cắt bớt.
2.5 scale-down
scale-down là sự kết hợp của none và contain. Nội dung sẽ được thu nhỏ vừa với khung nếu kích thước ban đầu vượt quá khung chứa, nhưng sẽ giữ nguyên kích thước nếu nhỏ hơn khung.
.image-scale-down {
width: 300px;
height: 200px;
object-fit: scale-down;
}Trong ví dụ trên, hình ảnh sẽ giữ nguyên kích thước ban đầu nếu nhỏ hơn khung 300x200px. Nếu lớn hơn, nó sẽ thu nhỏ lại cho vừa với khung.
3. Ứng dụng thực tế của object-fit
3.1 Ảnh bìa cho bài viết
Khi sử dụng ảnh bìa, bạn có thể muốn hình ảnh lấp đầy toàn bộ khung mà vẫn giữ nguyên tỷ lệ gốc. object-fit: cover là lựa chọn lý tưởng trong trường hợp này.
.article-cover {
width: 100%;
height: 200px;
object-fit: cover;
}Với cover, hình ảnh bìa sẽ luôn lấp đầy khung nhưng giữ tỷ lệ chuẩn, tạo hiệu ứng hình ảnh đẹp và hấp dẫn.
3.2 Ảnh sản phẩm thương mại điện tử
Khi hiển thị ảnh sản phẩm, bạn muốn hình ảnh vừa với khung mà không làm thay đổi tỷ lệ, giúp sản phẩm trông thực tế hơn. object-fit: contain là lựa chọn tốt.
.product-image {
width: 100px;
height: 100px;
object-fit: contain;
}Sử dụng contain cho phép bạn hiển thị toàn bộ sản phẩm mà không làm thay đổi kích thước, giúp người xem thấy rõ sản phẩm hơn.
3.3 Ảnh avatar người dùng
Khi hiển thị ảnh đại diện, bạn có thể sử dụng object-fit: cover để đảm bảo hình ảnh luôn tròn và không có khoảng trống.
.avatar {
width: 50px;
height: 50px;
border-radius: 50%;
object-fit: cover;
}Với thiết lập này, ảnh đại diện sẽ luôn nằm gọn trong khung tròn, lấp đầy diện tích hiển thị mà vẫn giữ tỷ lệ.
4. Kết hợp object-fit với object-position
object-position là thuộc tính CSS cho phép bạn tùy chỉnh vị trí của hình ảnh hoặc video trong khung khi sử dụng object-fit. Mặc định, object-position đặt nội dung ở giữa (center), nhưng bạn có thể thay đổi vị trí này.
Ví dụ kết hợp object-fit và object-position
.custom-position {
width: 300px;
height: 200px;
object-fit: cover;
object-position: top left;
}Trong ví dụ này, hình ảnh sẽ lấp đầy khung và hiển thị góc trên bên trái, giúp bạn có thêm tùy chỉnh linh hoạt khi hình ảnh bị cắt.
5. Kết luận
object-fit là một công cụ mạnh mẽ giúp bạn tùy chỉnh hình ảnh và video cho phù hợp với khung chứa mà vẫn giữ nguyên tỷ lệ gốc hoặc tạo hiệu ứng lấp đầy đẹp mắt. Bằng cách sử dụng object-fit kết hợp với object-position, bạn có thể tạo ra nhiều kiểu hiển thị hình ảnh khác nhau, mang lại sự nhất quán và thẩm mỹ cho giao diện. Để tìm hiểu thêm về các kỹ thuật CSS cho hình ảnh, hãy xem thêm các bài học trên "codetuthub.com" như CSS Background Images, CSS Image Filters, và CSS Flexbox.








