悬停时的文字动画故障

时间:2019-06-05 07:13:43

标签: javascript html css responsive-design bootstrap-4

我正在尝试创建动画,该动画将文本向上悬停并悬停在卡上时显示一些内容。将鼠标悬停在卡片上时,动画将按预期工作,但是将光标放在文本上方时,会出现这种奇怪的毛刺,并且文本会不断地上下移动。

我将其放在: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 个答案:

答案 0 :(得分:2)

您需要确保只有父元素才触发事件。使用鼠标悬停/鼠标悬停时,任何子元素也会触发您不希望的这些事件。

要解决此问题,您可以使用mouseenter / mouseleave,或者甚至更好的方法是使用hover shorthand

$(".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