【问题标题】:How to add one class at a time if two divs are ovelapped in the same position如果两个 div 在同一位置重叠,如何一次添加一个类
【发布时间】:2018-06-21 05:06:33
【问题描述】:

我陷入了一个问题并尝试了很多,但无法得到解决方案。

发生的情况是,有一个 mp3 播放器,在该播放器下方有一个条带,其中包含基于 mp3 进度的图片(来自用户的 cmets)。

当播放器的进度条到达图像的开头时,它会向图像添加“活动”类,以便人们可以看到此时该用户发表了评论。

现在我面临的问题是,在 01:46 有两个图像相互重叠,由于这种重叠,javascript 正在为两个我不想要的图像添加活动类,我想要进度条到达第一个图像的开头,它将使其处于活动状态,但是一旦第二个图像开始(重叠),第二个图像就会激活,因此一次只有一个活动。与 soundcloud cmets 相同。

无论第一张图片的持续时间是否会更短,但这就是我想要实现的,因为这些图片将是动态的,用户可以选择他们想要评论的任何地方,我无法为重叠的图片指定特定的类,所以有些东西需要通过javascript完成,我被卡得很厉害。

因为现在有两个重叠,但将来它可以是三个四个或多少重叠所以我想要一个效果,当我们在这些图像上从左到右移动鼠标时,悬停效果如何使图片处于活动状态,并且作为第二个图片获得焦点并变得活跃,我希望它是那样的。

有专家可以帮我解决这个问题吗?

我正在使用这个函数来获取进度条的左侧位置遇到图像添加“活动”类,当图像的宽度结束时它将删除活动类

$(document).ready(function() {

 function highlightImg(progress){
 progress = parseFloat(parseFloat(''+progress).toFixed(1));
    var imgs = $('img.comment');
    imgs.map(function (i, im)
    {   
      var img = $(im);
      var currentImgLeftPos = parseFloat(parseFloat(im.style.left).toFixed(1));
      var currentImgRightPos = $(this).width() / $(this).parent().width() * 100;
      console.log(progress);
      console.log('left' ,currentImgLeftPos);
      img.removeClass('active'); // remove active from other images
            if (progress > currentImgLeftPos - 1 && progress < currentImgLeftPos + currentImgRightPos  ) {
                $('#imgwidimg').text('this'+currentImgRightPos);
        img.addClass('active'); // add the class when needed
      }
    }
  );
}

通过这个功能,我正在更新 jplayer 进度

$('#jquery_jplayer_2').on($.jPlayer.event.timeupdate, function(e){
   var progress = document.querySelector('.jp-play-bar').style.width;
   highlightImg(progress);
});

Here's a fiddle 演示问题。

【问题讨论】:

  • 你试过什么?请发布更多您使用过的代码。
  • 嗨,是的,我尝试了很多,我做了这个小提琴请检查jsfiddle.net/XLNCY/22643
  • 我的意思是把代码放在你的问题中。
  • 好吧,我把代码放在这个问题上,实际上我现在从手机登录会回来,因为我将从电脑上登录,在这里不好评论..谢谢雅各布
  • 是的,另外,您的标签似乎有点...关闭。

标签: javascript java jquery


【解决方案1】:

请尝试一下。

 if (progress > currentImgLeftPos - 1 && progress < currentImgLeftPos + currentImgRightPos  ) {
                $('#imgwidimg').text('this'+currentImgRightPos);
        imgs.removeClass("active");  //add this line to your code
        img.addClass('active'); // add the class when needed
      }

【讨论】:

  • 谢谢你的帮助你能更新小提琴吗?
  • 苏梅尔巴哈!你太棒了!!太感谢你了!!效果惊人
猜你喜欢
  • 1970-01-01
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多