object-fit: cover
будет делать именно то, что вам нужно.
Но это может не работать на IE / Edge. Выполните действия, показанные ниже, чтобы исправить это с помощью всего лишь CSS для работы во всех браузерах .
Подход, который я выбрал, состоял в том, чтобы расположить изображение внутри контейнера с абсолютным, а затем поместить его прямо в центр, используя комбинацию:
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Как только он в центре, я даю изображение,
// 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%;
Это заставляет изображение получить эффект Object-fit: cover.
Вот демонстрация вышеуказанной логики.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Эта логика работает во всех браузерах.
Исходное изображение

Вертикально обрезанный

Горизонтально подрезанный
