html - CSS 下拉菜单 - 列表元素是静态的

标签 html css

我的编码方式可能看起来真的很愚蠢或完全错误。但是,当我在 CSS 中创建下拉菜单时,新的 li 元素会被推到页面的另一侧,而不是容器框中。我该如何解决这个问题?

enter image description here

代码如下:

<nav>
    <div class="wrapper">
        <div class="brand">
            <a href="index.html"><img class="UKLogo" src="images/logo.png" alt=""></a>
        </div> <!-- brand -->

        <div class="navigation">
            <ul class="nav-ul">
                <a href="index.html"><li> HOME </li></a>
                <a href="about.html"><li> ABOUT </li></a>
                <a href="#">
                <li class="course-li"> 
                    COURSES 
                        <ul class="drop-down">
                            <li class="list-item"> Driver CPC </li>
                            <li> First Aid </li>
                            <li> Other </li>
                        </ul>
                </li>
                <a href="contact.html"><li> CONTACT </li></a>
                <!-- <a href="#"><li> TESTOMONIALS </li></a> -->
                <!-- <a href="#"><li> FAQs </li></a> -->
            </ul> 
        </div> <!-- Navigation -->
    </div> <!-- Wrapper --> 
</nav>



        nav {
            margin: 0px;
            padding: 0px;
            height: 75px;
            background-color: #FFF;
        }

        .brand {
            margin: auto;
            width: 960px;
        }

        .company-name {
            padding: 0px;
            margin: 0px;
        }

        .UKLogo {
            padding: 0px;
            margin: 0px;
            position: relative;
            top: 11px;
        }

        .navigation ul li {
            display: inline-block;
            margin: 10px;
            position: relative;
            left: 380px;
            top: -46px;
        }

        .navigation ul a {
            color: black;
            margin-left: 40px;
            text-decoration: none;
            font-family: Lato;
            font-weight: 300;
        }

        .navigation ul a:hover {
            color: #169ec5;
            font-weight: 300;
        }

        .course-li:hover .drop-down {
            left: 0px;
        }

        .drop-down {
            position: absolute;
            left: -5px;
            z-index: 1;

            background-color: white;    
            left: -9999px;
        }

非常感谢您的关注和帮助。无论是我的编码方式还是其他任何方式,总是对批评持开放态度。

这是一个 JSFiddle https://jsfiddle.net/vj41qLts/

非常感谢!

最佳答案

您需要在父级中声明一个位置,以便子级驻留在其中。具有 position: absolute; 的元素将自己定位到具有 position: relative;< 的第一个父级。如果没有 position: relative; 的父级,它将使用浏览器窗口。

请参阅此处的修复示例:https://jsfiddle.net/vj41qLts/1/

我认为您需要更改两件事:

  1. ul li 将选择导航中的所有 li 甚至下拉列表,ul>li 将仅选择直接子元素,而不是向下运行嵌套元素。
  2. 您需要在下拉列表的父项中添加 position:relative;

关于html - CSS 下拉菜单 - 列表元素是静态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28724376/

相关文章:

html - 通过 git post-receive 将 styles.less 替换为 styles.css

html - 显示 flex 收缩 div 元素

javascript - jquery 按内容更改动态创建的表格的颜色

c# - MVC 4 下拉列表格式化移动应用程序

javascript - javascript 中的子 Div 样式

javascript - 如何强制我的 ChartJS Canvas 图例保留在单个列中?

html - 无法在 Bootstrap v3.1.1 中居中对齐 div

javascript - 使用 Javascript 从具有属性选择器的 CSS 类更改属性的状态

html - 我怎样才能模仿表格的流体单元格宽度但仍然允许换行?

html - 删除边距- html