Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Мигают все слайдеры при смены блока (https://javascript.ru/forum/misc/60477-migayut-vse-slajjdery-pri-smeny-bloka.html)

DemiuS 02.01.2016 19:44

Мигают все слайдеры при смены блока
 
Здравствуйте, есть сайт - Не реклама http://demo.titylstroy.by, он мой, вот на главной сразу виден слайдер, при смене блоков, он мигает, либо же тупит и картинки подвисают, почему так и как это можно исправить?
Там в коде 2 варианта мною сделанных.

рони 02.01.2016 20:43

DemiuS,
в нормальном случае используется одна!!! jquery

DemiuS 02.01.2016 22:10

Убрал 1 jQuery, результат виден на сайте, не сильно поменялось.

рони 02.01.2016 22:15

Цитата:

Сообщение от рони
Убрал 1 jQuery

маловато

DemiuS 02.01.2016 22:17

Там еще jQuery есть? O_O
Я не нашел.

рони 02.01.2016 22:27

DemiuS,
сейчас ок по количеству

DemiuS 02.01.2016 22:29

Но вот лаги со слайдером все ровно есть.

рони 02.01.2016 22:29

DemiuS,
теги бы ещё поправить строки 217 и 218 например

DemiuS 02.01.2016 22:32

Это из формы которые?

рони 02.01.2016 22:33

DemiuS,
их надо поменять местами

рони 02.01.2016 22:44

DemiuS,
маленький совет, если вы видите в скрипте setInterval знайте этот скрипт нельзя использовать!!!

DemiuS 02.01.2016 22:52

Так щас поправлю, а по слайдеру что сказать можете?

DemiuS 02.01.2016 22:54

Цитата:

Сообщение от рони (Сообщение 402329)
DemiuS,
маленький совет, если вы видите в скрипте setInterval знайте этот скрипт нельзя использовать!!!

А чем тогда заменить цикличность?

рони 02.01.2016 23:03

Цитата:

Сообщение от DemiuS
А чем тогда заменить цикличность?

setTimeout

рони 02.01.2016 23:04

DemiuS,
замените ваш код на этот
window.addEventListener('DOMContentLoaded', function() {
 var image_count = 2;
 var interval = 5000; //пауза
var time_out = 30; //скорость смены картинки
var i = 2;
 var timeout;
 var opacity = 100;
 function change_image() {
 opacity--;
 var j = i + 1;
 var current_image = 'image_' + i;
 if (i == image_count) j = 1;
 var next_image = 'image_' + j;
 document.getElementById(current_image).style.opacity=opacity/100;
 document.getElementById(current_image).style.filter='alpha(opacity='+opacity+')';
 document.getElementById(next_image).style.opacity= (100-opacity)/100;
 document.getElementById(next_image).style.filter=' alpha(opacity='+(100-opacity)+')';
 timeout = setTimeout(change_image, time_out);
 if (opacity < 1) {
 opacity = 100;
 clearTimeout(timeout);

 i++;
 if (i>image_count) i=1;
 timeout = setTimeout(change_image, interval);
 }
 }
 change_image()
    });

DemiuS 02.01.2016 23:14

Ух ты, я и забыл про инкремент )) Спасибо Большое, помогли)

рони 02.01.2016 23:17

DemiuS,
код не самый лучший, на jquery это гораздо проще и надёжнее.

DemiuS 02.01.2016 23:20

Понял, продолжу изучать JS)
Вам поставил отзыв.


Часовой пояс GMT +3, время: 18:07.