如何使用纯CSS创建水平导航菜单& CSS表?

时间:2016-05-09 22:57:36

标签: html css

我是新手&我正在尝试制作我提到的导航。我在这里得到了一个教程http://www.mattboldt.com/building-great-navbars-toolbars-display-table/。不幸的是,它使用了我不知道的SCSS,而不是纯CSS。

我的代码 - http://codepen.io/rsing4dev/pen/LNqvVN

<p>Please refer to my codepen for the code. 
I don't want to paste too much here & make the question big.

问题 - 当我将鼠标悬停在“服务”菜单上时,其子项或子菜单应显示为垂直列表,而不是水平列表。为什么不发生这种情况,我该如何解决?

谢谢!

PS - 我更喜欢不使用内联块和浮动而不是制作我的导航菜单。

2 个答案:

答案 0 :(得分:1)

内联块通常是最简单的方法。

内联块和表格单元格之间的主要区别在于您调整浏览器大小。如果您使用块调整浏览器的大小,那么它们将落在另一个下面 - 因为默认情况下表格单元格不会。

此处示例(调整输出窗口大小):

https://jsfiddle.net/dv7k720s/

您还可以查看haltersweb提供的解决方案以使用表格。

否则我也会按照w3schools教程快速重新制作你的菜单,你可以看看并尝试理解。

https://jsfiddle.net/LmLbefts/1/

<ul>
<li  class="dropdown">
    <a href="#" class="dropbtn">Services</a>
    <div class="dropdown-content">
      <a href="#">Our Services</a>
      <a href="#">Client List</a>
    </div>
  </li>
  <li><a href="#resources">Resources</a></li>
  <li><a href="#contact">Contact Us</a></li>
  <li><a href="#company">Company</a></li>
  <li><a href="#">
  <form class="searchbar" action="http://www.google.com/search" name="f" target="_blank" style="margin: 0px">
       <input type="hidden" name="any selected">
       <input size="10" name="q" value="" class="searchform" placeholder="Web Search">&nbsp;
       <input type="submit" value="Go!" name="btnG" class="searchbutton"><br>
  </form>
  </a></li>
</ul>

ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    background-image: linear-gradient(to top, rgba(9, 9, 44, 0.9), rgba(82, 82, 115, 0.9));
    line-height: 2em;
    text-align: center;
    vertical-align: middle;
}

li {
display:inline;
margin-left:2%;
margin-right:2%;

}


li a, .dropbtn {
    display: inline-block;
    color: white;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
}

li a:hover, .dropdown:hover .dropbtn {
/* To edit if you want a hover color   */
/*background-color: red;*/
}

li.dropdown {
    display: inline-block;
}

.dropdown-content {
    display: none;
    position: absolute;
    background-color: #f9f9f9;
    min-width: 160px;
    box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}

.dropdown-content a {
    color: black;
    padding: 12px 16px;
    text-decoration: none;
    display: block;
    text-align: left;
}

.dropdown-content a:hover {background-image: linear-gradient(to top, rgba(9, 9, 44, 0.9), rgba(82, 82, 115, 0.9)); color:white;}

.dropdown:hover .dropdown-content {
    display: block;
}

在这里使用基本的CSS,W3School有一个简单的教程,解释了如何创建垂直或水平导航栏:

链接:http://www.w3schools.com/css/css_navbar.asp

这里还有一个关于下拉菜单如何工作的教程:

http://www.w3schools.com/css/css_dropdowns.asp

这是预览它的样子。 enter image description here

答案 1 :(得分:1)

(参见仍在使用css表格显示的更新代码(如下)。)

您遇到的问题是:

1)您将top nav和subnav分配为表格,将所有单元格分配为table-cell。您只需要topnav及其列表项。

3)你需要能够让你的subnav“逃离”top-nav容器的范围,否则容器会增长到包含sub-nav。

看看我下面的例子,看看我是如何使用表格显示的,另外还使用绝对位置(与位置相对的父级 - 非常重要)来放置我的子空间。

#nav {
    background-image: linear-gradient(to top, rgba(9, 9, 44, 0.9), rgba(82, 82, 115, 0.9));
    line-height: 2em;
    width: 100%;
}
#nav ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
.main-nav-menu {
  display: table;
  width: 100%;
}
.main-nav-menu-item {
  display: table-cell;
  padding: 0;
  margin: 0;
  text-align: center;
  width: 20%;
  border-right: 1px solid #131332;
  position: relative;
}
.sub-nav-menu {
  background-color: gray;
  left: 0;
  position: absolute;
  width: 100%;
}

#nav a {
    text-decoration: none;
    color: #CFCFE0;
}

/*
CSS For the submenus of the main navigation menu.
*/
.sub-nav-menu {
    display: none;
}

.main-nav-menu:hover .sub-nav-menu {
    display: block;
}
<div id="nav">
  <ul class="main-nav-menu">
    <li class="main-nav-menu-item">
      <a href="#Services" class="nav-tab selected">Services</a>
      <ul class="sub-nav-menu">
        <li class="sub-nav-menu-item"><a href="#our-services">Our Services</a></li>
        <li class="sub-nav-menu-item"><a href="#client-list">Client List</a></li>
      </ul>
    </li>

    <li class="main-nav-menu-item">
      <a href="#Resources" class="nav-tab">Resources</a>
      <ul>
        <li></li>
        <li></li>
      </ul>
    </li>

    <li class="main-nav-menu-item">
      <a href="#Contact-Us" class="nav-tab">Contact Us</a>
      <ul>
        <li></li>
      </ul>
    </li>

    <li class="main-nav-menu-item">
      <a href="#Company" class="nav-tab">Company</a>
      <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>
    </li>

    <li class="main-nav-menu-item">
      <form class="searchbar" action="http://www.google.com/search" name="f" target="_blank" style="margin: 0px">
        <input type="hidden" name="any selected">
        <input size="10" name="q" value="" class="searchform" placeholder="Web Search">&nbsp;
        <input type="submit" value="Go!" name="btnG" class="searchbutton"><br>
      </form>
    </li>
  </ul>
</div>