Я на самом деле ничего не понял из того что вы сказали. Что нужно - банально применять этот алгоритм к разным группам элементов? Если да, то достаточно выделить алгоритм в метод для $, и всё.
Денис Букреев: то есть не должен, но в твоём случае проблема из-за этого. Также можно использовать собственно анимацию, тоже приятней будет, @keyframes
А можно посмотреть? Хотя бы что-нибудь, скрины например. Я как раз недавно делал подобное, только я всё же запилил этот функционал во встроенный редактор, поэтому интересно.
Не ради флейма, а только справедливости ради хочу заметить, что
1) не дата теги, а скорее дата атрибуты,
2) приведённый вами пример использования .data() - это вообще достаточно вакуумный случай, потому что такое можно делать только если в проекте более нигде не используется дата байндинга который осуществляет .data() и только для решения таких вот простеньких, мелких задач. Хотя бы потому что информация, которую сохраняет .data(), является для $ более приоритетной: при наличии у элемента el атрибута data-test и data-записи c ключом test, el.data('test') вернёт вам значение data-записи, а не атрибута. По этой же причине вызов el.data('key', value) не изменит/создаст атрибут 'data-key', а сделает data-запись, доступ к которой будет возможен только с использованием этого метода.
Поэтому используя .attr() для доступа к data-атрибутам, вы все же в значительной степени снижаете уровень энтропии логики вашего кода)
pqgg7nwkd4: погодите, а вы уверены что обновление localStorage инициирует полную его перезапись в хранилище? Мне кажется было бы логично предположить, что во время работы браузера localStorage хранится в памяти, и перезаписывается только по выключению браузера/завершению сессии или как-то так.
pqgg7nwkd4: я вообще первый раз про эти воркеры слышу, но я чуть погуглил, и мне показалось что взаимодействие между вкладками - это вообще единственное, для чего народ их использует.
Видимо не такую уж и большую нагрузку создаёт постоянные запись/чтение LocalStorage, если даже вк использует его.
Еще можно совсем отойти от записи на клиент и высокоуровневых фич, и всё писать на сервер. Или не вариант?
Когда скролл внизу, вешайте флаг типа scrolled_to_bottom. Проверяйте этот флаг для всех нужных событий. Например если вам подобное нужно только если пользователь скроллит мышкой, проверяйте флаг для событий mousewheel и DOMMouseScroll.
Я может усложняю, может можно и проще, но я бы открыл adobe flash, запилил бы все нужные объекты в нужных положениях, для single stationary light source наверное как-нибудь бы использовал маску (хотя стройного решения сходу придумать не могу), использовал бы любую анимацию для шестерёнок. Это уже не важно, мне кажется, классическая анимация или еще что. Потом экспортировал бы в .gif
Как минимум так сделать можно, а уж насколько это overcare уж не знаю
Вы когда сдавать будете, вы в титрах напишите many thanks to и обязательно укажите их: Михаил Румянцев, Никита Полевой, Александр Аксентьев, Мансур Ишмухаметов, Андрей Дырков, Алексей Зуев)
artekha: объясните зачем вам обязательно input[type="select"]? Если вам нужен кастомный дропдаун и корректное заполнение формы, делайте кастомный дропдаун и просто скрытые инпуты. Серьёзно, мне кажется ни к чему эти пляски с выпиливанием дефолтного функционала. Или есть смысл?