javascript - 菜单图标切换问题 JQuery

标签 javascript jquery html css icons

我获得了一个切换控件,在单击时在菜单图标和 X 之间进行动画处理。它还提供了一个叠加导航。

问题是:当您点击覆盖导航上的任何链接时,它不会将 X 更改/切换回默认菜单图标。


在下面的代码片段中,我添加了 $('.cd-menu-icon').toggleClass('is-clicked'); $('.cd-header').toggleClass('menu-is-open');(第 33、34 行)初始设置控件的切换状态。

jQuery(document).ready(function($){
    //if you change this breakpoint in the style.css file (or _layout.scss if you use SASS), don't forget to update this value as well
    var MQL = 1170;

    //primary navigation slide-in effect
    if($(window).width() > MQL) {
        var headerHeight = $('.cd-header').height();
        $(window).on('scroll',
        {
            previousTop: 0
        }, function () {
            var currentTop = $(window).scrollTop();
            //check if user is scrolling up
            if (currentTop < this.previousTop ) {
                //if scrolling up...
                if (currentTop > 0 && $('.cd-header').hasClass('is-fixed')) {
                    $('.cd-header').addClass('is-visible');
                } else {
                    $('.cd-header').removeClass('is-visible is-fixed');
                }
            } else {
                //if scrolling down...
                $('.cd-header').removeClass('is-visible');
                if( currentTop > headerHeight && !$('.cd-header').hasClass('is-fixed')) $('.cd-header').addClass('is-fixed');
            }
            this.previousTop = currentTop;
        });
    }

    //open/close primary navigation
    $('.cd-primary-nav-trigger').on('click', function(){
        $('.cd-menu-icon').toggleClass('is-clicked');
        $('.cd-header').toggleClass('menu-is-open');

        //in firefox transitions break when parent overflow is changed, so we need to wait for the end of the trasition to give the body an overflow hidden
        if( $('.cd-primary-nav').hasClass('is-visible') ) {
            $('.cd-primary-nav').removeClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
                $('body').removeClass('overflow-hidden');
            });
        } else {
            $('.cd-primary-nav').addClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
                $('body').addClass('overflow-hidden');
            });
        }
    });
});

希望有人能帮忙。


重现:(使用JsFiddle Example )

  1. 打开菜单(点击“汉堡包”图标框区域)
  2. 点击叠加层上的任何链接,当它出现时。 (即“1”、“2”、“3”、“4”)
  3. 结果:叠加层关闭,但菜单图标不会切换回来。

最佳答案

我认为您已经在 1, 2, 3, 4 上实现了自定义点击事件<script> 中的链接在 HTML 部分标记 (第 253 行)

只需替换 <script>标记如下:

<script>
  $('.cd-primary-nav a').on('click', function(){
  $('.cd-menu-icon').removeClass('is-clicked');
  $('.cd-header').removeClass('menu-is-open');
  $('.cd-primary-nav').removeClass('is-visible').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend',function(){
    $('body').removeClass('overflow-hidden');
  });
  });
</script>

JSFiddle:https://jsfiddle.net/c9dj010v/

关于javascript - 菜单图标切换问题 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277846/

相关文章:

javascript - 3d flip + slick.js 在第一次旋转后自动翻转

javascript - 在 for 循环 jquery 中使用 one()

javascript - 在拖动一个 div 的同时,将另一个 div 与被拖动的 div 一起移动

javascript - 从动态创建的 div 动态创建 div

javascript - 用 JavaScript 将两个输入字段的结果结合起来?

javascript - 我正在将项目插入数组,但脚本变得无响应?

javascript - 使用过渡更改 Canvas 上的图像

javascript - 单击链接按钮时打开一个新选项卡

html - 三个 div 并排,中间有间距

javascript - 图像变色时如何改变颜色和显示工具提示?