Мне нужно было сделать это недавно. Я хотел сделать пиктограмму-ссылку на график NOAA. Поскольку их график может измениться в любое время, я хотел, чтобы мой эскиз менялся вместе с ним. Но есть проблема с их графиком: он имеет огромную белую рамку вверху, поэтому, если вы просто масштабируете его, чтобы сделать миниатюру, вы получите лишние пробелы в документе.
Вот как я это решил:
http://sealevel.info/example_css_scale_and_crop.html
Сначала я должен был сделать небольшую арифметику. Исходное изображение из NOAA имеет размер 960 × 720 пикселей, но верхние семьдесят пикселей представляют собой лишнюю белую рамочную область. Мне нужно было миниатюру 348 × 172, без дополнительной границы в верхней части. Это означает, что желаемая часть исходного изображения имеет высоту 720 - 70 = 650 пикселей. Мне нужно было уменьшить его до 172 пикселей, то есть 172/650 = 26,5%. Это означает, что 26,5% из 70 = 19 строк пикселей необходимо удалить с верхней части масштабированного изображения.
Итак ...
Установите высоту = 172 + 19 = 191 пиксель:
высота = 191
Установите нижнее поле на -19 пикселей (укорочение изображения до 172 пикселей в высоту):
краю дна: -19px
Установите верхнюю позицию на -19 пикселей (смещение изображения вверх, чтобы верхние 19 рядов пикселей переполнялись и скрывались вместо нижних):
верх: -19px
Полученный HTML-код выглядит следующим образом:
<a href="…" style="display:inline-block;overflow:hidden">
<img width=348 height=191 alt=""
style="border:0;position:relative;margin-bottom:-19px;top:-19px"
src="…"></a>
Как видите, я выбрал стиль содержащего тега , но вместо этого вы можете использовать стиль .
Один из артефактов этого подхода заключается в том, что если вы покажете границы, верхняя граница будет отсутствовать. Так как я в любом случае использую border = 0, для меня это не было проблемой.