darkleviathan
@darkleviathan

Как сделать плавный переход в js?

Есть картинка на фоне , которая меняется при помощи скрипта.
Не могу разобраться как написать плавную смену картинок чтоб работало и в firefox и в chrome.
И необходимо чтоб стартовало с первой картинки, которая прописана в скрипте. Сейчас сначала пустой фон, а потом уже появляются картинки по очереди.

Вот сам код:

(function() {
    var i = 0;
    var src = [
        '$picture2',
        '$picture3',
        '$picture4',
        '$picture1'
    ];
    var l = src.length;
    var t;
    
    for(i = 0; i < l; i++) {
        var img = new Image();
        img.src = src[i];
        img.onload = function() {
            delete this;            
        }
    }
    
    i = 0;
    t = setInterval(function() {
        if(i === l){
            i = 0;
        }
        document.body.style.background = 'url(' + src[i] + ') ';
        //document.body.style.transition = '3s';
        //document.body.style.mozTransition = '3s';
        document.body.style.backgroundSize = 'cover';
        
        
        i++;
    }, 6000);
})();


пробовал плавные переходы через transition, на chrome все работает а на firefox не хочет.
Знаю что можно как-то при помощи fadeOut\fadeIn
  • Вопрос задан
  • 2290 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Действительно какая-то магия и в хроме транзишном работает. Но поведение файерфокса верно в данном случае. background-image - не анимируемое свойство.

Что вы пытаетесь удалить на онлоад? Оператор delete удаляет пропертиз у объектов.

setInterval - плохой таймер, но для начального прототипа сойдёт. В идеале нужно использовать requestAnimationFrame.

Вы должны понимать основную концепцию: для плавной смены картинок нужно, чтобы две картинки в момент перехода были видимыми. То есть нельзя просто вот так в одном элементе их перетосовывать. Нужно как минимум два элемента и смена opacity.
Ответ написан
RomanDillerNsk
@RomanDillerNsk
JavaScript
requestAnimationFrame вам в помощь.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
19 апр. 2024, в 20:43
20000 руб./за проект
19 апр. 2024, в 20:11
500 руб./за проект