Изменение задержки появления подсказок при навдении курсора
Есть техника для вывода информационных всплывающих сообщений и подсказок. При прохождении курсора мыши над изображением в первый раз подсказка выводится с задержкой, чтобы исключить навязчивое предложение лишней информации при переводе курсора на другое место на странице. Но если курсор мыши задерживался над картинкой достаточно долго, то последовательные перемещения будут вызывать всплывающие подсказки без задержки.
Воспроизведем такой эффект с помощью задержек переходов 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
Новые статьи и публикации
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 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 » Интеграция с Яндекс Еда
Самое важное в каждом деле – пересилить момент, когда нам не хочется работать. И. Павлов |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp