javascript - 更改图像 src 时 jQuery 悬停进出淡入淡出过渡

标签 javascript jquery html css

我编写了以下代码,它改变了图像源,并在改变图像源时做了一些漂亮的淡出和淡入尝试,但它并不完美,并试图让它变得平滑。

我面临的问题是:

  1. 图像变化之间的淡入淡出是困惑的,应该淡出,改变图像并淡出新的图像,但目前看来并非如此
  2. 如果您将鼠标悬停进出几次,它会不断重复悬停进/出功能;这只能发生一次吗?

请注意,第一张图片处于事件状态,因此无需悬停,因此请悬停其他图片以了解我的意思。

var $profile = $(".influencers-block-profiles");
var $profileLink = $profile.find("a");
var $activeProfile = $profileLink.hasClass("active");
var imageHoverName = "-hover.jpg";
var imageColourName = "-colour.jpg";

$($profile).find("img").hover(function() {
  $activeProfile = $(this).closest("a").hasClass("active");
  if (!$activeProfile) {
    var src = $(this).attr('src').replace(imageColourName, imageHoverName);
    $(this).not('[src=' + src + ']').fadeOut(500, 0).attr('src', src).fadeIn(500);
  }
  return false
}, function() {
  $activeProfile = $(this).closest("a").hasClass("active");
  if (!$activeProfile) {
    var src = $(this).attr('src').replace(imageHoverName, imageColourName);
    $(this).not('[src=' + src + ']').fadeOut(500, 0).attr('src', src).fadeIn(500);
  }
  return false
});
.influencers-block-profiles img {
  width: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="influencers-block-profiles">
  <a href="#" class="active">
    <img src="https://www.hostandname.co.uk/clients/tests/images/test-photo-hover.jpg" />
  </a>
  <a href="#">
    <img src="https://www.hostandname.co.uk/clients/tests/images/test-photo-colour.jpg" />
  </a>
  <a href="#">
    <img src="https://www.hostandname.co.uk/clients/tests/images/test-photo-colour.jpg" />
  </a>
</div>

最佳答案

这是一个工作示例

var $profile = $(".influencers-block-profiles");
var $profileLink = $profile.find("a");
var $activeProfile = $profileLink.hasClass("active");
var imageHoverName = "-hover.jpg";
var imageColourName = "-colour.jpg";
var TRANSITION_DURATION = 500, inTimeout;

$profile.find("img").hover(function() {
  $activeProfile = $(this).closest("a").hasClass("active");
  if (!$activeProfile) {
    var src = $(this).attr('src').replace(imageColourName, imageHoverName);
    var self = this;
    clearTimeout(inTimeout);
    this.style.opacity = 0;
    inTimout = setTimeout(function(){
      self.src = src;
      self.style.opacity = 1
    }, TRANSITION_DURATION )
  }
  return false
}, function() {
  $activeProfile = $(this).closest("a").hasClass("active");
  if (!$activeProfile) {
    var src = $(this).attr('src').replace(imageHoverName, imageColourName);
    var self = this;
    clearTimeout(inTimeout);
    this.style.opacity = 0;
    inTimout = setTimeout(function(){
      self.src = src;
      self.style.opacity = 1
    }, TRANSITION_DURATION )
  }
  return false
});
.influencers-block-profiles img {
  transition: opacity 0.5s ease;
  width: 50%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="influencers-block-profiles">
  <a href="#" class="active">
    <img src="https://www.hostandname.co.uk/clients/tests/images/test-photo-hover.jpg" />
  </a>
  <a href="#">
    <img src="https://www.hostandname.co.uk/clients/tests/images/test-photo-colour.jpg" />
  </a>
  <a href="#">
    <img src="https://www.hostandname.co.uk/clients/tests/images/test-photo-colour.jpg" />
  </a>
</div>

关于javascript - 更改图像 src 时 jQuery 悬停进出淡入淡出过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49161156/

相关文章:

javascript - React js中的滑动效果

javascript - 如何用图像填充在 javascript 中创建的形状?

javascript - 我的错误在哪里 - Javascript/jQuery 中选择框的日期计算器?

javascript - jQuery.getJSON 的 React 版本 {

jquery - 中心 flexslider 图像

html - 使用 CSS 动画文件上传按钮

媒体查询元素上的 JQuery

javascript - 检查 jquery 对象数组是否匹配键。 += value 如果匹配,如果不匹配则推送新对象

javascript - 阻止 .appendChild 在已填充的 div 内创建?

javascript - ng-Table 点击表格标题时出现表格内容