2014-01-14 4 views
1

Я создал сайт с меняющимися фоновыми изображениями.
HTML:Загрузите сразу меняющиеся фоновые изображения

<div id="templatemo_header"> 
</div> 

CSS:

#templatemo_header { 
    background: url(images/templatemo_header.jpg) no-repeat; 
} 

И JS код, который изменяет БГ изображение каждые 3 секунды

function displayImage(image) { 
    document.getElementById("templatemo_header").style.backgroundImage = image; 
} 

function displayNextImage() { 
    x = (x == images.length - 1) ? 0 : x + 1; 
    displayImage(images[x]);   
} 

function displayPreviousImage() { 
    x = (x <= 0) ? images.length - 1 : x - 1; 
    displayImage(images[x]);   
} 

function startTimer() { 
    setInterval(displayNextImage, 3000); 
} 

var images = [], x = -1; 
images[0] = 'url("images/templatemo_header1.jpg")'; 
images[1] = 'url("images/templatemo_header2.jpg")'; 
images[2] = 'url("images/templatemo_header3.jpg")'; 
images[3] = 'url("images/templatemo_header.jpg")'; 

Проблема заключается в том, когда каждый из BG изображений изменены только в первый раз , изображение исчезает, и через некоторое время появляется новое изображение.
Я думаю, это потому, что загружается новое изображение BG.
Как можно принудительно загрузить изображения сразу, скажем в функции startTimer?
Спасибо заранее.

+0

Возможно, эта связь может помочь вам http://stackoverflow.com/questions/476679/preloading-images-with-jquery –

+3

Дон» t положить теги в заголовок вопроса. Я исправил это для вас, но поскольку это ваш ** 33-й вопрос, вы должны привыкнуть к тому, как все работает сейчас. –

ответ

2

Существует несколько способов предварительной загрузки изображений с использованием javascript here. Предварительно загружая изображения, вам может быть повезло, когда вы их показываете. В вашем случае я бы использовал метод 3, если это возможно, если не метод 2. Как описано в статье, вы должны использовать событие window.onload, чтобы начать загрузку изображений после загрузки страницы.

Я бы просто настроить ваш массив изображения следующим образом:

window.onload = preLoadImages(); 

function preLoadImages(){ 
    preLoadImage = new Image(); 

    images[0] = "images/templatemo_header1.jpg"; 
    images[1] = "images/templatemo_header2.jpg"; 
    images[2] = "images/templatemo_header3.jpg"; 
    images[3] = "images/templatemo_header.jpg"; 

    for(i=0, i<=images.length, i++){ 
     preLoadImage.src=images[i]; 
    } 
} 
+1

Ответы должны содержать хотя бы краткое изложение того, что находится по ссылке. Ссылка только на ответы не одобряется здесь: http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers –

+0

Более подробная информация была добавлена. – puddinman13

+0

+1 для значительно улучшенного ответа. –

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