【问题标题】:Fix Bootstrap Navbar to top on scrolling修复 Bootstrap Navbar 在滚动时置顶
【发布时间】:2017-04-13 10:03:02
【问题描述】:
  1. 我在页面顶部有一个div (named=status bar)height = 25pxtop:0position: fixed
  2. 我想在此状态栏下方放置一个引导程序navbar(透明背景)100px
  3. 当页面滚动时,navbar 滚动并触摸状态栏并: 3.1。固定在状态栏下方。 3.2.将其背景颜色更改为red (#ff0000)。 3.3.页面的其余部分向下滚动。
  4. 当页面向上滚动时,navbar 和状态栏的位置保持固定,直到滚动几乎到达浏览器顶部。
  5. 到达浏览器顶部时,状态栏保持在#1 中的位置。 navbar 滚动并设置在距离状态栏 100px 的位置。

HTML(状态栏)

<div class="genxcoders-status-bar">     <div class="genxcoders-left genxcoders-fc-white genxcoders-fw-500">
        <span id="genxcoders-date"></span>
    </div>
    <div class="genxcoders-center">
        Support: <i class="fa fa-phone"></i> +91-712-606 GENX
    </div>
    <div class="genxcoders-right">
        <ul class="genxcoders-status-bar-social">
            <a href="#"><li><i class="fa fa-facebook-f"></i></li></a>
            <a href="#"><li><i class="fa fa-twitter"></i></li></a>
            <a href="#"><li><i class="fa fa-linkedin"></i></li></a>
            <a href="#"><li><i class="fa fa-youtube-play"></i></li></a>
        </ul>
    </div> </div> 

HTML(导航栏)

<div class="nav-container" id="navigation">
        <div id="genxcoders" class="navbar navbar-default " role="navigation">
            <div class="container-fluid">
                <div class="navbar-header"><a class="navbar-brand" href="#">BlueGas</a>
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-menubuilder">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                </div>
                <div class="collapse navbar-collapse navbar-menubuilder">
                    <ul class="nav navbar-nav navbar-right">
                        <li class="active"><a href="/">Home</a></li>
                        <li><a href="/about-us">About Us</a></li>
                        <li class="dropdown">
                            <a href="/products" class="dropdown-toggle" data-toggle="dropdown">Products <b class="caret"></b></a>
                            <ul class="dropdown-menu" role="menu">
                                <li><a href="#">Services</a></li>
                            </ul>
                        </li>
                        <li><a href="/contact">Contact Us</a></li>
                    </ul>
                </div>
            </div>
        </div>
    </div>

CSS(状态栏)

/* 状态栏 */

.genxcoders-status-bar {    width: 100%;    height: 25px;       background-color: #1976d2;      position: fixed;    top: 0;     z-index: 9999; }

.genxcoders-status-bar > .genxcoders-left, .genxcoders-status-bar > .genxcoders-center, .genxcoders-status-bar > .genxcoders-right {    width: 33.33%;  height: 25px;   line-height: 25px;      font-size: 12px;        float: left;        text-align: center;     color: #ffffff; }

.genxcoders-status-bar > .genxcoders-right > ul.genxcoders-status-bar-social {  list-style: none;   margin-left:
-30px; } .genxcoders-status-bar > .genxcoders-right > ul.genxcoders-status-bar-social > a > li {    color: #ffffff;     display: inline-block;  margin: auto 10px; } 

/* 状态栏 */

CSS 导航栏 /* 应用栏 */

.nav-container {    margin-top:100px;       width: 100%;    height: 50px;
         } .nav-container > #genxcoders.navbar-default .navbar-brand {
    color: rgba(33, 33, 33, 1); } .nav-container > #genxcoders.navbar-default {
    font-size: 15px;
    /*background-color: rgba(255, 255, 255, 1);*/   background-color: transparent;
    border-width: 0px;
    border-radius: 0px; } .nav-container > #genxcoders.navbar-default .navbar-nav>li>a {
    color: rgba(33, 33, 33, 1);
    /*background-color: rgba(255, 255, 255, 1);*/   background-color: transparent; } .nav-container > #genxcoders.navbar-default .navbar-nav>li>a:hover, .nav-container > #genxcoders.navbar-default .navbar-nav>li>a:focus {
    color: rgba(255, 255, 255, 1);
    background-color: rgba(3, 169, 244, 1); } .nav-container > #genxcoders.navbar-default .navbar-nav>.active>a, .nav-container > #genxcoders.navbar-default .navbar-nav>.active>a:hover, .nav-container > #genxcoders.navbar-default .navbar-nav>.active>a:focus {
    color: rgba(255, 255, 255, 1);
    background-color: rgba(25, 118, 210, 1); } .nav-container > #genxcoders.navbar-default .navbar-toggle {
    border-color: #1976d2; } .nav-container > #genxcoders.navbar-default .navbar-toggle:hover, .nav-container > #genxcoders.navbar-default .navbar-toggle:focus {
    background-color: #1976d2; } .nav-container > #genxcoders.navbar-default .navbar-toggle .icon-bar {
    background-color: #1976d2; } .nav-container > #genxcoders.navbar-default .navbar-toggle:hover .icon-bar, .nav-container > #genxcoders.navbar-default .navbar-toggle:focus .icon-bar {
    background-color: #ffffff; }

