изменение размера фонового изображения всей страницы - поддержание пропорций - PullRequest
4 голосов
/ 28 июля 2011

Мне нужно простое решение jquery для добавления фонового изображения на мою страницу, полностью заполняя его, но сохраняя соотношение сторон и вертикальное и горизонтальное центрированное положение.

здесь есть несколько плагинов, но я не делаюхочу использовать любой плагин.

заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 28 июля 2011

Этот код будет делать то, что вы хотите ..

$(function(){

    var stretcher = $('#background-container > img'),
        element = stretcher[0],
        currentSize = { width: 0, height: 0 },
        $document = $(document);

    $(window).resize(function () {
        var w = $document.width();
        var h = $document.height();

        if (currentSize.width != w || currentSize.height != h) {
            stretcher.width(w).height('auto');
            if (h > element.height) {
                stretcher.width('auto').height(h);
            }
            currentSize.width = w;
            currentSize.height = element.width;
        }
    })

    $(window).load(function () {
        $(this).trigger('resize');
    });

});

Установите HTML вот так

<div id="page">
    Your page contents here..
</div>
<div id="background-container">
      <img src="path/to/image" />
</div>

и ваш CSS как

#background-container{
    position:absolute;
    z-index:1;
    top:0;
    left:0;
    width:100%;
    height:100%;
    overflow:hidden;
}

#page{
    position:relative;
    z-index:5;
}

Демонстрация на http://jsfiddle.net/gaby/3YLQf/

4 голосов
/ 21 октября 2012

Или вы можете использовать свойство CSS:

background-size: cover

Это позволит масштабировать изображение, сохраняя его внутреннее соотношение сторон (если оно есть), до наименьшего размера, чтобы его ширина и высотаполностью покрыть область позиционирования фона.

Вы можете управлять выравниванием изображения в окне просмотра, используя свойство background-position

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...