javascript - 移动子导航不会在一半时间内展开

标签 javascript jquery html css

我一直在关注this到目前为止,我对 JavaScript 或 jQuery 的了解非常少。在使用上述教程制作响应式暴徒导航的网站时,我遇到了问题。

问题: 根据启动我的 html 文档时浏览器的大小,如果浏览器在大约 600px 的范围内启动,但在较小的屏幕尺寸或缩小(有时)时启动时工作。我一直在想办法解决这个问题

我的代码(试着保留它,抱歉,抱歉):

$(document).ready(function() {

    //Creating the show/hide function with jQuery Toggle
    $("#navToggle a").on ('click', function(event){
        event.preventDefault();
	
		
        $("header > nav").slideToggle("medium");
        $("#logo").toggleClass("menuUp menuDown");
    });
    
    //Tidying up the Navigation Menu
    $(window).resize(function() {
        if($( window ).width() >= "600") {
            $("header > nav").css("display", "block");
			$("header > nav > ul > li > a").siblings().removeAttr("style");

     
            if($("#logo").attr('class') == "menuDown") {
                $("#logo").toggleClass("menuUp menuDown");
            }
        }
        else {
            $("header > nav").css("display", "none");
			//document.getElementById("categories").href = "categories/index.html";
        }
    });


    //Creating the Drop Down Menu for Mobile Devices
    $("header > nav > ul > li > a").click(function(e) {
        if($( window ).width() <= "600") {
            if($(this).siblings().size() > 0 ) {
                         event.preventDefault();
                $(this).siblings().slideToggle("fast")
				$(this).children(".toggle").html($(this).children(".toggle").html() == 'close' ? 'expand' : 'close');
            }
        }
    });
    
});
.clearfix:before,
.clearfix:after {
	content: " ";
	display: table;
}
.clearfix:after {
	clear: both;
    visibility: hidden;
}
.clearfix {
	*zoom: 1;
}

/* Navigation */
/* Mobile */
    header > div#logo {
        line-height: 70px;
        position: relative;
    }
    
    header > .menuDown {
        box-shadow: 0 3px 5px rgba(0,0,0,.15);
    }
    
    header > .menuUp {
        box-shadow: none;
    }
    
        header > div#logo > h1 {
            font-size: 48px; font-size: 3rem; /* 48px fallback */
            font-weight: bold;
            text-rendering: optimizeLegibility; 
        }
        
        header > div#logo > div#navToggle {
            background-color: rgba(0,0,0,.15);
            position: absolute;
            right: 0;
            top: 0;
            transition: 300ms all ease;
        }
            
            header > div#logo > div#navToggle:hover {
                background-color: rgba(0,0,0,.1);
            }
            
            header > div#logo > div#navToggle > a {
                color: rgba(255,255,255,.85);
                display: block;
                font-size: 0.85em;
                font-weight: 600;
                padding: 0 2.5rem;
                text-decoration: none;
                transition: 300ms all ease;
            }
            
                header > div#logo > div#navToggle:hover > a {
                    color: rgba(255,255,255,1);
                }

    header > nav {
        background-color: rgba(0,0,0,0.20);	
        display: none;
        flex: 1;
        transform: 300ms all ease;
    }
    
        header nav > ul {
            list-style-type: none;    
        }
        
            header nav > ul > li {
                border-bottom: 1px dotted rgba(0,0,0,.1);
                position: relative;
            }
            
                header nav > ul > li:last-of-type {
                    border-bottom: none;    
                }
            
                header nav > ul > li > a {
                    display: block;
                    color: rgba(0,0,0,.65);
                    font-weight: 700;
                    padding: 1.5rem 0;
                    text-decoration: none;
                    transition: 250ms all ease;
                }
                
                header nav > ul > li > a:visited {
                    color: rgba(0,0,0,.65);
                }
				
					header nav > ul > li > a span.toggle {
						background-color: rgba(0,0,0,.05);
						border-radius: 3rem;
						color: rgba(0,0,0,.25);
						font-size: 0.75em;
						font-weight: 500;
						padding: 2px 8px;
						text-transform: lowercase;	
					}
					
					header nav > ul > li > a span.caret {
                        display: none;
					}
                
                    header > nav > ul > li:hover > a {
                        color: rgb(140, 193, 193);  
                    }
                
            header > nav > ul > li > nav {
                background-color: rgb(51,51,51);
                border-radius: 1.5em;
                box-shadow: 0 2px 8px rgba(0,0,0,.6);
                display: none;
                overflow: hidden;
                position: absolute;
                right: 5%;
                width: 90%;
                z-index: 100;
                text-align: left;
            }
            
                header > nav > ul > li > nav > ul > li > a {
                    color: rgba(255,255,255,.85);
                    transition: 300ms all ease;
                    font-size: 14px; /* Modify till find correct size */
                }
                
                header > nav > ul > li > nav > ul > li > a:visited {
                    color: rgba(255,255,255,.85);
                }
                
                    header > nav > ul > li > nav > ul > li:hover > a {
                        background-color: rgba(0,0,0,.6);
                        color: rgba(255,255,255,1);
                    }

