html - 水平导航栏不适用于指定的宽度

标签 html css css-float

我正在尝试使用 CSS 创建水平导航栏。

奇怪的是,如果我为我的 ol 标签设置宽度,水平 float 将不起作用。如果我删除 width,它会按预期工作。

是什么导致了这个问题?

CSS:

nav {
    position: absolute;
    height: 40px;
    width: 100%;
    top: 240px;
    background-color: #8F8E93;
    float: left;
}

nav ol {
    width: 300px;
}


nav ol li {
    float: left;
}

nav>ol>li>a {
    display: block;
}

HTML:

<nav>
  <ol>
    <li><a href="reiseziele.html">Reiseziele</a></li>
    <li><a href="kontakt.html">Kontakt</a>
      <ol>
        <li><a href="kontakt_mail.html">E-Mail</a></li>
        <li><a href="kontakt_formular.html">Formular</a></li>
      </ol>
    </li>
  </ol>
</nav>

最佳答案

您必须为 li 提供 width,但在使用 css 选择器时要小心,否则它也会影响内部 li。

并将此 css 用于内部 li 以避免向左浮动,这样它们就可以像子菜单一样工作。

nav ol li ol li{
  float:none !important;;
}

和外层 ol li

nav ol li {
    float: left;
    width:50%;
}

我已经将 float:none 覆盖到 inner child,这样他们就可以进入下拉列表。

参见 Demo

注意 始终在使用 float 之后使用 clear:both 否则如果宽度不够好会产生空白问题。

关于html - 水平导航栏不适用于指定的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40626675/

相关文章:

html - 如何将文本环绕在 float 的固定图像周围?

javascript - 提交表单并重定向页面

html - 重新调整浏览器窗口大小时,导航栏按钮会堆叠在一起

CSS3 过渡 - 向同一元素添加 2 种不同的过渡

html - 同时使用 `position: absolute` 和 `float: left` 时的预期行为是什么?

html - 元素不 float 吗?

html - iframe 内容不能出现在 Firefox 中

javascript - HTML input type=file,提交表单前获取图片

php - 在 <a> 标签中使用 'name' 属性以在 $_POST 中使用

html - 对齐 <div> 内的复选框