为什么悬停时会闪烁?

Jac*_*ack 5 html css

我遇到了一个问题。我已经进行了悬停过渡。当鼠标在图像上移动时,它会在悬停和非悬停状态之间闪烁。当鼠标仍在图像上时,它会按其应有的方式工作。有人可以找到问题吗?

.belowcont {
  width: 100%;
  height: 200px;
  border: 1px dashed black;
  margin-top: 2px
}

.circles {
  width: 180px;
  height: 180px;
  background: url(https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Intersection_of_3_circles_7.svg/1200px-Intersection_of_3_circles_7.svg.png);
  background-size: 100%;
  background-image: no-repeat;
  ;
  border-radius: 50%;
  margin-left: 120px;
  margin-top: 10px;
  float: left;
  margin-left: 120px;
  margin-top: 10px;
  float: left;
}

.circleimg {
  width: 180px;
  height: 180px;
  border-radius: 50%;
}

.circleimg:hover {
  width: 180px;
  height: 180px;
  border-radius: 50%;
  position: absolute;
  z-index: -100;
  transition: all 1s linear;
}

.circleimg:hover~.circletext {
  visibility: visible;
}

.circletext {
  color: black;
  width: 160px;
  text-align: center;
  margin: 80px auto;
  visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)
<div class="belowcont">
  <div class="circles">
    <img class="circleimg" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Intersection_of_3_circles_0.svg/800px-Intersection_of_3_circles_0.svg.png" />
    <p class="circletext"> Multi Award Winning Film </p>
  </div>
  <div class="circles">
    <img class="circleimg" src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4e/Intersection_of_3_circles_3.svg/2146px-Intersection_of_3_circles_3.svg.png" />
    <p class="circletext"> A Story Of Shanes Life </p>
  </div>
  <div class="circles">
    <img class="circleimg" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Intersection_of_3_circles_7.svg/1200px-Intersection_of_3_circles_7.svg.png" />
    <p class="circletext">Set In The East Midlands </p>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

Zer*_*_IX 3

我不确定它到底为什么这样做,但是我可以提供一个我从未遇到过这个问题的不同解决方案。

visibility: visible尝试将默认文本类设置为:而不是使用opacity: 0

然后悬停:

opacity: 1;
transition: opacity 1s;
Run Code Online (Sandbox Code Playgroud)

我删除了一些无用的代码,并将文本绝对定位在图像中。

看起来好多了。只要摆弄一下位置就可以了。(双关语意为“摆弄”)

http://jsfiddle.net/fjgu0s4q/1/

编辑: 在对它闪烁的原因进行了更多思考之后,这似乎是在悬停时将文本向上移动到图像上的方法。当您将鼠标悬停在图像上时,它会进行检查(伪代码)

If mouse move == true then 
   if hovering over element
    // do specified task
   end if
end if
Run Code Online (Sandbox Code Playgroud)

因此,如果您移动一个像素,它必须一次又一次地检查,因此它必须将文本移回到移动时的默认状态。由于您的方法不是最有机的方法,这似乎就是它闪烁的原因。它在检查鼠标定位的状态时不断上下移动文本。