Изменение задержки появления подсказок при навдении курсора
Есть техника для вывода информационных всплывающих сообщений и подсказок. При прохождении курсора мыши над изображением в первый раз подсказка выводится с задержкой, чтобы исключить навязчивое предложение лишней информации при переводе курсора на другое место на странице. Но если курсор мыши задерживался над картинкой достаточно долго, то последовательные перемещения будут вызывать всплывающие подсказки без задержки.
Воспроизведем такой эффект с помощью задержек переходов CSS и небольшим кодом jQuery для изменения состояний.
Применение
Допустим, у вас есть строка функциональных кнопок. Пользователь может нажать на кнопку или запустить команду с клавиатуры. Опытные пользователи пользуются клавиатурными комбинациями (быстро и удобно). Но сначала комбинации надо запомнить и полезно иметь подсказку перед глазами. Поэтому, принято решение применить всплывающие подсказки, которые будут показывать клавиатурные комбинации при наведении курсора мыши на кнопку.
Для мобильных устройств не будет события hover.
Атрибут title
?
Одним из способов решения такой задачи используется атрибут title
.
<a href="#" class="function button" title="три">Ссылка</a>
Вполне приличный способ.Будет выводиться стандартная подсказка:
В действительности поведение атрибута title
соответствует тому, что было описано в начале урока. При первом наведении курсора мыши подсказка появится с небольшой задержкой, а при переводе на дургие ссылки сообщение сменится достаточно быстро.
Прелестно. Но... нет никакого контроля над дизайном и функционалом. Кроме того, в настоящий момент не допускается генерированное содержание.
Ручная работа
Подготовим другое решение для нашей задачи. Разместим команду прямо в разметке:
<nav> <a href="#"> Вырезать <span class="command"> <span class="screen-reader-text">Клавиатурная комбинация:</span> <span class="mod"> X</span> </span> </a> . . . </nav>
Такое решение позволяет:
- Ничего не показывать для кнопок на мобильных устройствах
- На компьютерах будет выводиться подсказка при наведении курсора мыши на кнопку
- Читалки с экрана смогут объявлять о клавиатурных командах
- Использовать правильный модификатор для клавиш (PC, Mac) без изменения разметки
- Сохранять разумную семантику кода
Задержка перехода
Теперь у нас есть разметка для работы. Всплывающую подсказку можно сделать такой, как нужно.
.button { /* Стили кнопки */ position: relative; } .command { /* Стили подсказки */ position: absolute; opacity: 0; /* Не выводим по умолчанию */ }
Мы установим задержку в одну секунду при наведении курсора мыши на ссылку (исключить навязчивые появления) и немедленное скрытие при потере фокуса ввода.
.command { transition: opacity 0.2s 0 ease; /* Курсор мыши покинул кнопку: выключение немедленно */ } .button:hover .command { transition: opacity 0.2s 1s ease; /* Курсор мыши зашел на кнопку: появление с задержкой */ }
Код приведен без префиксов браузеров.
Задержка перехода: при наличии фокуса появляется немедленно
Выше приведенный код CSS является решением только на половину - задержка будет иметь место при каждом наведении курсора мыши на кнопку. Таким образом, все подсказки будут раздражать медлительностью. Нам нужно убрать задержку когда фокус ввода находится внутри группы навигации достаточно долго.
С помощью jQuery мы используем классы для элементов навигации в зависимости от ситуации. При первом заходе в область навигации будет задержка на одну секунду, а затем применяется класс "immediate". А при потере фокуса ввода мы будем удалять данный класс.
$("nav").hover(function() { /* Курсор мыши зашел в область навигации */ var nav = $(this); setTimeout(function() { nav.addClass("immediate"); }, 1000); }, function() { /* Потеря фокуса ввода */ $(this).removeClass("immediate"); });
nav.immediate .command { transition-delay: 0s !important; }
Нужно подправить функционал с помощью добавления/удаления класса "out". Если пользователь подержит курсор мыши пол-секунды и уведёт его прочь, то таймер все-равно подключит класс "immediate". Но класс "out" исправит ситуацию. Вот полный код JavaScript:
$("nav").hover(function() { /* Курсор мыши зашел в область навигации */ var nav = $(this).removeClass("out"); setTimeout(function() { nav.addClass("immediate"); }, 1000); }, function() { /* Потеря фокуса ввода */ $(this) .addClass("out") .removeClass("immediate"); });
С классом "out" восстанавливается задержка:
nav.out .command { transition-delay: 1s !important; }
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/5n669f21Yq8/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
- 2024-01-18 » Мифический человеко-DevOps
- 2023-12-28 » Google подвел итоги 2023 года в поиске
- 2023-12-28 » 5 ошибок отдела продаж, из-за которых вы теряете клиентов
- 2023-12-28 » Американский суд признал монополию Google на рынках дистрибуции Android-приложений
- 2023-12-28 » Хостинг-провайдер GoDaddy перестанет оказывать услуги пользователям из России
- 2023-12-28 » ТОП-5 методов юзабилити-исследований. Разбор слабых и сильных сторон
Человек - аристократ среди животных Гейне Генрих - (1797-1856) - немецкий поэт и публицист |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.