Наложение прерываний при наведении

0

ОБНОВИТЬ:

Было предложено включить мой HTML-код, обратите внимание, что это использование Handlebars для моего кода NodeJS:

<div id='grid'>
    {{#each projects}}
        <img src='{{image_path}}' id='image-{{id}}' class='gridImage'>
        <div id='overlay-image-{{id}}' class='overlay'>
            <div class='detail'>
                <span style='font-size: 18px; font-family:OpenSans-Bold'>{{name}}</span>
                <br><br>
                {{shortDescription}}
                <br><br>
                Made by {{developers}}
            </div>
        </div>
    {{/each}}
</div>

У меня есть сетка изображений, когда вы наводите курсор на каждое изображение, он расскажет вам что-то об изображении, используя оверлей div. Как это.

Теперь вот код jQuery для этого:

$('.gridImage').mouseover(function() {
    $('#overlay-'+$(this).attr('id')).css({
        'top': $(this).position().top, 
        'left': $(this).position().left,
        'right': $(this).position().left, 
        'bottom': $(this).position().bottom,
        'width': $(this).width(),
        'height': $(this).height()
    }).fadeIn(150);
});
$('.gridImage').mouseout(function() {
    $('#overlay-'+$(this).attr('id')).fadeOut(150);
});

По сути, этот код обнаруживает, когда вы наводите курсор на изображение, он находит правый (div) оверлей, основанный на том, какое изображение он (id), и ударяет его поверх изображения. Теперь, поскольку div полностью покрывает изображение, вызывается mouseout и вызывается оверлей.

Довольно просто, это делает его таким, что я наводил мышь на изображение, он исчезает в оверлее, а затем исчезает - в основном это мерцает

Как я могу это исправить?

Теги:
hover

2 ответа

1

Вы можете попытаться настроить событие mouseout прямо на оверлей вместо изображения. Я также чувствую, что есть, вероятно, лучшее решение для этого, используя некоторые CSS

  • 0
    Да, позвольте мне попробовать это. Как бы я использовал CSS? Так как есть много оверлеев с разными идентификаторами, и мне нужен правильный.
  • 0
    Это будет работать только в том случае, если вы уверены, что при наложении оверлея будет наведена мышь. Если мышь может начать поверх исходного элемента, но за пределами наложения, это не будет работать для всех позиций мыши.
0

Попробуйте изменить mouseover, находящиеся /mouseout для mouseenter/mouseleave.

редактировать

Вот jsfiddle, который я использовал:

http://jsfiddle.net/ax9X5/2/

Изменить 2

Поскольку .overlay не является дочерним элементом .gridImage, вышеупомянутое решение требует, чтобы оба они были помещены как дочерние элементы в контейнер и переместили идентификатор и центр мыши в этот контейнер.

Повеселись!

  • 1
    Как это решает проблему каким-либо образом?
  • 0
    Возможно, я неправильно понял вопрос, но это все меняет для этого jsfiddle.net/ax9X5/2 . Извините, если я ошибся.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню