object-fit: cover
sẽ làm chính xác những gì bạn cần.
Nhưng nó có thể không hoạt động trên IE / Edge. Thực hiện theo như hình dưới đây để sửa nó chỉ bằng CSS để hoạt động trên tất cả các trình duyệt .
Cách tiếp cận tôi thực hiện là định vị hình ảnh bên trong thùng chứa một cách tuyệt đối và sau đó đặt nó ngay tại trung tâm bằng cách sử dụng kết hợp:
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Khi nó ở giữa, tôi đưa ra hình ảnh,
// For vertical blocks (i.e., where height is greater than width)
height: 100%;
width: auto;
// For Horizontal blocks (i.e., where width is greater than height)
height: auto;
width: 100%;
Điều này làm cho hình ảnh có được hiệu ứng của Object-fit: cover.
Dưới đây là một minh chứng về logic trên.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Logic này hoạt động trong tất cả các trình duyệt.
Ảnh gốc
Cắt theo chiều dọc
Cắt ngang