HTML 不响应媒体查询

这是我第一次使用媒体查询。


我正在为网站构建一个导航栏,我希望它在达到某个设备宽度后从导航栏更改为下拉列表(如https://www.w3schools.com/howto/howto_js_topnav_responsive.asp ). 我已经将 W3 的设计融入到我自己的设计中,但是,我似乎无法更改导航栏。


这是我的相关 CSS:


... Additional CSS Settings...

.navigation-bar{

    width:100%;

    list-style-type: none;

    margin:0;

    padding:0;

    background-color: #DDDDDD;

    overflow:hidden;

}

.navigation-bar li{

    display:inline;

}

.navigation-bar a{

    text-decoration: none;

    font-size: 120%;

    color: #000000;

    padding-left:1%;

    padding-right:1%;

    padding-top:0.5%;

    padding-bottom:0.5%;

    display:inline-block;

}

.navigation-bar a:hover{

    background-color:#999999;

}

.navigation-bar a.active{

    background-color: #999999;

}

.navigation-bar .icon{

    display:none;

}

... Additional CSS Settings..


@media screen and (max-width: 900px){

    .navigation-bar a:not(:first-child) {display: none;}

    .navigation-bar a.icon{

        float:right;

        display: block;

    }

}

@media screen and (max-width: 900px) {

    .navigation-bar.responsive {position: relative;}

    .navigation-bar.responsive a.icon {

      position: absolute;

      right: 0;

      top: 0;

    }

    .navigation-bar.responsive a {

      float: none;

      display: block;

      text-align: left;

    }

}

有了这个,我的导航栏根本没有响应。我想知道我是否遗漏了我需要包含在我的代码中的任何东西,或者我是否遗漏了什么。我认为这可能与我在列表中的导航有关,但我不确定这将如何影响代码,也不确定如何创建解决方法。

W3 的示例代码:https ://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_topnav


UYOU
浏览 75回答 2
2回答

Helenr

与 W3Schools 示例相比,您的代码不起作用的原因是因为 CSS 与您的相比针对不同的元素。基本上你只需要调整它所说a的位置li(在你的 CSS 中)。我还必须class="icon"从<a>元素中删除并将其添加到相关的<li>(在 HTML 中)。请参阅下面的示例;function myFunction() {&nbsp; &nbsp; var x = document.getElementById("navigation");&nbsp; &nbsp; if (x.className === "navigation-bar") {&nbsp; &nbsp; &nbsp; x.className += " responsive";&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; x.className = "navigation-bar";&nbsp; &nbsp; }&nbsp; }.navigation-bar{&nbsp; &nbsp; width:100%;&nbsp; &nbsp; list-style-type: none;&nbsp; &nbsp; margin:0;&nbsp; &nbsp; padding:0;&nbsp; &nbsp; background-color: #DDDDDD;&nbsp; &nbsp; overflow:hidden;}.navigation-bar li{&nbsp; &nbsp; display:inline;}.navigation-bar li{&nbsp; &nbsp; text-decoration: none;&nbsp; &nbsp; font-size: 120%;&nbsp; &nbsp; color: #000000;&nbsp; &nbsp; padding-left:1%;&nbsp; &nbsp; padding-right:1%;&nbsp; &nbsp; padding-top:0.5%;&nbsp; &nbsp; padding-bottom:0.5%;&nbsp; &nbsp; display:inline-block;}.navigation-bar li:hover{&nbsp; &nbsp; background-color:#999999;}.navigation-bar li.active{&nbsp; &nbsp; background-color: #999999;}.navigation-bar .icon{&nbsp; &nbsp; display:none;}@media screen and (max-width: 900px){&nbsp; &nbsp; .navigation-bar li:not(:first-child) {display: none;}&nbsp; &nbsp; .navigation-bar li.icon{&nbsp; &nbsp; &nbsp; &nbsp; float:right;&nbsp; &nbsp; &nbsp; &nbsp; display: block;&nbsp; &nbsp; }}@media screen and (max-width: 900px) {&nbsp; &nbsp; .navigation-bar.responsive {position: relative;}&nbsp; &nbsp; .navigation-bar.responsive li.icon {&nbsp; &nbsp; &nbsp; position: absolute;&nbsp; &nbsp; &nbsp; right: 0;&nbsp; &nbsp; &nbsp; top: 0;&nbsp; &nbsp; }&nbsp; &nbsp; .navigation-bar.responsive li {&nbsp; &nbsp; &nbsp; float: none;&nbsp; &nbsp; &nbsp; display: block;&nbsp; &nbsp; &nbsp; text-align: left;&nbsp; &nbsp; }}<html>&nbsp; <head>&nbsp; &nbsp; <meta charset = "utf-8">&nbsp; &nbsp; <meta http-equiv="X-UA-Compatible" content="IE=edge">&nbsp; &nbsp; <meta content="width=device-width, initial-scale=1" name="viewport" />&nbsp; &nbsp; <title>Title</title>&nbsp; &nbsp; <link rel=stylesheet type="text/css" href="CS File">&nbsp; &nbsp; <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">&nbsp; </head>&nbsp; <body>&nbsp; &nbsp; <h1><a href="index.html">Website Title</a></h1>&nbsp; &nbsp; <ul id="navigation" class="navigation-bar">&nbsp; &nbsp; &nbsp; <li><a href="#">Item 1</a></li>&nbsp; &nbsp; &nbsp; <li><a href="#">Item 2</a></li>&nbsp; &nbsp; &nbsp; <li><a href="#">Item 3</a></li>&nbsp; &nbsp; &nbsp; <li><a href="#">Item 4</a></li>&nbsp; &nbsp; &nbsp; <li><a href="#">Item 5</a></li>&nbsp; &nbsp; &nbsp; <li><a href="#">Item 6</a></li>&nbsp; &nbsp; &nbsp; <li><a href="#">Item 7</a></li>&nbsp; &nbsp; &nbsp; <li class="icon"><a href="javascript:void(0);" onclick="myFunction()"><i class="fa fa-bars"></i></a></li>&nbsp; &nbsp; </ul>&nbsp; &nbsp; <script type="text/javascript" src="JS File"></script>&nbsp; &nbsp; <script type="text/javascript" src="css3-mediaqueries.js"></script>&nbsp; </body></html>

慕村225694

你已经做了一切,只是有些事情你做错了他们是:-你<ul>, <li>无缘无故地使用了你本可以只使用<div>and&nbsp;<a>。那个汉堡包图标没有显示,因为你没有粘贴他们的 CSS 链接 [&nbsp;<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">]。他们使用他们的自定义链接来显示汉堡包图标。我不知道你是如何以及为什么没有正确地写你写的 CSS 文件名CS File不是CS File.css因为你写的 CSS 内容不起作用那么,这些是我在您的 HTML 文件中所做的更改:-&nbsp; &nbsp; <html>&nbsp; <head>&nbsp; &nbsp; <meta charset = "utf-8">&nbsp; &nbsp; <meta http-equiv="X-UA-Compatible" content="IE=edge">&nbsp; &nbsp; <meta content="width=device-width, initial-scale=1" name="viewport" />&nbsp; &nbsp; <title>Title</title>&nbsp; &nbsp; <link rel=stylesheet type="text/css" href="CS File.css">&nbsp; &nbsp; <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">&nbsp; </head>&nbsp; <body>&nbsp; &nbsp; <h1><a href="index.html">Website Title</a></h1>&nbsp; &nbsp; <div id="navigation" class="navigation-bar">&nbsp; &nbsp; &nbsp; <a href="#">Item 1</a>&nbsp; &nbsp; &nbsp; <a href="#">Item 2</a>&nbsp; &nbsp; &nbsp; <a href="#">Item 3</a>&nbsp; &nbsp; &nbsp; <a href="#">Item 4</a>&nbsp; &nbsp; &nbsp; <a href="#">Item 5</a>&nbsp; &nbsp; &nbsp; <a href="#">Item 6</a>&nbsp; &nbsp; &nbsp; <a href="#">Item 7</a>&nbsp; &nbsp; &nbsp; <a href="javascript:void(0);" class="icon" onclick="myFunction()"><i class="fa fa-bars"></i></a>&nbsp; &nbsp; </div>&nbsp; </body></html>这是你的 CSS 代码,我稍微编辑了一下/* ... Additional CSS Settings... */.navigation-bar{&nbsp; &nbsp; width:100%;&nbsp; &nbsp; list-style-type: none;&nbsp; &nbsp; margin:0;&nbsp; &nbsp; padding:0;&nbsp; &nbsp; background-color: #DDDDDD;&nbsp; &nbsp; overflow:hidden;}.navigation-bar a{&nbsp; &nbsp; display:inline;&nbsp; &nbsp; text-decoration: none;&nbsp; &nbsp; font-size: 120%;&nbsp; &nbsp; color: #000000;&nbsp; &nbsp; padding-left:1%;&nbsp; &nbsp; padding-right:1%;&nbsp; &nbsp; padding-top:0.5%;&nbsp; &nbsp; padding-bottom:0.5%;&nbsp; &nbsp; display:inline-block;}.navigation-bar a:hover{&nbsp; &nbsp; background-color:#999999;}.navigation-bar a.active{&nbsp; &nbsp; background-color: #999999;}.navigation-bar .icon{&nbsp; &nbsp; display:none;}/* ... Additional CSS Settings.. */@media screen and (max-width: 900px){&nbsp; &nbsp; .navigation-bar a:not(:first-child) {display: none;}&nbsp; &nbsp; .navigation-bar a.icon{&nbsp; &nbsp; &nbsp; &nbsp; float:right;&nbsp; &nbsp; &nbsp; &nbsp; display: block;&nbsp; &nbsp; }}@media screen and (max-width: 900px) {&nbsp; &nbsp; .navigation-bar.responsive {position: relative;}&nbsp; &nbsp; .navigation-bar.responsive a.icon {&nbsp; &nbsp; &nbsp; position: absolute;&nbsp; &nbsp; &nbsp; right: 0;&nbsp; &nbsp; &nbsp; top: 0;&nbsp; &nbsp; }&nbsp; &nbsp; .navigation-bar.responsive a {&nbsp; &nbsp; &nbsp; float: none;&nbsp; &nbsp; &nbsp; display: block;&nbsp; &nbsp; &nbsp; text-align: left;&nbsp; &nbsp; }}现在在 Java Script 中使用 Java Script 一切都是正确的,因此无需编辑它与以前相同:-function myFunction() {&nbsp; &nbsp; var x = document.getElementById("navigation");&nbsp; &nbsp; if (x.className === "navigation-bar") {&nbsp; &nbsp; &nbsp; x.className += " responsive";&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; x.className = "navigation-bar";&nbsp; &nbsp; }&nbsp; }是的!您可以做的一件事是添加过渡效果,过渡效果看起来真的很棒。希望有帮助。!!!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript