Изменение задержки появления подсказок при навдении курсора

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

Воспроизведем такой эффект с помощью задержек переходов 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

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Изменение задержки появления подсказок при навдении курсора | | 2012-06-30 07:19:10 | | Статьи Web-мастеру | | Есть техника для вывода информационных всплывающих сообщений и подсказок. При прохождении курсора мыши над изображением в первый раз подсказка выводится с задержкой, чтобы исключить навязчивое | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: