css - float :left for <li> creates spacing above navigation bar

标签 css navigationbar

使用 float:left 样式化 li 标签是创建水平导航栏的标准方法。但每当我这样做时,整个导航栏列表就会与包含的 div 分开。

删除 float:left 会解决问题,但假设我想这样做。

HTML

<html>
<head>
  <link rel="stylesheet" type="text/css" href="temp.css" />
</head>
<body>
<div id="header">
  <h2>Demo: Navigation Bar</h2> 
  <ul id="navbar">
    <li>
      <a href="#">News</a>
    </li>
  </ul>
</div>
</body>
</html>

CSS

#header {
    margin: 10px;
    width: 8in;
    background-color: green;
    margin-left: auto; /* setting margin to auto centers block element */
    margin-right: auto; /* width must not be 100% */
}

#header ul { /* ul */
    list-style-type: none;
    padding: 0;
    margin-top: 0px;
}

#header li {
    display:block;
    float:left;
    background-color: silver;
    margin: 0;
}

非常感谢任何见解!

编辑: 解决方案是在列表后添加空的 div,或者将包含的 div 设置为 overflow:hidden。

在寻找为什么会发生这种情况的解释之后,我找到了一个解释一切的好链接!

http://css-tricks.com/all-about-floats/

最佳答案

诀窍是,使用 float - 使用 clearfixes。在您的情况下,在 header 结束标记前添加以下内容 </div> :

<div style="clear: both"></div>

考虑到其中的 float 元素,这将使标题拉伸(stretch)。

关于css - float :left for <li> creates spacing above navigation bar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148460/

相关文章:

html - 带有 <use> 的 SVG 图标 :hover not working in Chrome with external loading

javascript - 在 HTML 页面上定位 Javascript 标记

jquery - 如何在jquery中触发邻居元素到 "this"对象

css - 导航栏在 iPad 上不拉伸(stretch)全宽

objective-c - 如何更改导航栏背景

iphone - navigationController.navigationBarHidden 和 navigationController.navigationBar.hidden 有什么区别?

html - 如何定位元素,使其整齐地位于包裹线下方

javascript - Javascript 时钟上的奇怪行为

html - 使用 Bootstrap 折叠导航菜单后如何对齐导航链接

html - 在 css/html 中将导航选项卡排列为单行