Изменение задержки появления подсказок при навдении курсора
Есть техника для вывода информационных всплывающих сообщений и подсказок. При прохождении курсора мыши над изображением в первый раз подсказка выводится с задержкой, чтобы исключить навязчивое предложение лишней информации при переводе курсора на другое место на странице. Но если курсор мыши задерживался над картинкой достаточно долго, то последовательные перемещения будут вызывать всплывающие подсказки без задержки.
Воспроизведем такой эффект с помощью задержек переходов 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-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Чтобы вырастить плодоносящий сайт - его полезно регулярно поливать и удобрять с помощью рекламы и оптимизации Компания "RedLine" |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.