Изменение образа каждые 30 секунд - цикл

Я хотел бы сделать изменение образа после 30 секунд...

Код, который я использую, похож на это:

Сценарий:

var images = new Array()
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
setTimeout("changeImage()", 30000);
var x=0;

function changeImage()
{
document.getElementById("img").src=images[x]
x++;
}

И тело:

<img id="img" src="startpicture.jpg">

Теперь я еще не протестировал этого, но если мои вычисления будут корректны, то это будет работать :)

Теперь то, что я также хочу, должно сделать "исчезающий переход", и я хотел бы, чтобы изменение изображений циклично выполнилось (оно перезапускает после того, как все изображения показали). Какой-либо из Вас парни знают, как сделать это? Я не делаю :)

6
задан Peter Boughton 18 July 2010 в 22:59
поделиться

4 ответа

Я согласен с использованием фреймворков для подобных вещей просто потому, что это проще. Я очень быстро взломал это, просто затухает изображение, а затем переключается, также не будет работать в более старых версиях IE. Но, как вы можете видеть, код фактического затухания намного длиннее, чем реализация JQuery, опубликованная KARASZI István.

function changeImage()
{
    var img = document.getElementById("img");
    img.src = images[x];
    x++;

    if(x >= images.length){
        x = 0;
    } 

    fadeImg(img, 100, true);
    setTimeout("changeImage()", 30000);
}

function fadeImg(el, val, fade){
    if(fade === true){
        val--;
    }else{
        val ++;
    }

    if(val > 0 && val < 100){
        el.style.opacity = val / 100;
        setTimeout(function(){fadeImg(el, val, fade);}, 10);
    }
}

var images = [],
x = 0;

images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
setTimeout("changeImage()", 30000);
13
ответ дан 8 December 2019 в 03:51
поделиться

Вы должны взглянуть на различные библиотеки javascript, они могут вам помочь:

У всех из них есть учебные пособия, и постепенное нарастание / затухание - это базовое использование.

Например, в jQuery:

var $img = $("img"), i = 0, speed = 200;
window.setInterval(function() {
  $img.fadeOut(speed, function() {
    $img.attr("src", images[(++i % images.length)]);
    $img.fadeIn(speed);
  });
}, 30000);
7
ответ дан 8 December 2019 в 03:51
поделиться

Я использовал этот плагин jQuery в прошлом:

CrossSlide

Он отлично работал и делает именно то, что вы хотите.

5
ответ дан 8 December 2019 в 03:51
поделиться

Посмотрите на innerfade. Вот пример, где я использовал его, чтобы сделать именно то, что вам нужно, я думаю.

1
ответ дан 8 December 2019 в 03:51
поделиться
Другие вопросы по тегам:

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