Полноэкранное изображение с jquery при изменении размера окна?

Я пытаюсь сделать полноэкранные изображения с помощью jquery, когда срабатывает функция изменения размера окна. Но я получаю такой результат - вы видите пробел внизу изображения, который я не знаю, как его исправить.

введите здесь описание изображения

базовый html,

<!-- container -->
    <div id="container" class="container">

        <div class="holder-supersize" id="supersize">

            <ul class="background-supersize">
                <li><a href="#"><img src="styles/images/IMG_0250.jpg" alt="" width="1000" height="667" /></a></li>
                <li><a href="#"><img src="styles/images/IMG_0255.jpg" alt="" width="667" height="1000" /></a></li>
                <li class="active"><a href="#"><img src="styles/images/IMG_0323.jpg" alt="" width="1158" height="772" /></a></li>
            </ul>

        </div>

    </div>
    <!-- container -->

jquery для обновления размера изображения при изменении размера окна,

$(document).ready(function(){

    $(window).resize(function(){

        $(".holder-supersize").each(function() {

            //Define image ratio & minimum dimensions
            var minwidth = .5*(640);
            var minheight = .5*(480);
            var ratio = 480/640;

            //Gather browser and current image size
            var imagewidth = $(this).width();
            var imageheight = $(this).height();
            var browserwidth = $(window).width();
            var browserheight = $(window).height();

            //Check for minimum dimensions
            if ((browserheight < minheight) && (browserwidth < minwidth)){
                $(this).height(minheight);
                $(this).width(minwidth);
            }
            else
            {   
                //When browser is taller    
                if (browserheight > browserwidth){
                    imageheight = browserheight;
                    $(this).height(browserheight);
                    imagewidth = browserheight/ratio;
                    $(this).width(imagewidth);

                    if (browserwidth > imagewidth){
                        imagewidth = browserwidth;
                        $(this).width(browserwidth);
                        imageheight = browserwidth * ratio;
                        $(this).height(imageheight);
                    }

                }

                //When browser is wider
                if (browserwidth >= browserheight){
                    imagewidth = browserwidth;
                    $(this).width(browserwidth);
                    imageheight = browserwidth * ratio;
                    $(this).height(imageheight);

                    if (browserheight > imageheight){
                        imageheight = browserheight;
                        $(this).height(browserheight);
                        imagewidth = browserheight/ratio;
                        $(this).width(imagewidth);
                    }
                }
            }
            return false;
        });

    });

});

CSS для изображения большого размера

/* Supersize -------------------------------------------*/

.holder-supersize {
    width:100%;
    height:100%;
    position:absolute;
    left:0;
    top:0;
    z-index:0;
}

.background-supersize {
    width:100%;
    height:100%;
    overflow:hidden;
    position:relative;
}

.background-supersize li {
    width:100%;
    height:100%;
    overflow:hidden;
    position:absolute;
    left:0;
    top:0;
    text-align:center;
}

.background-supersize li img {
    /* for image with height < width */
    /**/
    width:100%;
    height:auto;


    /* for image with height > width */
    /*
    width:auto;
    height:100%;
    */
}

.background-supersize li ,
.background-supersize a,    
.background-supersize img{
    display:none;
    }

.background-supersize .active, 
.background-supersize .active a,
.background-supersize .active img{
    display:inline;
}

Это ссылка на jsfiddle, и это ссылка для просмотра фактический продукт.

Любые идеи, что я сделал неправильно и как я могу это исправить?


person laukok    schedule 20.09.2012    source источник


Ответы (1)


Похоже, ваш код предотвращает перекос изображения, блокируя соотношение высоты и ширины. Таким образом, если окно не имеет одинакового соотношения, у вас будет место либо внизу (для высокого/узкого окна), либо справа (для короткого/широкого окна).

Если вы хотите, чтобы изображение было перекошено, вы можете значительно упростить код, просто сделав высоту равной высоте окна, а ширину — ширине окна.

person KRyan    schedule 20.09.2012
comment
@lauthiamkok: тогда вам придется жить с пространством, другого пути нет... ну, разве вы не предпочтете обрезать изображение? Поэтому, если он высокий/узкий, нижняя часть будет нижней частью изображения, но правая часть изображения будет обрезана. - person KRyan; 21.09.2012