Альтернативой может быть использование CSS-свойства top
негативным образом на относительном изображении, как показано ниже.Это работает для изображения произвольной ширины и высоты.Просто настройте значение top
соответственно.
html,body{ height:100%; margin:0; padding:0; }
.container {
overflow: hidden;
position: relative;
height: 100%;
width: 100%;
display:flex;
margin-bottom: -10%;
align-items:center;
justify-content:center;
}
.container img {
position: relative;
bottom: 0;
left: 0;
height: 100%;
top: -10%;
right: 0;
}
<div class="container">
<img class="img" src="http://placekitten.com/400/500" />
</div>
Чтобы удалить дополнительное нижнее поле, просто вычтите margin-bottom
, равное сумме, которую вы вычли из верхней части.Вот оно margin-bottom: -10%;
Настройте верхнее значение в соответствии с вашими динамическими изображениями.Также обратите внимание, я добавил height:100%
в ваш контейнер, чтобы вы могли видеть полное изображение, но верхняя часть обрезана.Я использовал flex для центрирования.
Проверить другое изображение, но на этот раз оно обрезается 50%
сверху
html,body{ height:100%; margin:0; padding:0; }
.container {
overflow: hidden;
position: relative;
height: 100%;
width: 100%;
margin-bottom: -50%;
display:flex;
align-items:center;
justify-content:center;
}
.container img {
position: relative;
bottom: 0;
left: 0;
height: 100%;
top: -50%;
right: 0;
}
<div class="container">
<img class="img" src="https://www.fujifilm.com/products/digital_cameras/x/fujifilm_x_t3/sample_images/img/index/ff_x_t3_002.JPG" />
</div>