如何在窗口大小调整

时间:2015-11-11 01:12:12

标签: javascript wordpress twitter-bootstrap navigation storefront

我注意到许多wordpress主题中使用的bootstrap导航菜单,包括相对常见且免费的Storefront WooTheme,在功能上似乎有些不完整。我最近遇到的一个问题是,当您调整窗口大小以便在小窗口上获得压缩导航按钮时,您单击该按钮以展开菜单(以查看“主页”,“购物”等) ...),然后当你将窗口调整到一个非常大的尺寸并且导航菜单仍然打开时,它就会消失,因为它仍然处于切换状态。

所以问题是如何更新主题以解决此问题,以便在调整窗口大小时菜单切换为关闭?

2 个答案:

答案 0 :(得分:0)

在javaScript中添加这样的内容会在窗口中添加一个事件监听器,触发调整大小时导航按钮的切换:

if(window.attachEvent) {
        window.attachEvent('onresize', function() {
        alert('attachEvent - resize');
        if ( -1 !== container.className.indexOf( 'toggled' ) ) {
        container.className = container.className.replace( ' toggled', '' );
        button.setAttribute( 'aria-expanded', 'false' );
        menu.setAttribute( 'aria-expanded', 'false' );
    }
        });
}
else if(window.addEventListener) {
        window.addEventListener('resize', function() {
        //console.log('addEventListener - resize');
        if ( -1 !== container.className.indexOf( 'toggled' ) ) {
        container.className = container.className.replace( ' toggled', '' );
        button.setAttribute( 'aria-expanded', 'false' );
        menu.setAttribute( 'aria-expanded', 'false' );
    }
        }, true);
}
else {
        //The browser does not support Javascript event binding
}

您可以通过将... / themes / storefront / inc / js / navigation.js和navigation.min.js文件复制到您孩子主题下的adir,然后将上面的内容添加到复制的内容中,将其添加到Storefront WooTheme navigation.js文件(我在button.onclick块之后添加它),然后将整个文件复制并粘贴到脚本电容器(可在线提供)以最小化脚本,然后替换navigation.min.js文件的现有内容在您的孩子主题中使用浓缩代码,当然保存。

然后,因为子主题中的JavaScripts不会自动覆盖它们的父主题对应物,所以你必须将它们排列为:

add_action('wp_enqueue_scripts', 'wpse26822_script_fix', 20120207);
function wpse26822_script_fix()
{
    wp_dequeue_script('storefront-navigation');
    wp_enqueue_script('my_storefront-navigation', get_stylesheet_directory_uri().'/js/navigation.min.js', array('jquery'),20151110,true);
}

在这种情况下,wp_enqueue_scripts由父级调用,优先级为20120206(日期),因此添加的操作优先级稍大一些,以便立即出列。然后,接下来的后面的enqueue语句实际上是优先级,以确保它在旧的队列出列后加载。在这种情况下,“true”也很重要,因为它指定它将在页脚中排队,这是父脚本首次排队的位置。

答案 1 :(得分:0)

将“.menu_class”替换为菜单ul。

的类

$(window).resize(function(){

  if ($(window).width() > 992) {
    $(".menu_class").removeAttr("style");
  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>