【问题标题】:Twitter Bootstrap 3 navbar collapseTwitter Bootstrap 3 导航栏折叠
【发布时间】:2013-09-18 13:15:41
【问题描述】:

我正在尝试将我的 Twitter Bootstrap 2 导航栏迁移到 Bootstrap 3。我的导航栏中有 3 个部分。

“myContent1”和“myContent2”将始终可见。 “myContent3”将在小屏幕上折叠。但是当我单击小屏幕设备中的堆叠按钮时,折叠菜单不会打开。当我点击按钮时没有任何反应。

我把它放入小提琴中:http://jsfiddle.net/mavent/LDP8K/6/

<nav class="navbar navbar-inverse navbar-fixed-top navbar-sam-main" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">

    <a class="navbar-brand navbar-left" href="" title="aaaa" id="MyContent1">
        MySite
    </a>

    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-mycol">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>



    <ul class="nav navbar-nav navbar-left" id="myContent2">
        <li class="dropdown" id="users">
            <a class="navbar-brand" href="" title="aaa" style="display:inline-block;padding-right:0px;">
                <img src="" width="24" height="24" alt="aaaa">
                MyName
            </a>
            <a class="dropdown-toggle" data-toggle="dropdown" href="#users"  style="display:inline-block;padding-left:0px;">
                <b class="caret" style="border-left: 6px solid transparent; border-right: 6px solid transparent;  border-top: 6px solid #999;"></b>
            </a>
            <ul class="dropdown-menu">
                <li><a href=""><img src="" width="24" height="30"/> OtherName</a></li>
                <li class="divider"></li>
                <li><a href="">AAAA</a></li>
                <li><a href="">BBB</a></li>
            </ul>
        </li>
    </ul>


</div>


<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse navbar-mycol">
    <ul class="nav navbar-nav navbar-right" id="myContent3">

        <li><a href="">UUUU</a></li>
        <li><a href="">YYYYY</a></li>

        <li class="dropdown" id="wer">
            <a class="dropdown-toggle" data-toggle="dropdown" href="#wer">Tools
                <b class="caret"></b>
            </a>
            <ul class="dropdown-menu">
                <li><a href="">aaaa</a></li>
                <li><a href="">bbbb</a></li>
                <li><a href="">cccc</a></li>
            </ul>
        </li>

    </ul>

</div><!-- /.navbar-collapse -->
</nav>

编辑:根据一个人的建议,我将“切换按钮”放在了navbar-header 部分之外。我给按钮top:0 and right:0绝对样式给了按钮。但在这种情况下,如果屏幕很小,myContent2 会渗透到按钮中。你可以从这里看到这种行为:http://jsfiddle.net/mavent/paXt9/2/

Edit2:我需要这种行为:

对于大屏幕,一切都是可见的。

对于较小的屏幕,myContent2 是可见的,myContent3 是折叠的。如果单击按钮,myContent3 将不会折叠。

对于非常小的屏幕,myContent2 将显示在下一行。所以myContent2和button的位置不会冲突。

【问题讨论】:

  • 尝试将navbar-header的结束标签移动到切换按钮之后:jsfiddle.net/koala_dev/LDP8K/8
  • 那么您可能希望将按钮的 z-index 设置为显示在 myContent2 的顶部:jsfiddle.net/koala_dev/LDP8K/9
  • 尝试将两个元素包装在一个容器中 &lt;span&gt;: jsfiddle.net/koala_dev/fgNZx/1
  • 抱歉回复晚了,你只需要像我们之前一样用切换按钮调整链接的z-index,如果你想在内容落入时对齐中心第二行您可以设置媒体查询,只需注意您需要计算内容不适合一行的点,并且它可能无法跨设备一致地工作

标签: jquery html css twitter-bootstrap


【解决方案1】:

下拉元素占据了整个导航栏宽度并阻止按钮工作,要解决问题,您可以为品牌链接和导航栏切换按钮设置更高的 z-index:

.navbar-sam-main .navbar-toggle, .navbar-sam-main .navbar-brand {
    position: relative;
    z-index:1;
}

对于 cmets 部分中提出的其他问题,修复方法是将下拉链接和插入符号包装在一个跨度中,以使它们包装为单个元素,并使用媒体查询使链接显示在当它落到第二行时居中:

HTML

<li class="dropdown" id="users"> 
    <span>
        <a class="navbar-link" href="" title="aaa" style="display:inline-block;padding-right:0px;">
            <img src="" width="24" height="24" alt="aaaa" />
            MyName
        </a>
        <a class="dropdown-toggle" data-toggle="dropdown" href="#users"  style="display:inline-block;padding-left:0px;">
            <b class="caret" style="border-left: 6px solid transparent; border-right: 6px solid transparent;  border-top: 6px solid #999;"></b>
        </a>
    </span>
    <ul class="dropdown-menu">
        ...
    </ul>
</li>

CSS

.navbar-sam-main .navbar-nav > li >span {
    display: inline-block;
    padding-top: 10px;
    padding-bottom: 10px;
    line-height: 20px;
}
.navbar-sam-main .navbar-nav > li >span .navbar-brand {
    padding-top: 0;
    padding-bottom: 0;
}

@media (max-width: 270px) {
    #myContent1 > li.dropdown {
        text-align: center;
    }
    #myContent1 > li.dropdown >ul {
        text-align:left;
    }
}

【讨论】:

  • 这是完美的答案。感谢您节省了我的时间。
【解决方案2】:

我认为你应该使用带有屏幕宽度断点的响应式实用程序类,例如:

.hidden-sm
.visible-lg

更多信息:http://getbootstrap.com/css/#responsive-utilities

尽量不要覆盖 Bootstrap 提供的布局机制,并在初始状态下创建布局,然后用我提到的类覆盖可见性。

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    相关资源
    最近更新 更多