代码之家  ›  专栏  ›  技术社区  ›  Ebrahim Momin

div第一次向下滑动它包含的子元素时,首先出现JQuery

  •  0
  • Ebrahim Momin  · 技术社区  · 1 年前

    我正在用JQuery制作一个网站,我希望当我点击按钮时,注册栏会向下滑动。出于某种原因,当我第一次单击它时,注册表单会出现在包含它的div向下滑动之前。div包含背景颜色,因此这是一个非常明显的差异。我使用以下代码使表单先上后下滑动。

                if (signupBarDown) {
                    $signup.slideUp();
                    $login.slideUp();
                }
    
                $signupOrLoginDiv.slideToggle(400);
    
                if (!signupBarDown) {
                    $signup.slideDown();
                    $login.slideDown();
                }
    
                signupBarDown = !signupBarDown;
    

    正如我之前所说,如果这不是第一次向下/向上滑动,那么它就完美地工作了 我不知道为什么会这样。

    表单是绝对定位的,这迫使我从一开始就纠正这段代码,但我不知道为什么这会阻止它第一次工作。signupBarDown也以false开头。

    我尝试将定位改为固定,因为定位绝对改变了之前脚本的效果,但仍然是一样的。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Ebrahim Momin    1 年前

    我发现了为什么会发生这种情况。它需要从代码的开头隐藏,或者默认情况下在css中隐藏。否则,即使需要400毫秒才能打开,网站在完全打开之前也会认为它已经打开了。因此,表单显示是因为父项不再隐藏。添加 $signup.hide() $login.hide 和开始 $(document).ready 函数修复了这个问题,因为即使父级不再隐藏,子级仍然隐藏。运行完毕后,显示表单的第二部分将运行,使其正常工作。