Текст анимации глюк при наведении - PullRequest
0 голосов
/ 05 июня 2019

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

Я поднял это на: https://codepen.io/anon/pen/qGwpaG

Мой код

HTML

 <section class="section" id="black">
    <div class="container">
      <p class="display-4 d-flex justify-content-center spacing text-center light bold mt-3" id="case-head"> Make something you love.</p>
    </div>

    <div class="container">
      <div class="row no-gutters">


      <div class="col-lg-4">
          <a href="blog.html" class="hover">

            <div class="image">
              <img src="https://farm4.staticflickr.com/3766/12953056854_b8cdf14f21.jpg" class="">
            </div>
          <p class="img-text color bold">Sample - 1</p>
          <p class="img-description light">Lorem Ipsum  </p>
          <i class="fas fa-long-arrow-alt-right img-description arrow"></i> 
           </a>
        </div>
  </section>

CSS

    .img-text {
    padding: 10px;
    position: absolute;
    bottom: 0px;
    left: 16px;
    font-size: 30px;

  }

  .img-description{


    position: absolute;
    padding: 10px;
    bottom: 35px;
    left: 16px;
    font-size: 20px;
    color: white;

  }

  .image {
    position:relative;
   width: 100%;
   height: auto;
}
.image img {
    width:100%;
    vertical-align:top;
}
.image:after {
    content:'\A';
    position:absolute;
    width:100%; height:100%;
    top:0; left:0;
    background:rgba(0,0,0,0.8);
    opacity:0;
    transition: all 0.5s;
    -webkit-transition: all 0.5s;
}
.image:hover:after {
    opacity:1;
}
.color
{
  color: white!important;
}

JS

$('.img-description').hide();

$(".hover").mouseover(function() {
    $(this).find(".img-text").animate({ bottom: 100 },100);
    $(this).find('.img-description').show();
})

$(".hover").mouseout(function() {
    $(this).find(".img-text").animate({ bottom: 8 });
    $(this).find('.img-description').hide();
})

1 Ответ

2 голосов
/ 05 июня 2019

Необходимо убедиться, что только родительский элемент вызывает события.При использовании mouseover / mouseout любой дочерний элемент также будет запускать эти события, которые вам не нужны.

Чтобы исправить это, вы можете использовать mouseenter / mouseleave или, что еще лучше, использовать сокращение hover :

$(".hover").hover(
  function() {
    $(this).find(".img-text").animate({ bottom: 100 }, 100);
    $(this).find(".img-description").show();
  },
  function() {
    $(this).find(".img-text").animate({ bottom: 8 });
    $(this).find(".img-description").hide();
  }
);

https://codepen.io/anon/pen/mYgxWv

...