html - Flex 导航栏中的下拉菜单推送内容

标签 html css navbar

我正在尝试向导航栏添加一个下拉菜单,但是,当将鼠标悬停在下拉按钮(在我的例子中是 Kieli)上时,中心对齐会将其余元素推开。我附上了一个包含我的问题示例的片段。

.Navbar {
    display: flex;
    height: 10vh;
    background-color: lightgray;
    justify-content: space-between;
    align-items: center;
}

.Navbar-menu {
    display: flex;
}

.Navbar-dropdown {
    display: inline-flex;
    flex-wrap: wrap;
    flex-direction: column;
}

.Navbar-dropdownMenu {
    display: none;
}

.Navbar-dropdown:hover .Navbar-dropdownMenu {
    display: flex;
    flex-direction: column;
}
        <nav class="Navbar">
            <a class="Navbar-brand Navbar-link" href="./">Brand</a>
            <div class="Navbar-menu">
                <a class="Navbar-link Text-uppercase" href="./">Link 1</a>
                <a class="Navbar-link Text-uppercase" href="./">Link 2</a>


                <div class="Navbar-dropdown">
                    <button class="Navbar-dropdownBtn">Kieli</button>
                    <div class="Navbar-dropdownMenu">
                        <a class="Navbar-link" href="../en-fi/">Suomi</a>
                        <a class="Navbar-link" href="../en-gb/">Englanti</a>
                    </div>
                </div>
            </div>
        </nav>

最佳答案

内容被推送是因为您的下拉菜单位于Navbar-dropdown中。悬停时,您将显示下拉内容,并且由于它占用垂直空间,因此会推送内容。

为了避免这种情况,您必须将下拉内容位置设置为绝对。 不要忘记将 Navbar-dropdown 的位置设置为相对位置。

.Navbar {
    display: flex;
    height: 10vh;
    background-color: lightgray;
    justify-content: space-between;
    align-items: center;
}

.Navbar-menu {
    display: flex;
}

.Navbar-dropdown {
    display: inline-flex;
    flex-wrap: wrap;
    flex-direction: column;
    position: relative;
    border: 1px solid red;
}

.Navbar-dropdownMenu {
    background-color: lightgray;
    display: none;
    position: absolute;
    top: 20px;
    right: 0;
}

.Navbar-dropdown:hover .Navbar-dropdownMenu {
    display: flex;
    flex-direction: column;
}
<nav class="Navbar">
    <a class="Navbar-brand Navbar-link" href="./">Brand</a>
    <div class="Navbar-menu">
        <a class="Navbar-link Text-uppercase" href="./">Link 1</a>
        <a class="Navbar-link Text-uppercase" href="./">Link 2</a>


        <div class="Navbar-dropdown">
            <button class="Navbar-dropdownBtn">Kieli</button>
            <div class="Navbar-dropdownMenu">
                <a class="Navbar-link" href="../en-fi/">Suomi</a>
                <a class="Navbar-link" href="../en-gb/">Englanti</a>
            </div>
        </div>
    </div>
</nav>

关于html - Flex 导航栏中的下拉菜单推送内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61188025/

相关文章:

下拉列表悬停时的 Html 输入表单样式

html - "_height"在 CSS 中是什么意思?

javascript - HTML 表格列未正确显示

javascript - 是什么让我的导航栏在滚动时停留在顶部?

javascript - 我可以在 document.setcookie 中返回 document.getelementbyid 的值吗?

javascript - 将 HTML Canvas 保存到图像将无法正常工作

html - 如何增加 nav-pills bootstrap 之间的空间?

javascript - 无法读取 null 的属性 'offsetTop'(粘性导航栏)

html - 在中型和小型显示器中居中对齐 div

jquery - 如何设置多个月份的jquery ui datepicker的宽度