【问题标题】:Trying to make a responsive navbar that hides each item试图制作一个隐藏每个项目的响应式导航栏
【发布时间】:2015-11-12 22:05:24
【问题描述】:

我正在尝试制作一个类似于BBC 的导航栏,其中显示的项目取决于有多少可以适合当前屏幕宽度,其余项目隐藏在下拉菜单中。

使用 Bootstrap,我的导航栏中的所有项目在达到一定宽度后都会被隐藏。我一直在尝试梳理他们网站上的代码,但运气不佳。

我想就如何做到这一点征求您的建议。

Here is my code so far

谢谢!

编辑:你知道吗,我将自己制作而不使用引导程序。

HTML 代码:

<nav class="navbar navbar-default">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <div class="inline-div">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </div>
                <span class="inline-div responsive-menu">Menu</span>
            </button>
        </div>

        <div id="navbar" class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li><a href="#">Home</a></li>
                <li><a href="#">About Us</a></li>
                <li class="active"><a href="#">Directory</a></li>
                <li><a href="#">Food &amp; Drinks</a></li>
                <li><a href="#">Shops &amp; Services</a></li>
                <li><a href="#">Movies</a></li>
            </ul>
        </div><!--/.nav-collapse -->
    </div>
</nav>

CSS 代码:

.inline-div { display: inline-block; }
.responsive-menu { font-size: 20px; color: #000; }
.navbar {
    border: none;
    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.3);
    box-shadow: 0 1px 2px rgba(0,0,0,0.3);
    border-radius: 0px;
    margin-bottom: 0px;
}
.navbar-default .navbar-toggle .icon-bar { background-color: black; }
.navbar-default .navbar-toggle { border-color: black; border-radius: 0px; }
.navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus, .navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus, .navbar-default .navbar-nav>li>a:hover, .navbar-default .navbar-nav>li>a:focus { color: #ffffff; background-color: #F38C1E; }
.navbar-default { background-color: white; }
.navbar-default .navbar-nav>li>a { color: black; }
@media (min-width: 768px) {
    .navbar .navbar-nav {
        display: inline-block;
        float: none;
        vertical-align: top;
    }

    .navbar .navbar-collapse {
        text-align: center;
    }
}

【问题讨论】:

    标签: jquery css twitter-bootstrap-3


    【解决方案1】:

    通过使用 Bootstrap 的类名,div 将应用 Bootstrap 的 JS,从而导致您急于避免的折叠功能。为了解决这个问题,我建议完全放弃 Bootstrap 的“导航栏”类系统,并从头开始自己设计。然后,您可以设置某种 jquery 来在导航栏中显示 div,直到某个点,您将显示“汉堡包”图标并隐藏导航栏的其余项目。这样的事情可以让你开始吗?

    $(document).ready(function() {
        var ViewWidth = $(window).width();
        var DivWidth = 0;
        $("li").each(function() {
            var Width = $(this).width();
            DivWidth+=Width;
            if (DivWidth > ViewWidth){
                $("#HamburgerContainer").show()
                $(this).addClass("#Collapsed");
            }
        });
    });
    

    这显然还需要一些工作!足以让您入门吗?

    【讨论】:

    • 是的,我也有类似的想法。我已经开始创建另一个不使用引导程序的导航栏。您的解决方案比我想象的要好。我的想法是检查页面加载时导航栏的高度,看看它是否与 51px 的“正常”高度匹配。如果不止于此,则隐藏子 li 元素,直到匹配为止。感谢您的提示!
    • 太棒了。这是一个有趣的!继续在jsfiddle.net/dvgqhh4e/4 使用它,现在它工作得更好了。
    • 虽然我应该说这不是很理想,因为 JSfiddle 窗口比视图小很多!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 2022-12-18
    • 2017-01-15
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多