@media only screen and (min-width: 48rem) {
    /* For tablets @768px: */
    header > div#logo > div#navToggle {
        display: none;    
    }
    
    header {
        background-color: white;
        flex-direction: row;
        line-height: 90px;
        padding: 0 3rem;
		position: fixed;
		width: 100%;
		display:inline;
    }
    
        header > div#logo {
            background-color: transparent;
            line-height: 90px;
        }
    
            header > div#logo > h1 {
                color: rgb(140, 193, 193);
            }
            
    header > nav {
        background-color: transparent;
        display: block;
    }
    
        header > nav > ul {
            display: flex;
            flex-flow: row wrap;
            justify-content:space-around;
        }
		     
            header nav > ul > li {
                border-bottom: none;
            }
    
                header nav > ul > li > a {
                    padding: 0 1.25rem;
                }
					
					header nav > ul > li > a span.toggle {
						display: none;	
					}
					
					header nav > ul > li > a span.caret {
                        border-bottom: 4px solid transparent;
                        border-top: 4px solid rgba(0,0,0,.65);
                        border-right: 4px solid transparent;
                        border-left: 4px solid transparent;
						border-radius: 1px;
						content: "";
						display: inline-block;
						height: 0;
						margin: 0 0 0 .25rem;
						transition: 250ms all ease;
						width: 0;
						vertical-align: middle;
					}
					
						header nav > ul > li:hover > a span.caret {
							border-top-color: rgb(140, 193, 193);
							transform: rotate(270deg); 
						}
    
    header > nav > ul > li:hover > nav {
        background-color: rgb(51,51,51);
        border-radius: .25em;
        box-shadow: 0 2px 8px rgba(0,0,0,.6);
        display: block;
        line-height: 3em;
        right: -50%;
        width: 12.25rem; /* 196px */
    }
}
	@media screen and (min-width: 95.625rem) {
   header {
    display:flex	
	  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
  <body>
    <head>
    	<meta charset="utf-8">
        <meta name="description" content="Daily technology walkthroughs for everyones needs ">
        <meta name="HandheldFriendly" content="True">
        <meta name="MobileOptimized" content="320">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    	<title>The Daily Tech Walkthroughs</title>
    </head>
    
    <header class="clearfix">
   		<div id="logo" class="menuUp">
     		<h1><a href="index.html"> The Daily Tech <br> Walkthroughs </a></h1> 
     		<div id="navToggle"><a href="#">Menu</a></div>
        </div>
      
     <nav class="clearfix primary-nav">
        	<ul>
                <li><a href="index.html">Home</a></li>
                <li><a href="walkthroughs/index.html">Walkthroughs</a></li>
                  <li id="mobile-version-click">
                  	<a href="categories/index.html"> Categories <span class="toggle">Expand</span><span class="caret"></span></a>
                    <nav>
                          <ul>
                              <li><a href="categories/index.html">All Categories</a></li>
                              <li><a href="categories/computers/index.html">Computers</a></li>
                              <li><a href="categories/consoles/index.html">Consoles</a></li>
                              <li><a href="categories/phones-tablets/index.html">Phones and Tablets</a></li>
                              <li><a href="categories/gadgets/index.html">Gadgets</a></li>
                              <li><a href="categories/other-tech/index.html">Other Technology</a></li>
                          </ul>
                      </nav>
                  </li>
                <li><a href="create_a_walkthrough.html">Create a Walkthrough</a></li>
                <li><a href="help/index.html">Help</a></li>
                <li><a href="about.html">About</a></li>
                <li id="mobile-version-click">
                	<a href="users/index.html">User <span class="toggle">Expand</span><span class="caret"></span></a>
            		<nav>
                          <ul>
                              <li><a href="users/index.html">Profile</a></li>
                              <li><a href="users/settings.html">Settings</a></li>
                              <li><a href="users/logout.html">Logout</a></li>
                          </ul>
                    </nav>
                  </li>
                <li><div class="search"><input type="search" placeholder="search..." /></div></li>
			</ul>               
        	</nav>
   </header>
  </body>
</html>

最佳答案

问题是我的一个愚蠢的疏忽,在我更改了我的 css 中的断点之后,我忘记了在我的 javascript 中更改我的屏幕尺寸值。值必须从 600px 更改为 767px 才能使 javascript 正常工作。

以下 javascript 的更改。

$(document).ready(function() {

//Creating the show/hide function with jQuery Toggle
$("#navToggle a").on ('click', function(event){
    event.preventDefault();


    $("header > nav").slideToggle("medium");
    $("#logo").toggleClass("menuUp menuDown");
});

//Tidying up the Navigation Menu
$(window).resize(function() {
    if($( window ).width() >= "767") {
        $("header > nav").css("display", "block");
        $("header > nav > ul > li > a").siblings().removeAttr("style");


        if($("#logo").attr('class') == "menuDown") {
            $("#logo").toggleClass("menuUp menuDown");
        }
    }
    else {
        $("header > nav").css("display", "none");
        //document.getElementById("categories").href = "categories/index.html";
    }
});


//Creating the Drop Down Menu for Mobile Devices
$("header > nav > ul > li > a").click(function(e) {
    if($( window ).width() <= "767") {
        if($(this).siblings().size() > 0 ) {
                     event.preventDefault();
            $(this).siblings().slideToggle("fast")
            $(this).children(".toggle").html($(this).children(".toggle").html() == 'close' ? 'expand' : 'close');
        }
    }
});

});

关于javascript - 移动子导航不会在一半时间内展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935171/

相关文章:

asp.net - 选择 Accordion 选项卡时切换子元素的类

javascript - Django - 使用 block 仅重新加载正文页面而不刷新整个页面

javascript - 可见时动画盒阴影

javascript - 从编号列表中选中的行收集数据

javascript - 使用 Jquery 从所有元素创建一个字符串

javascript - 如何以更优雅的方式编写闪烁

javascript - 使用 jQuery 获取 DOM 中的后代节点

javascript - 位置 0 Angular2 的 JSON 中的 SyntaxError unexpected token u

jquery - Accordion 与 jQuery "Chosen"选择 : height becomes too large before snapping back

html - 如何更改打开的 Bootstrap 下拉切换的颜色?