@danyfir

Как сделать перекрашивание меню в зависимости от слайдера сзади?

Всем привет! Появилась такая проблема:
Есть сайт, header полностью прозрачный (с черными цветом текста), сзади слайдер (master slider) автоматически листает фон.
Если на слайдере темная картинка, соответственно, header перестает быть видимым (цвет текста совпадает с фоном слайдера).

Скажите, можно ли сделать так, чтобы при появлении определенных слайдов, текст окрашивался в белый?
P.S.: как только слайд появляется на экране, ему присваивается класс ms-sl-selected. Сами слайды постоянно подгружены и меняются с помощью обычно смены позиции (top:*****px;)
Пробовал делать так:
if ( $("#1slide").hasClass("ms-sl-selected") ) //я присвоил темному слайду id "1slide" и тут пытаюсь поймать когда к нему придет класс "ms-sl-selected". 
{
 $("#menu-aside-menu").removeClass(); //удалить из id менюшки все классы 
 $("#menu-aside-menu").addClass('BeliyText'); //и вставить класс 'BeliyText' в котором уже заданы стили белого текста
}


Что делаю не так? И вообще, так будет работать динамически? Помогите решить проблему, пожалуйста
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
slider.api.addEventListener(MSSliderEvent.CHANGE_START, function(){
    // срабатывает в начале смены слайда
    // здесь нужно определять темный или не очень
    // и менять класс
});
docs.averta.net/display/MSJQ/Slider+API

Функцию по вычислению яркости можно взять здесь https://stackoverflow.com/questions/13762864/image...

Считать яркость лучше один раз, перед первым показом слайда, затем запомнить яркость каждого слайда.
Ответ написан
Комментировать
JustSneaker
@JustSneaker
Front-end разработчик
Берёте индекс активного слайда (0, 1, 2, 3) из массива таковых, затем ставите конструкцию switch(можно много if, но это будет выглядеть не эстетично), и, согласно тому, какой слайд активен, меняете цвет текста. Естественно, это всё нужно положить в setTimeot, время в котором выставляете аналогичное интервалу смены слайдов.

ЗЫ: Если не поняли, могу накидать код.

UPD (Накидал код):
var element = document.querySelector('.element'); // Элемент, для которого и будем менять цвет в соответствии с активным слайдом (таких элементов может быть неограниченное количество)

setTimeout(function() {
	var slide = document.querySelector('.slide.active'); // Поиск активного слайда по классу .active

	if (slide.classList.contains('black')) {
		element.classList.remove('black'); // Удаляем класс чёрного цвета для элемента
		element.classList.add('white'); // Добавляем класс белого цвета для элемента
	} else {
			element.classList.remove('white');
			element.classList.add('black');
		}
}, 1000); // Вместо "1000" нужно указать интервал смены слайдов

Оказывается, массив и конструкция switch здесь совсем не нужны.
Ответ написан
Ваш ответ на вопрос

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

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