【问题标题】:How can I add another level to this responsive horizontal nav?如何为这个响应式水平导航添加另一个级别?
【发布时间】:2016-06-30 09:57:45
【问题描述】:

我正在尝试为具有额外级别的网站构建响应式导航。我将如何更新以下 html/css/javascript 来实现这一点?我知道这是一个很大的问题,但我希望有人知道答案。这是我的代码:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Resposive Multi Level Horizontal Nav?</title>
    <!--nav styles-->
    <style>
        .show
        {
            display: block;
        }
        nav
        {
            width: 100%;
            float: left;
            font-family: 'Oswald', sans-serif;
            font-size: 100%;
            color: #252525;
            border-bottom: 4px solid #0069d4;
            border-top: 4px solid #0069d4;
            background-color: #fff;
        }
        ul
        {
            list-style: none;
            margin: 0;
            padding: 0;
        }
        li
        {
            display: inline;
        }
        a
        {
            text-decoration: none;
            color: #fff;
        }
        li a
        {
            height: 60px;
            line-height: 60px;
            float: left;
            display: block;
            background-color: #fff;
            padding: 0 20px;
            color: #252525;
        }
        li a:hover
        {
            background-color: #0069d4;
            color: #fff;
            -webkit-transition-duration: 0.3s;
            transition-duration: 0.3s;
        }

        #i-nav
        {
            display: none;
            float: right;
            padding: 20px 20px;

        }
        @media (max-width: 1024px)
        {
            nav
            {
                width: 100%;
                padding: 0;
                margin: 0;
            }
            ul
            {
                width: 100%;
                display: none;
            }
            li a
            {
                width: 100%;
                padding: 0;
                margin: 0;
                text-align: center;
            }
            #i-nav
            {
                display: block;

            }
        }
    </style>
    <!--google fonts-->
    <link href='https://fonts.googleapis.com/css?family=Oswald:400,700,300' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'>
    <!--font awesome-->
    <link href="font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <nav>
        <div><a id="i-nav" href="#"><i class="fa fa-bars fa-2x" aria-hidden="true" style="color:#0069d4;"></i></a></div>
        <ul>
            <li><a href="#">HOMEPAGE</a><li>
            <li><a href="#">PROGRAMS</a>
                <!-- add extra level here
                    <ul>
                        <li><a href="#">Program 1</a></li>
                        <li><a href="#">Program 2</a></li>
                        <li><a href="#">Program 3</a></li>
                        <li><a href="#">Program 4</a></li>
                        <li><a href="#">Program 5</a></li>
                    </ul>
                -->
            <li>
            <li><a href="#">MEMBERSHIP</a><li>
            <li><a href="#">NEWS</a><li>
            <li><a href="#">GALLERY</a><li>
            <li><a href="#">CONTACT</a><li>
        </ul>
    </nav>
    <!-- jquery -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <!-- script to toggle mobile menu -->
    <script>
        $(document).ready(function(){
            $('#i-nav').click(function(){
                $('ul').toggleClass('show');
            });
        });
    </script>
</body>
</html>

【问题讨论】:

  • 希望您至少尝试自己编写代码。 Stack Overflow 不是代码编写服务。我建议您通过 Google 或通过搜索 SO 进行一些额外的研究,然后尝试一下。如果您仍然遇到问题,请返回您的代码并解释您尝试过的方法以及为什么它不起作用。
  • 我没有尝试编写子菜单,因为我不知道从哪里开始。我确实包括了我已经拥有的东西

标签: javascript jquery html css responsive-nav


【解决方案1】:

我今天感觉很慈善……但以后请尝试自己编写代码,如果尝试几次后仍然无效,请在此处发布

在这里查看jsfiddle

给二级ul上课.submenu

以后我建议不要在li a 上使用float:left,而是在顶级liblock 子菜单li 上使用inline-block

添加了css代码:

ul.submenu { 
  position:absolute;
  top:100%; 
  display:none
}
ul.submenu li a { 
   display:block;
   float:none
}
nav li { 
   display:inline-block;
}
ul.submenu li { 
   display:block;
}
ul li:hover ul.submenu { 
   display:block
}
nav li  { 
   position:relative
}

也适用于移动菜单:jsfiddle

添加到媒体查询的代码:

ul.submenu { 
        position:relative;
        top:0%; 
        display:block;
        }
ul.submenu li { 
         display:block;
         }
ul.submenu li a{ 
          float:left;
          width:100%;
    }

以后不要在li a上使用line-heightheight

和加号。将来 。 提供一个示例,说明您针对特定问题所做的尝试!

否则你会得到像 Paulie 那样的 cmets。你不会得到答案。

让我知道这段代码是否成功

【讨论】:

  • 当菜单垂直显示移动设备时,这不起作用。
  • 好吧,我已经回答了您最初的问题,即使您没有提供任何代码来尝试解决您的问题。所以对于手机。自己试一下,让我看看你试过的代码
  • 您没有阅读我刚刚发送的问题的代码吗?所有的代码都在那里。把它复制到一个html文件中,你就能明白我的意思了。
  • 我的意思是针对您的特定问题的代码。例如。您尝试过但不起作用的移动子菜单的代码
  • 代码嵌入到问题附加的html中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 2017-02-22
  • 2021-12-25
相关资源
最近更新 更多