- Перед извлечением ширины / высоты убедитесь, что изображение полностью загружено
- Не удаляйте атрибуты ширины / высоты перед вычислением
Предполагая, что вы хотите уместитьизображение внутри содержащего элемента (в данном случае window
), вот несколько простых расчетов, которые могут оказаться полезными.Концепция довольно проста, основанная на содержании мер и мер изображения, вычислить соотношение.Затем умножьте его на исходные меры:
$(".fittedImg").load(function(){
var imgWidth = this.width,
imgHeight = this.height,
winWidth = $(window).height(),
winHeight = $(window).width(),
ratio = Math.min(winWidth/imgWidth, winHeight/imgHeight);
// if you don’t want it to upscale, use Math.min or Math.max on the ratio
$(this).stop(true, false).animate({
height: imgHeight*ratio,
width: imgWidth*ratio
});
});
Обратите внимание, что некоторые расширения, такие как AdBlock, могут испортить извлеченную ширину / высоту из изображения.Вы можете утешить и набирать текст imgWidth
/ imgHeight
только для того, чтобы убедиться, что он доступен.
Также обратите внимание, что есть вероятность того, что ваше изображение уже загружено при добавлении этого события, в зависимости от того, как выразместите свой кодВ этом случае вам следует проверить свойство complete
элемента IMG:
$('fittedImg').each(function() {
$(this).load(function() {
// the calculations goes here
});
if (this.complete) { // check if image is already loaded
$(this).trigger('load');
}
});