【问题标题】:Custom dropmenu boostrap 4自定义下拉菜单引导程序 4
【发布时间】:2019-06-24 21:42:21
【问题描述】:

我想更改下拉菜单的设计,但我不知道如何实现。

我想让下拉菜单显示为与容器相同的大小。 (见下面的截图) 我试图修改下拉菜单类添加各种属性,但没有任何效果 你有什么想法吗?

http://zupimages.net/up/19/26/93rj.png

我没有修改的代码很简单:

https://codepen.io/BigUsername/pen/zVzRjZ

片段:

body {
  background-color: #a3d5d3;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<header>

        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mainMenu" aria-controls="mainMenu" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="container position-relative">
                
                <div class="collapse navbar-collapse justify-content-end" id="mainMenu">
                    <ul class="navbar-nav">
                        <li class="nav-item dropdown show">
                            <a class="dropdown-toggle nav-link" href="#" id="supervisionMenu" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" style=".dropdown-toggle: :after {
    display: block;  };
    /* display: block; */
">Menu 1<i class="fal fa-chevron-down "></i>
                            </a>
                            <div class="dropdown-menu show" aria-labelledby="supervisionMenu">
                                <a class="dropdown-item" href="#">Item 1</a>
                                <a class="dropdown-item" href="#">Item 2</a>
                                <a class="dropdown-item" href="#">Item 3</a>

                                <a class="dropdown-item" href="#">Item 4</a>
                                <a class="dropdown-item" href="#">Item 5</a>
                                <a class="dropdown-item" href="#">Item 6</a>
                            </div>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="supervisionMenu" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Meu 2<i class="fal fa-chevron-down "></i>
                                    </a>
                            <div class="dropdown-menu" aria-labelledby="supervisionMenu">
                                <a class="dropdown-item" href="#">Item 1</a>
                                <a class="dropdown-item" href="#">Item 2</a>
                                <a class="dropdown-item" href="#">Item 3</a>
                            </div>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="supervisionMenu" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Menu 3<i class="fal fa-chevron-down "></i>
                                    </a>
                            <div class="dropdown-menu" aria-labelledby="supervisionMenu">
                                <a class="dropdown-item" href="#">Action</a>
                                <a class="dropdown-item" href="#">Another action</a>
                                <a class="dropdown-item" href="#">Something else here</a>
                            </div>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="supervisionMenu" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Menu 4<i class="fal fa-chevron-down"></i>
                                    </a>
                            <div class="dropdown-menu" aria-labelledby="supervisionMenu">
                                <a class="dropdown-item" href="#">Action</a>
                                <a class="dropdown-item" href="#">Another action</a>
                                <a class="dropdown-item" href="#">Something else here</a>
                            </div>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="supervisionMenu" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Menu 5<i class="fal fa-chevron-down"></i>
                                    </a>
                            <div class="dropdown-menu" aria-labelledby="supervisionMenu">
                                <a class="dropdown-item" href="#">Action</a>
                                <a class="dropdown-item" href="#">Another action</a>
                                <a class="dropdown-item" href="#">Something else here</a>
                            </div>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="supervisionMenu" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Menu 6<i class="fal fa-chevron-down"></i>
                                    </a>
                            <div class="dropdown-menu" aria-labelledby="supervisionMenu">
                                <a class="dropdown-item" href="#">Action</a>
                                <a class="dropdown-item" href="#">Another action</a>
                                <a class="dropdown-item" href="#">Something else here</a>
                            </div>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>

    </header>

<section class="blog">
        <div class="container">
            <p>Blablabla blablabla</p>
    </div></section>

【问题讨论】:

  • 你的意思是像mega menu这样的东西,它的宽度和容器一样? “与容器大小相同” - 我不确定您指的是字体大小还是宽度?
  • 你想问什么,给我们你的需求截图
  • 我希望下拉菜单(捕获时为深蓝色)与容器的宽度相同(捕获时为浅蓝色)捕获时为绿色,这就是我想要的获取link
  • 有人知道如何帮助我吗?

标签: twitter-bootstrap drop-down-menu bootstrap-4


【解决方案1】:

目前.dropdown以相对定位显示,而.dropdown-menutop: 100%;以绝对定位显示,因此菜单显示在您单击的下拉菜单的正下方。

如果你想要一个全角的下拉菜单,你首先需要改变的是.dropdown的定位。您可以重置它,以便下拉菜单不再绝对定位于其父级.dropdown,而是来自具有相对定位的下一个。在你的情况下,它是容器!

由于.dropdown-menu 仍显示为绝对宽度,您可以通过设置其left: 0;right: 0; 轻松地将其设置为与其相对父级的全宽。

我不想弄乱 Bootstrap 默认样式。因此,我将介绍一个名为.mega-menu 的新自定义css 类,并将其添加到.dropdown

布局

<header>
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <button class="navbar-toggler" />
        <div class="container position-relative">
            <div class="collapse navbar-collapse">
                <ul class="navbar-nav">
                    <li class="nav-item dropdown show mega-menu">
                        <a class="dropdown-toggler" />
                        <div class="dropdown-menu">
                            <a class="dropdown-item" />
                            ...
                        </div>
                    </li>
                    <li class="nav-item dropdown mega-menu" />
                    <li class="nav-item dropdown" />
                    ...
                </ul>
            </div>
        </div>
    </nav>
</header>

CSS

.dropdown.mega-menu {
    position: static;
}

.dropdown.mega-menu .dropdown-menu {
    left: 0;
    right: 0;
}

结果

演示: https://jsfiddle.net/davidliang2008/pL9jc7vt/13/

【讨论】:

  • 感谢您的解释和示例代码,非常完美!我现在明白了 :) 祝你有美好的一天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2021-07-22
相关资源
最近更新 更多