Всем привет. Помогите разобраться. Вешаю модификатор на блок при скролле следующим способом:
modules.define('counter', ['i-bem__dom', 'jquery'], function (provide, BEMDOM, $) {
provide(BEMDOM.decl(this.name, {
onSetMod: {
js: {
inited: function () {
this.bindToWin('scroll', function(e) {
// устанавливаем модификатор
});
}
}
}
}))
});
Вопросы:
- Как модифицировать и сделать так, чтобы установка модификатора происходила при прокрутке страницы на 500 пикселей, например.
- При прокрутке страницы до определенного блока, например, block "b2"
Пробовал так:
var scroll = $(this).scrollTop();
if (scroll >= 500) {
// вешаем модификатор
};
Не получилось
Надо слушать событие onscroll, например через jquery: http://api.jquery.com/scroll/
Можно другие варианты поискать по словам window onscroll
Так мы же его и так слушаем this.bindToWin('scroll', function(e) У меня есть реакция на скролл, вопрос как правильно посчитать количество пикселей.
Вот такое работает на форуме (в консольке если вписать):
Выводит при скролле правильное число.
Да, работает, но если я меняю
на
, то перестает работать переключатель модификаторов
т.е у меня следующая задача, переключать модификатор блока, при скролле, например, на 600 пикселей. Вот так все работает:
Но здесь нет подсчета пикселей. А вот так:
считаются пиксели, но не переключаются модификаторы
Сразу бы так ;-)
Попробуешь? ;-)
Сейчас попробую. Спасибо.
Отлично. работает. А не подскажете, как к переключению модификатора навешать еще таймер, чтобы переключалось не сразу а через две секунды.
внутри функции setTimeout
this уже не будет экземпляром блока?
Да, не будет. Если у вас ES6, то с ним можно сделать так :-)
Пока es6 нет, можно так:
Или так:
upd: Попробуйте debugger совсестно с какими-нибудь dev-tools. Очень помогает понять откуда ноги растут ;-)
Спасибо, большое!!!!!