【问题标题】:Fade in menu on click单击时淡入菜单
【发布时间】:2016-08-01 21:48:35
【问题描述】:

我在尝试让我的菜单在点击时淡入时遇到了一个小问题,一旦我点击关闭按钮,淡出就会起作用。当我在脚本中添加淡入淡出(下面是我正在使用的)时,它会显示一个奇怪的淡入淡出故障,可以在这里看到https://jsfiddle.net/7u6q6jzu/3/。发生的情况是菜单似乎已加载,然后添加了淡入淡出脚本。我使用了错误的脚本还是遗漏了什么?任何帮助都会很棒。

 $(function() { // Onload
      $(".open-overlay").click(function() {
          $(".overlay").fadeIn(1000);
      });
      $(".close-overlay").click(function() {
          $(".overlay").fadeOut(1000);
      });

 });

这是我的菜单代码。此脚本打开菜单并使用滚动条来溢出菜单,而不是使用辅助滚动条。

 var body = document.body,
 overlay = document.querySelector('.overlay'),
 overlayBtts = document.querySelectorAll('div[class$="overlay"]');

[].forEach.call(overlayBtts, function(btt) {
"use strict";
  btt.addEventListener('click', function() { 

     /* Detect the button class name */
     var overlayOpen = this.className === 'open-overlay';

     /* Toggle the aria-hidden state on the overlay and the no-scroll class on the body */
     overlay.setAttribute('aria-hidden', !overlayOpen);
     body.classList.toggle('noscroll', overlayOpen);
     /* On some mobile browser when the overlay was previously opened and scrolled, if you open it again it doesn't reset its scrollTop property */
     overlay.scrollTop = 0;
  }, false);
 });  

【问题讨论】:

  • 看起来像是结合了 css transition 和 jQuery 过渡

标签: javascript jquery html css


【解决方案1】:

只需删除您的过渡时间

.overlay {
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 1);
 }

fiddle example

移除过渡

 -webkit-transition: all 0.3s ease-out;
      -moz-transition: all 0.3s ease-out;
      -ms-transition: all 0.3s ease-out;
      -o-transition: all 0.3s ease-out;
      transition: all 0.3s ease-out;

您会同时应用淡入淡出效果和过渡效果。所以你会得到一个“双重淡入淡出”的效果。删除过渡可以摆脱这种情况,只需应用您正常的淡出/淡入效果

【讨论】:

  • 嗯,你不是说过渡吗?
  • @ÖzgürErsil 我完全忘记了我有这个。谢谢
  • @bigant841 快乐编码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
相关资源
最近更新 更多