baskerville42
@baskerville42
Учусь работать (Junior)

Как менять картинки через разные промежутки времени?

Есть набор картинок (установлены как фоновое изображение).
Надо менять каждую картинку через разные промежутки времени.
К примеру: между первой и второй картинкой промежуток времени 2 секунды, а между второй и третьей 4 секунды, но при этом между третьей и четвертой 1.5 секунды.

Решение:
Пример с заменой классов jsfiddle.net/aMuCX
Пример с заменой изображения jsfiddle.net/ShQ2H/1
Первый вариант самый лучший в плане работы. Во втором варианте на некоторых ПК при замене фонового изображения были видны "пробелы". То есть фон не сразу менялся, а видно было как он пропадает и потом появляется.

Решение2:
jsfiddle.net/iiil/4hgb3/11/
  • Вопрос задан
  • 8506 просмотров
Решения вопроса 2
$(function() {
    var images = [{
            class: "first-img", // Класс
            timeout: 2000 // Задержка для класса
        }, {
            class: "second-img",
            timeout: 5000
        }, {
            class: "third-img",
            timeout: 3000
        }],
        i = 0,
        timeout;

    
    function changeBackground() {
        clearTimeout(timeout);

        $('body').removeClass().addClass(function() {
            if (i >= images.length)
                i = 0;
            
            timeout = setTimeout(changeBackground, images[i].timeout);
     
            return images[i++].class;
        });
              
    }

    changeBackground();        
});
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
jsfiddle.net/iiil/4hgb3/11
Вот пример, простой, работает (можно проверить через инспектор кода).
Все, что нужно сделать - закинуть картинки в папку img и назвать их image1, image2. image3. И прописать для каждой через запятую шаг.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
ixon
@ixon

Допустим у вас есть 10 классов с фоновыми картинками с именем new1, new2, new3 и тд. Примерно так:
var i =1;
function slide(){
if(i>10){// 10 число картинок всего
i=1;
}
document.getElementById('tek').class='new'+i;// newN - ваш класс, где N - номер класса
setTimeout(1000,function(){slide();})
}

Но мой вам совет, если хотите сделать слайдшоу, то лучше используйте готовые Jquery библиотеки.
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
jsfiddle.net/iiil/4hgb3/6

Можно обойтись без классов. Смотрите мой пример, надо будет всего-лишь создать массив по моему варианту, только пути к картинкам будут короче. Можно вообще использовать обычный массив, если картинки будут в одной папке и будут называться как-нибудь типа image1, image2, image3
Ответ написан
@k0st1_k
Подскажите как сделать замену плавно, чтобы одна затухала (постепенно становилась прозрачной черзе 2 секунды) и появлялась другая (на этом же фоне) - т.е. чтобы был плавный переход одной в другую и так по кругу 3-4 картинки?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы