5

我是 css 和 html5 的新手,并试图让我的菜单栏正常工作。它是一个具有下拉功能的水平菜单栏。在我将菜单栏居中之前,导航按钮和下拉按钮之间没有空格。居中后,它们之间现在有一个令人讨厌的空间,因为当您在它们之间移动时,下拉菜单更是如此,您会因为空间而丢失下拉菜单。因此,我试图删除按钮之间的空间(而不是边框​​)。非常感谢您的帮助,代码如下:

CSS

  /* START NAV MENU */

  nav {
  background-color:#333333;
  height:40px;
  width:100%;
  }


  nav ul {
  font-family: Sonoma, Arial;
  font-size: 20px;
  margin: 0;
  padding: 0;
  list-style: none;
  text-align:center;
  }

  nav ul li {
  display: inline-block;
  position: relative;

  }

  nav li ul { 
  display: none; 
  }

  nav ul li a {
  display: inline-block;
  text-decoration: none;
  background: #666666;
  color: #ffffff;  
  padding: 5px 20px 3px 15px;
  margin-left: 1px;
  white-space: nowrap;
  height:30px; /* Width and height of top-level nav items */
  width:90px;
  text-align:center;
  border-right: 3px solid black;
  border-left: 3px solid black;

  }

  nav ul li a:hover { 
  background: #999999; 
  }

  nav li:hover ul {
  display: block;
  position: absolute;
  height:30px;
  }

  nav li:hover li {
  float: none;
  font-size: 11px;

  }

  nav li:hover a { 
  background: #534635; 
  height:30px; /* Height of lower-level nav items is shorter than main level */
  }

  nav li:hover li a:hover { 
  background: #999999; 
  }

  nav ul li ul li a {
    text-align:left;
  }

  /* END NAV MENU */

用于资产净值的 HTML:

  <nav>
  <ul>
  <li><a href="/">Home</a></li>
  <li><a href="/about">About Us</a>
    <ul>
        <li><a href="/crew">Our Crew</a></li>
        <li><a href="/history">History</a></li>
        <li><a href="/vision">Vision</a></li>
    </ul>
  </li>
  <li><a href="/products">Services</a>
    <ul>
        <li><a href="/carpentry">Carpentry</a></li>
        <li><a href="/waterproof">Waterproofing</a></li>
        <li><a href="/concrete">Concrete</a></li>
        <li><a href="/masonry">Masonry</a></li>
        <li><a href="/prop">Property Maintenance</a></li>
        <li><a href="/metal">Metal Construction</a></li>
        <li><a href="/design">Interior Design</a></li>
        <li><a href="/demo">Demo & Salvage</a></li>
    </ul>
  </li>
  <li><a href="/services">Portfolio</a>
  </li>          
  <li><a href="/contact">Contact</a>
    <ul>
        <li><a href="/email">Via Email</a></li>
        <li><a href="/contact_form">Web Form</a></li>
        <li><a href="/pigeon">Carrier Pigeon</a></li>
    </ul>
  </li>
  </ul>
  </nav>

如果您能解释一下发生了什么变化以及为什么会发生变化,我将不胜感激,谢谢!

4

3 回答 3

2

浮动确实是一种选择,但您还有其他可能更可取的选择,因为它们允许您保持内联块样式及其相关优势。

Chris Coyier 的文章 Fighting the Space Between Inline Block Elements http://css-tricks.com/fighting-the-space-between-inline-block-elements/详细介绍了每一篇,但总的来说,这是由关闭之间的空白引起的</li>和下一个<li>

您的选择如下:

</li>从每个列表项中删除结束。

<li><a href="/crew">Our Crew</a>
<li><a href="/history">History</a>
<li><a href="/vision">Vision</a>

它是有效的 HTML5,不会破坏任何东西。

删除空格,这样您的列表标记几乎都在一行上

<li><a href="/crew">Our Crew</a></li><li><a href="/history">History</a></li>
    <li><a href="/vision">Vision</a>

注释掉空格

<li><a href="/crew">Our Crew</a></li><!--
--><li><a href="/history">History</a></li><!--
--><li><a href="/vision">Vision</a></li>

将父级的字体大小设置为0

ul {
    font-size: 0;
}

设置负右边距以缩小差距

a {
    margin-right: -4px;
}

就我个人而言,我更喜欢删除结束标签,因为其他标签看起来太乱而且 font-size: 0 在使用相对大小时效果不太好,但这取决于你,它们都以自己的方式很好。

于 2013-01-23T19:26:23.280 回答
1

您必须浮动<li>'s left 而不是 display:inline-block;

 nav ul li {
  float: left; 
  position: relative;

  }

比你必须计算width:<ul>修复它,还要<ul>margin: 0 auto;菜单居中。

nav ul {
width: calculated-width
margin: 0 auto
}
于 2013-01-23T18:16:00.173 回答
0

对 margin 属性使用负值

margin-right: negative val;
于 2017-02-20T11:36:45.497 回答