Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2014, 11:15
Аватар для Bravo
Интересующийся
Отправить личное сообщение для Bravo Посмотреть профиль Найти все сообщения от Bravo
 
Регистрация: 26.03.2014
Сообщений: 19

Работа с css классом элемента при scroll
Приветствую всех вновь

Стоит задача такого характера, хочу реализовать установку css класса для body при возникновении события scroll для всего окна, но после окончания события класс должен удаляться.

Прокручиваешь страницу в браузере, класс добавился, перестал крутить, класс удалился.

С установкой класса проблем нет, но вот с удалением я завис. Не могу понять, как написать проверку? Как получить информацию о том, что scroll не выполняется?

Не покидает ощущение, что это всё делается как-то просто и я не правильно мыслю
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2014, 11:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Bravo,
при установке класса обнулять таймер на удаление класса - затем устанавливать таймер на удаление класса
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2014, 11:56
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Со стопроцентной точностью - никак.(ибо ты не оракул чтоб предсказать - закончил ли юзер крутить окончательно или прервался на момент)
Остаётся лишь ставить задержку выбранную условно:
<div style="height:2500px"></div>
<script>
function setBg(color){
    document.body.style.backgroundColor = color || '';
}
function scroll(){
    if(scroll.scrolling){
        clearTimeout(scroll.timer);
    } else {
        setBg('red');
        scroll.scrolling = true;
    }
    scroll.timer = setTimeout(scrollStop, 200);
}
function scrollStop(){
    setBg();
    scroll.scrolling = false;
}
document.body.onscroll = scroll;
</script>


Можно усложнить привязываясь к mouseup/down итд.
__________________
29375, 35
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2014, 13:58
Аватар для Bravo
Интересующийся
Отправить личное сообщение для Bravo Посмотреть профиль Найти все сообщения от Bravo
 
Регистрация: 26.03.2014
Сообщений: 19

Aetae, заменил .style на .className. Работает отлично спасибо вам, но я конечно заранее не подумал о проблемах с анимацией CSS3.

Получается, что время задержки не совпадает со временем анимации. По этой причине анимация резко прерывается и это заметно.

Я это все делаю, чтобы добавиться эффекта падения у элемента (это граф. персонаж). Когда происходит scroll, возникает ощущение, что персонаж сбоку страницы начинает падение, а анимация маятника добавляет ощущение воздушности.

Сижу думаю дальше
Ответить с цитированием
  #5 (permalink)  
Старый 19.05.2014, 11:30
Аватар для Bravo
Интересующийся
Отправить личное сообщение для Bravo Посмотреть профиль Найти все сообщения от Bravo
 
Регистрация: 26.03.2014
Сообщений: 19

Aetae, интересная проблема, код не срабатывает в Safari с чем это может быть связано?
Ответить с цитированием
  #6 (permalink)  
Старый 19.05.2014, 12:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Bravo
код не срабатывает в Safari
Сообщение от Aetae
document.body.onscroll = scroll;
window.onscroll = scroll
Ответить с цитированием
  #7 (permalink)  
Старый 19.05.2014, 13:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Пример: смотреть в ff/chrome
<body><script>
window.onscroll = function(){/* внезапно */};
alert(document.body.onscroll);
</script></body>

Такие дела.=\
__________________
29375, 35

Последний раз редактировалось Aetae, 19.05.2014 в 13:07.
Ответить с цитированием
  #8 (permalink)  
Старый 19.05.2014, 13:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Aetae
Пример: смотреть в ff
а что нужно увидеть?
Ответить с цитированием
  #9 (permalink)  
Старый 19.05.2014, 13:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

window.onscroll автоматом ставится и на document.body.onscroll . Просто забавный факт магии.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 19.05.2014, 14:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Aetae
window.onscroll автоматом ставится и на document.body.onscroll
ок спасибо за пояснение -- странные дела у меня с алертом иногда пропадает )))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Появление/исчезновение элемента при прокрутке страницы JQuery 0leg9 Общие вопросы Javascript 37 21.09.2017 07:41
Скрипт при нахождение элемента добавляется класс, анимация Wahlberg Angular.js 0 02.02.2014 02:44
При клике менять стайл элемента до другого клика jei Общие вопросы Javascript 5 02.05.2013 17:34
Выбрать дочерние элементы элемента с конкретным CSS adelante jQuery 1 15.07.2012 18:04
Узнать CSS правило для элемента vinet Events/DOM/Window 4 10.12.2010 08:12