У меня есть сайт, на котором требуется фоновое изображение на главной странице.
Следующий код отлично работает на сайте, но я не могу понять, как сохранить пропорции изображений.
function resize(itemToResize){
var newHeight = $(document).height() -120,
newWidth = $(window).width();
$(itemToResize).css({
"width" : newWidth,
"height" : newHeight
});
};
Я думаю, мне нужно что-то вроде оператора if, например, если ширина совпадает с шириной окна, а высота слишком мала, совпадает с высотой и корректирует ширину ... Я просто не могу определить правильный синтаксис !
Обновление: используя метод, описанный здесь Какой алгоритм для вычисления соотношения сторон? Мне нужен вывод как: 4: 3, 16: 9 Я могу получить доступ к соотношению сторон изображения. Однако теперь у меня есть соотношение, и я не знаю, что с ним делать!
Обновленный код: -
function gcd (a, b) {
return (b == 0) ? a : gcd (b, a%b);
}
function resize(itemToResize){
var newHeight = $(document).height() -120,
newWidth = $(window).width();
var w = $(itemToResize).width(),
h = $(itemToResize).height(),
r = gcd (w, h);
$(itemToResize).css({
"width" : newWidth,
"height" : newHeight
});
};
ОБНОВЛЕНИЕ 2:
После того, как я немного подождал, у меня есть этот код:
function resize(itemToResize){
var AspectRatio = $(itemToResize).width()/$(itemToResize).height();
var WindowHeight = $(document).height() -205;
var WindowWidth = $(window).width();
var AspectRatio = WindowWidth/WindowHeight;
if (AspectRatio >= AspectRatio) {
$(itemToResize).css({
"width" : WindowWidth,
"height" : WindowWidth/AspectRatio
});
$('body').css({
"height" : WindowWidth/AspectRatio
});
} else {
$(itemToResize).css({
"width" : WindowHeight*AspectRatio,
"height" : WindowHeight
});
$('body').css({
"height" : WindowHeight
});
};
};
Который поддерживает соотношение сторон, но не совсем правильно растягивается. Так что исправить, но только частично.