/* 应用栏 */

FIDDLE

【问题讨论】:

  • 你能在这里更新你的代码吗...
  • 能否创建一个代码 sn-p 以便我们分析功能代码?
  • 我无法创建代码样式,所以我使用块引用来输入代码
  • 您可以通过缩进 4 个空格来插入代码。尝试提供工作代码的 jsfiddle 或 codepen。

标签: jquery css twitter-bootstrap


【解决方案1】:

你的小提琴有很多问题,有些比其他的更严重:

  • 您正在通过 http:// 而不是 https:// 加载 jQuery,而 jsFiddle 会阻止它。
  • 您正在检查window.scrollTop()#navigation.offset(),但您使用CSS 更改#navigations offset(),这会导致条形图在状态之间闪烁。将其与硬值进行比较,例如 100px(当它未固定时,它是 #navigation 的边距顶部,因此它可以按预期工作。
  • 您在 scroll() 函数之外定义 var elementPosition,因此它不会在滚动时更新
  • 你的 .scroll() 函数太重了。只需将一个类 (fixed?) 附加到 #navigation 并将所有 CSS 放在 #navigation.fixed { } 声明中,在您的 CSS 中。我还没有在更新的小提琴中完成最后一点,但我强烈推荐它。
  • 你的CSS 选择器太强大了。只使用足够强大的选择器来应用,而不是更强大。例如,您可以使用以下方式设置.navbar-brand 的样式:
 .nav-container > #genxcoders.navbar-default .navbar-brand {}

...,但你只需要一个比

更强的选择器
.navbar-default .navbar-brand {}

您可以分别使用#navigation .navbar-brand {} 和:
#navigation.fixed .navbar-brand {}

你的updated fiddle

【讨论】:

  • 你能给我提供一下所有这些变化吗?因为我不能很好地理解!提前致谢
  • 如果您仔细观察,我的答案中的最后两个单词(updated fiddle)被包裹在一个锚标签(又名链接)中。随意使用您选择的指针设备。我只是把它做成了一个按钮。你现在看到了吗?
  • 正如我之前定义的,我希望导航栏是透明的,并突出显示活动链接。当导航栏得到修复时,我希望导航栏的背景颜色变为浅蓝色。此外,正常状态下的字体颜色必须为白色,突出显示的颜色为深蓝色,而所有其他链接字体颜色应为#212121。当导航栏修复时,字体颜色应该是白色的。这一切都会发生,但是当滚动并返回正常状态后,突出显示的链接的字体颜色变为#212121 而不是#ffffff。我怎么做。此外,在固定状态下没有悬停效果。
  • 后来我确实看到了。
  • 您当前的问题是您的导航栏没有固定在滚动上,我相信我解决了您的所有问题(很多)。将CSS 移动到CSS,您将可以轻松控制它。请注意,您不应该将多个问题合二为一,特别是如果它们没有直接关系。
猜你喜欢
  • 1970-01-01
  • 2015-11-13
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多