2016-02-27 96 views
0

我希望有人可以幫助我這個。動畫CSS只漢堡包菜單圖標上懸停不點擊

我想用漢堡包圖標的一個轉換從http://callmenick.com/post/animating-css-only-hamburger-menu-icons

的圖標過渡的jQuery是觸發.click事件。我希望在懸停或mouseover之後觸發,所以動畫在懸停時播放,並在鼠標懸停時反轉。

以下是需要更改的腳本。

// Animated Hamburger Icon 
    (function() { 

    "use strict"; 

    var toggles = document.querySelectorAll(".c-hamburger"); 

    for (var i = toggles.length - 1; i >= 0; i--) { 
     var toggle = toggles[i]; 
     toggleHandler(toggle); 
    }; 

    function toggleHandler(toggle) { 
     toggle.addEventListener("click", function(e) { 
     e.preventDefault(); 
     (this.classList.contains("is-active") === true) ? this.classList.remove("is-active") : this.classList.add("is-active"); 
     }); 
    } 

    })(); 
+0

記住,移動用戶不用我已經試過了懸停事件 – charlietfl

回答

3

由於您使用jQuery你可以使用hover()事件與toggleClass()方法:

function toggleHandler(toggle) { 
    $(toggle).hover(function(){ 
     $(this).toggleClass("is-active"); 
    }); 
} 

希望這有助於。

0

https://developer.mozilla.org/en-US/docs/Web/Events/mouseover

在所提供的例子,看看行24

你可以只是「鼠標懸停」取代「點擊」,它會表現你想要的方式。

+0

和它的作品一半。它會觸發我需要的動畫來觸發鼠標輸出,否則動畫將不會顛倒。 –

+1

您是否嘗試過使用.mouseleave();觸發原始造型到漢堡? –

+0

嗨,朱利安,謝謝你的幫助。因爲我根本不知道jquery,所以我沒有試過.mouseleave();但Christoz剛剛發佈了我正在尋找的解決方案。 –

1

我認爲你需要做的水木清華這樣

 (function() { 

      "use strict"; 

      var toggles = document.querySelectorAll(".c-hamburger"); 

      for (var i = toggles.length - 1; i >= 0; i--) { 
       var toggle = toggles[i]; 
       toggleHandler(toggle); 
      }; 

      function toggleHandler(toggle) { 
       toggle.addEventListener("click", function(e) { 
        e.preventDefault(); 
        (this.classList.contains("is-active") === true) ? this.classList.remove("is-active") : this.classList.add("is-active"); 
       }); 
       toggle.addEventListener("mouseover", function(e) { 
        e.preventDefault(); 
        this.classList.add("is-active"); 
       }) 
       toggle.addEventListener("mouseout", function(e) { 
        e.preventDefault(); 
        this.classList.remove("is-active"); 
       })   
      } 

     })(); 
+0

嗨克里斯托茲,這正是我一直在尋找。非常感謝你! –

+0

我的榮幸,請upvote的答案,因爲我需要xp訪問到stackoverflow聊天室。 – christoz