【问题标题】:jQuery slideUp acts differently in Firefox & SafarijQuery slideUp 在 Firefox 和 Safari 中的行为不同
【发布时间】:2017-07-20 11:12:32
【问题描述】:

我是 jQuery 和 css 的初级人员,我只是不明白为什么我的 slideUp() 和 slideDown() 方法在 Chrome 和 Firefox/Safari 中的行为不同。

https://repl.it/J9yX

对于我的作品集项目,我垂直添加了几张图片。每次单击时,它的描述 div 会显示(slideDown()),而另一个打开的描述会消失(slideUp())。

      $(".project").each(function(){
      $(this).click(()=>{
         $(".project").find('.projectDescription').slideUp()

        setTimeout(()=>{
          $(this).find('.projectDescription').slideDown(400)
        }, 400)
      })
    })

在 Chrome 中,单击的图像不会超出页面顶部,因为它的描述会向下滑动,而前一张图像的描述会向上滑动。它会受到其他 div 的高度变化的影响,直到它到达页面顶部。
然而,在 Safari 和 Firefox 中,点击的图像实际上会在页面顶部上方,因为其他打开的描述会向上滑动并且其高度会发生变化。

如果您能解释为什么以及如何解决此问题,我将不胜感激。

【问题讨论】:

  • 我似乎无法重现您所说的问题——或者我可能误解了您的问题。 “越过页面顶部”是什么意思?
  • 我很抱歉造成混乱。我添加了一个例子。请看一下!

标签: jquery css firefox


【解决方案1】:

我不确定你有什么问题以及你想解决什么,因为你的描述有点混乱......但让我试试。我修复了当您再次单击同一张照片时,它会隐藏并且不会向下滑动的代码。我使用 flag 来检查用户是否单击了相同或不同的照片,如果相同,则跳过整个 slideUp 部分:

var checkSame;
$('.project').on('click', function() {
    var photo = this.id;
    if (photo != checkSame) {
        $('.project').find('.projectDescription').slideUp();
    }
    checkSame = photo;
    $(this).find('.projectDescription').slideToggle(600);
});

PS。下次不要链接到“只读”代码;)

【讨论】:

  • 我很抱歉造成混乱。如您所知,我真的很陌生。我添加了一个它在 Firefox 浏览器中的行为示例。请看一下。另外,您知道如何在codepen中将“只读”文件更改为“读写”文件吗?
  • @jkoo87: 仍然不确定你有什么问题,但是当我使用我的代码向下滚动页面时,单击的图像通常在 Chrome 和 Firefox 中“超出页面顶部”。我的意思是图像可以离开窗口视口。您是否使用我的代码检查了行为?关于“只读”链接,我不知道它在 codepen 上的表现如何。我正在使用jsfiddle,在这个网站上一切都很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 2011-03-24
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-04
相关资源
最近更新 更多