Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML不响应媒体查询_Javascript_Html_Jquery_Css - Fatal编程技术网

Javascript HTML不响应媒体查询

Javascript HTML不响应媒体查询,javascript,html,jquery,css,Javascript,Html,Jquery,Css,这是我第一次使用媒体查询 我正在为一个网站构建一个导航栏,我希望它在达到某个设备宽度后(如中)从导航栏变为下拉列表。我已经将W3的设计融入到我自己的设计中,然而,似乎我无法改变我的导航栏 以下是我的相关CSS: ... Additional CSS Settings... .navigation-bar{ width:100%; list-style-type: none; margin:0; padding:0; background-color: #D

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

我正在为一个网站构建一个导航栏,我希望它在达到某个设备宽度后(如中)从导航栏变为下拉列表。我已经将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;
    }
}
以下是我的相关HTML:

<html>
  <head>
    <meta charset = "utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta content="width=device-width, initial-scale=1" name="viewport" />
    <title>Title</title>
    <link rel=stylesheet type="text/css" href="CS File">
  </head>
  <body>
    <h1><a href="index.html">Website Title</a></h1>
    <ul id="navigation" class="navigation-bar">
      <li><a href="#">Item 1</a></li>
      <li><a href="#">Item 2</a></li>
      <li><a href="#">Item 3</a></li>
      <li><a href="#">Item 4</a></li>
      <li><a href="#">Item 5</a></li>
      <li><a href="#">Item 6</a></li>
      <li><a href="#">Item 7</a></li>
      <li><a href="javascript:void(0);" class="icon" onclick="myFunction()"><i class="fa fa-bars"></i></a></li>
    </ul>
    <script type="text/javascript" src="JS File"></script>
    <script type="text/javascript" src="css3-mediaqueries.js"></script>
  </body>
</html>
这样,我的导航栏就完全没有响应了。我想知道我是否遗漏了需要包含在代码中的任何内容,或者是否遗漏了某些内容。我认为这可能与我的导航在一个列表中有关,但我不确定这会对代码产生什么影响,也不知道如何创建一个解决方案


W3示例代码:

与W3示例相比,您的代码不起作用的原因是CSS针对的元素与您的不同

基本上,你只需要调整它所说的
a
成为
li
(在你的CSS中)

我还必须从


你做了一切,只是有些事情你做错了,它们是:-

  • 您使用了
    ,没有任何理由,您可以只使用
  • 汉堡图标没有显示,因为您没有粘贴他们的CSS链接[
    ]。他们使用自定义链接显示汉堡图标
  • 我不知道您如何以及为什么没有正确地编写CSS文件名您编写了
    CS file
    而不是
    CS file.CSS
    ,因此您编写的CSS内容无法正常工作
  • 以下是我在您的HTML文件中所做的更改:-

        <html>
      <head>
        <meta charset = "utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta content="width=device-width, initial-scale=1" name="viewport" />
        <title>Title</title>
        <link rel=stylesheet type="text/css" href="CS File.css">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">  </head>
      <body>
        <h1><a href="index.html">Website Title</a></h1>
        <div id="navigation" class="navigation-bar">
          <a href="#">Item 1</a>
          <a href="#">Item 2</a>
          <a href="#">Item 3</a>
          <a href="#">Item 4</a>
          <a href="#">Item 5</a>
          <a href="#">Item 6</a>
          <a href="#">Item 7</a>
          <a href="javascript:void(0);" class="icon" onclick="myFunction()"><i class="fa fa-bars"></i></a>
        </div>
      </body>
    </html>
    
    现在谈到Java脚本,Java脚本中的所有内容都是正确的,因此无需编辑,因为它与以前的相同:-

    function myFunction() {
        var x = document.getElementById("navigation");
        if (x.className === "navigation-bar") {
          x.className += " responsive";
        } else {
          x.className = "navigation-bar";
        }
      }
    
    是啊!您可以做的一件事是添加过渡,它看起来非常棒


    希望有帮助

    在javascript函数中,您需要使用空格而不是句点来
    +=“responsive”
    。@TJBlackman谢谢!我已经修好了,但是仍然不起作用。您的预期输出是多少?你能澄清一下你想将响应类添加到你的nav中吗?我的预期输出将类似于我在文章中包含的示例中W3导航栏的工作方式。对于任何900+px的浏览器宽度,都会将导航显示为导航栏。任何低于900px的浏览器宽度都将更改为下拉列表。换句话说,我想显示一个导航栏,直到浏览网站的设备的宽度将导致导航栏重叠为两行,之后将显示为下拉列表(我包括了W3的示例,我正在尝试模拟)。工作起来很有魅力!我有一种感觉,它与我的导航被表示为一个列表有关,然而,我不知道为什么这会影响它。非常感谢你!感谢您花时间创建另一个解决方案!我主要使用
    • 元素来模拟层次结构,因为我将来可能最终希望将这些项扩展为下拉列表(保留
    • 中包含的所有内容),并使HTML更加结构化,因为导航栏本质上是一个链接列表。我发现了第二个错误;那是我忘了包括的其他东西。在我的代码中,它实际上并没有说CSS文件,但我暗示它是指向实际CSS文件的链接。我会把它改得更具体一些。非常感谢。没问题,这取决于个人对个人的喜好。您可以使用
      • 它没有问题,只是您需要更改一些代码,这不是什么大麻烦@德克斯特的回答比我的正确得多
        /* ... Additional CSS Settings... */
        .navigation-bar{
            width:100%;
            list-style-type: none;
            margin:0;
            padding:0;
            background-color: #DDDDDD;
            overflow:hidden;
        }
        
        .navigation-bar a{
            display:inline;
            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;
            }
        }
        
        function myFunction() {
            var x = document.getElementById("navigation");
            if (x.className === "navigation-bar") {
              x.className += " responsive";
            } else {
              x.className = "navigation-bar";
            }
          }