2012-05-20 2 views
1

Для веб-сайта, над которым я работаю, мне пришлось использовать плагин для слайд-шоу nivoslider. Проблема в том, что у нас более десяти изображений с более высоким разрешением. Поэтому для загрузки страницы требуется слишком много времени. Есть ли какой-либо вариант, чтобы мы могли загрузить эти изображения после полной рендеринга страницы? Или загружать изображения один за другим, а не загружать все изображения в начале?Как сделать изображения в nivoslider загруженными асинхронно?

ответ

1

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

Для этого необходимо: 1. Создать DIV для слайдера изображений только с первым изображением 2. Созданием яваскрипта массива с URL для остальных изображений 3. Run Js функции, которая будет создавать код для отдыха изображений, как только страница загружается только с первого изображения. 4. Когда остальная часть изображения готова, запустите ползунок nivo.

Это может выглядеть так:

HTML код

<div id="sliderWrapper"> 
    <img src="/myfirstsliderimage.jpg" /> 
</div> 

Javascript код (при условии использования JQuery)

var sliderImages = ['/path/to/secondimage.jpg', '/path/to/thirdimage.jpg', 
        '/path/to/forthimage.jpg']; 
var imagesLoaded = 1; //set to one as the first image is loaded with the page 

$(document).ready(function(){ 
    for(i in sliderImages) { 
    //create new img element 
    var img = $('<img></img>').attr('src', sliderImages[i]).attr('id','sliderImg_'+i); 

    //append to slider wrapper 
    $('#sliderWrapper').append(img); 

    //after image is loaded increase the counter, 
    //it will tell us when to start slider 
    $('#sliderImg_'+i).load(function(){imagesLoaded += 1;}); 
    } 

    //after inserting images run nivo slider 
    runNivoSlider(); 
}); 

function runNivoSlider() { 
    if (imagesLoaded == $('#sliderWrapper img').length) { 
    //all images are loaded, we can run nivo slider 
    $('#sliderWrapper').nivoSlider(); 
    } 
    else { 
    //something is still missing try in 300 ms 
    setTimeout(function(){runNivoSlider();}, 300); 
    } 
} 
0

Другой обходной путь решения будет отображать изображение самого первого слайдера вместо загрузки gif (фон).

Смежные вопросы