向下滚动时停止覆盖标签菜单中的内容

时间:2016-04-02 18:50:10

标签: javascript jquery html css twitter-bootstrap

我正在使用带有下拉菜单的Bootstrap药标制作菜单页面。我已将标签放在左侧,内容放在右侧。内容将到达页面的相当远的位置,因此标签需要能够粘在页面顶部。但是,现在他们这样做了,当我向下滚动时,内容会溢出到选项卡上。请参阅下面的代码:

HTML:

<div class="container large-padding-top">
    <div class="col-xs-2" id="menuSidebar" style="padding-top: 70px;">
        <ul class="nav nav-pills nav-stacked">
            <li class="active"><a data-toggle="tab" href="#cakes">Cakes</a></li>
            <li class="dropdown">
                <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                    Drinks
                    <span class="caret"></span>
                </a>
                <ul class="dropdown-menu">
                    <li><a data-toggle="tab" href="#Tea">Tea</a></li>
                    <li><a data-toggle="tab" href="#Coffee">Coffee</a></li>
                    <li><a data-toggle="tab" href="#ColdDr">Cold Drinks</a></li>
                </ul>
            </li>
            <li><a data-toggle="tab" href="#Breakfast">Breakfast</a></li>
            <li class="dropdown">
                <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                    Lunches
                    <span class="caret"></span>
                </a>
                <ul class="dropdown-menu">
                    <li><a data-toggle="tab" href="#LightLunch">Light Lunch</a></li>
                    <li><a data-toggle="tab" href="#ChildLunch">Children Lunches</a></li>
                    <li><a data-toggle="tab" href="#OtherLunch">Lunches</a></li>
                </ul>
            </li>
        </ul>
    </div>
    <div class="col-xs-10">
        <div class="tab-content" style="width: 100%">
            <div id="cakes" class="tab-pane fade in active">
                <h3>Our Cakes</h3>
                <table class="table table-hover">
                    <thead>
                        <tr>
                            <th></th>
                            <th>Price</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>Mud cake</td>
                            <td>£2.00</td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <div id="Tea" class="tab-pane fade">
                <h3>Tea here</h3>
            </div>
            <div id="Coffee" class="tab-pane fade">
                <h3>Coffee here</h3>
            </div>
            <div id="ColdDr" class="tab-pane fade">
                <h3>Cold Drinks here</h3>
            </div>
            <div id="Breakfast" class="tab-pane fade">
                <h3>Breakfast here</h3>

            </div>
                <div id="LightLunch" class="tab-pane fade">
                    <h3>Light Lunch here</h3>
                </div>
                <div id="ChildLunch" class="tab-pane fade">
                    <h3>Kids lunch here</h3>
                </div>
                <div id="OtherLunch" class="tab-pane fade">
                    <h3>Other Lunch here</h3>
                </div>
            </div>
        </div>
    </div>

CSS:

.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 4px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}

#menuSidebar.sticky {
  position: fixed;
  top: 0;
}

JavaScript的:

var $window = $(window),
        $stickyEl = $('#menuSidebar'),
        elTop = $stickyEl.offset().top;

    $window.scroll(function() {
        $stickyEl.toggleClass('sticky', $window.scrollTop() > elTop);
    });

以下是我的问题的截图:

Normal 这是正常的

Broken 这是破碎的

该徽标的道歉已经消除,但我不应该在这里发布: - )

1 个答案:

答案 0 :(得分:1)

不太确定你的js的目的是什么。将ul.nav-pills设置为position: fixed;并删除您的js:

<强> JSFiddle

CSS:

.nav-pills {
  position: fixed;
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 4px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}