Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Появление блока по наведению (https://javascript.ru/forum/events/56736-poyavlenie-bloka-po-navedeniyu.html)

Batyabest 01.07.2015 19:12

Появление блока по наведению
 
Здравствуйте. Подскажите как решить такую задачку. Нужно чтобы при наведении на картинку-ссылку в нужном блоке div появлялась информация по которой также можно кликать и т.д. Проблем реализовать появление при наведении нет, но проблема в том, что ссылки-картинки расположены в 2 ряда и если навести на картинку из нижнего ряда, то информация появившаяся для этого блока пока будешь вести мышку до нее может исчезнуть, так как легко зацепить другую ссылку-картинку.
Ссылка на сайт
Там где сейчас написан текст "Оригинальные запчасти" и должна появляться инфа, а ссылки картинки - под ней.

Вот такая реализация у меня, как переписать с учетом проблем описанных выше:

Почему хочется именно при наведении? Потому что при клике хочется вывести модальное окно с формой. Также при клике в появившемся блоке будет так же выходить модальное окно с формой. Поэтому и хочется сделать появление при наведении, если возможно.

рони 01.07.2015 19:28

Batyabest,
сделайте задержку -- полсекунды на картинке - тогда инфа и нет
Цитата:

Сообщение от Batyabest
легко зацепить


Batyabest 01.07.2015 19:40

Задержку на исчезновение или на появление? А тогда если пользователь специально "шарится" по иконкам, чтобы посмотреть что там и там - задержка не будет критична?

рони 01.07.2015 20:43

Задержка перед появлением, пауза на mouseenter
 
Цитата:

Сообщение от Batyabest
задержка не будет критична?

отрегулируйте сами сейчас 300ms

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo by werty1001</title>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <style type='text/css'>
  a{color:#00F;border-bottom:dotted 1px blue;margin:0 10px}
  a:hover{color:#333;border:#333;cursor:pointer}
  .help{width:100px;height:100px;display:inline-block;background:#eee;padding:20px;margin:0 10px;opacity:0}
  .help.active{opacity:1}
  </style>
<script type='text/javascript'>
$(window).load(function() {
    var id, pause = 300;
    $("body").on("mouseenter", "[data-help]", function(b) {
        id = $(this).data("help");
        this.pause = pause;
        $(this).stop(!0).animate({
            pause: 0
        }, pause, function() {
            id == $(this).data("help") && ($(".help").removeClass("active"), $(id).addClass("active"))
        })
    }).on("mouseleave", "[data-help]", function(b) {
        id = null
    })
});
</script>
</head>
<body>
<a data-help="#log1">Ссылка №1</a>
<a data-help="#log2">Ссылка №2</a> <br /><br />
<div id="log1" class="help">Блок 1</div>
<div id="log2" class="help">Блок 2</div>
</body>
</html>

Batyabest 01.07.2015 20:47

Да, отлично, спасибо огромное!


Часовой пояс GMT +3, время: 17:47.