Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Надо ли отложить выполнение события? Или... (https://javascript.ru/forum/events/45165-nado-li-otlozhit-vypolnenie-sobytiya-ili.html)

vadim_ 17.02.2014 16:27

Надо ли отложить выполнение события? Или...
 
Приветствую!
Есть одностраничный сайт с секциями http://plusokoshko.ru При скролле страницы на четырех секциях из 11 присутствуют персонажи (ест-но, котики), вылетающие сбоку, когда секция появляется в окне бразера. Когда юзер переходит последовательно от секции к секции, всё хорошо. Но! При скролле, скажем, с 1-й секции на 10-ю, несколько персонажей успевают хлопотливо и некрасиво явиться-исчезнуть, что не гуд. Как сделать, чтобы персонаж появлялся только тогда, когда соответ-я ему секция зафиксирует положение?

preproger 17.02.2014 16:32

Не в тему твоего вопроса, но в Мозилке страница скролится только если курсор на фоне, если курсор находится в пределах контента то скроллить не получается. Думаю, среднестатистический пользователь подумает что сайт просто поломан)

vadim_ 17.02.2014 17:03

Не совсем так. Некоторые секции компактны и скролить их не надо, а некоторые содержат избыточный по объёму (но не по смыслу)) контент, в этих случаях можно скролить и страницу (по фону, да), и саму секцию.

danik.js 17.02.2014 17:48

Цитата:

Сообщение от preproger
страница скролится только если курсор на фоне

Подтверждаю, в Хроме скролл не работает. То есть работает до третей странички, а дальше ломается. То есть сайт просто не скроллится на третей странице :blink:

vadim_ 17.02.2014 18:26

Друзья мои, спасибо уже только за внимание. Но сайт не ломается на 3-й секции. Именно там (а также на 4,6,7 и 10 секциях) контента побольше, и эти секции снабжены своими полосами прокрутки (они видимы). Потому эти секции скролятся и в пределах контента, и по фону. В хроме тоже.
А по сути вопроса есть ли соображения? Где копать-то?

danik.js 17.02.2014 18:46

Цитата:

Сообщение от vadim_
Но сайт не ломается на 3-й секции.

Ок, ок. Только ты на сайте такую крупную табличку повесь, чтобы каждый пользователь, который столкнется с тем что прокрутка не работает, знал, что это он дурак, а лыжи, мол, едут.

Еще раз: когда доходишь то страниц со своим скроллбаром, прокрутка сайта перестает работать, даже когда проскроллишь всю страничку с текстом. Отключи временно кастомные скроллбары и посмотри как работают нативные.

Что касается персонажей, то используй setTimeout чтобы отсрочить действие на событие.

danik.js 17.02.2014 18:53

Цитата:

Сообщение от vadim_
Друзья мои, спасибо уже только за внимание. Но сайт не ломается на 3-й секции

Ты случаем не в правительстве работаешь? Очень смахивает поведение ))
Тебе уже два человека сообщило о проблеме, ты же гнешь свою линию. Ну ок, юзеры, ониж тупые. Да и вобще, сайт не для них делался.

vadim_ 18.02.2014 13:50

данику, профессору: прежде чем вывесить сайт, я погонял его во всех трёх) популярных бразерах. Потому ещё раз деликатно намекаю - мною сознательно выбран вариант, когда юзер может скролить и контент (когда его много, прокручивая колёсико мышки НА КОНТЕНТЕ или кастомный скрол), и страницу (прокручивая колёсико мышки НА ФОНЕ или основной скрол). И да, безнадежно тупые юзеры и ребята, у которых в приоритете быстрее пост кинуть, в расчет не берутся - из любви к искусству. Задумка эта работает, посему предлагаю далее не заострять на ней внимание.
А вот с setTimeout у меня проблема - персонаж-то вылетает с задержкой, но и в тех случаях, когда он уже не нужен, секцию уже пролистали. С каким бы условием связать его появление? Может, и без таймаута?

danik.js 18.02.2014 15:45

Цитата:

Сообщение от vadim_
секцию уже пролистали

Секцию пролистали - вызываем clearTimeout(), чтобы остановить таймер запуска персонажа.
Цитата:

Сообщение от vadim_
я погонял его во всех трёх

Молодец. Но хоть в милионе гоняй - сути это не меняет. У тебя глючит сайт, тебе это не я один говорю. То есть я уже понял, что тебя это устраивает, но давай не будем кидать стрелки и признаем что прокрутка у тебя не работает :yes:

vadim_ 18.02.2014 16:34

Спасибо! Чую - оно. Буду пробовать, тему закрываю.


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