Интересный вызов.
Ниже приведен метод, который имеет вид обрезки каждого изображения только до его верхней высоты, но требует, чтобы рамки, содержащие каждое изображение, все еще имели полную высоту.
Обратите внимание, что для ясности я переименовал то, что вы называли div.img
s, в div.frame
s.
Он работает путем размещения полноразмерного невидимого изображения внутри каждого div.frame
. Это «расширяет» каждый div.frame
изнутри, чтобы соответствовать полной высоте изображения. Каждый div.frame
, а затем также содержит абсолютную позицию div.cropper
, установленную на 50% от высоты родительского контейнера. Поскольку наше невидимое изображение устанавливает для div.frame
высоту изображения, это составляет 50% от высоты изображения, даже если оно масштабируется. Наконец, это .cropper
снова содержит наше изображение. Поскольку .cropper
имеет значение overflow: hidden
, отображаются только верхние 50% изображения.
Я покрасил .frames
в серый цвет, чтобы проиллюстрировать, что происходит. Если вы не хотите, чтобы .frame
были видны, вы можете просто установить их background-color: transparent
(или не указывать background-color
- transparent
по умолчанию).
Возможно, вам удастся сократить элементы <img>
и добиться того же эффекта, используя background-image
, но я пока еще не исказил этот метод, чтобы найти способ, который не не требует .frame
s, чтобы оставаться на полную высоту, пока их содержимое «нарезано».