【问题标题】:Bootstrap Scrollspy final element highlightedBootstrap Scrollspy 最终元素突出显示
【发布时间】:2013-01-09 18:57:56
【问题描述】:

好的,希望这是关于 Bootstrap Scrollspy 的最后一个问题,几乎就在那里,我希望还有一个问题需要解决。正如我所读到的,拥有 100% 的身体似乎不同意 scrollspy (我使用粘性页脚)。无论我在页面的哪个位置,都会突出显示导航中的最后一个元素。

I have tried removing 100% body
I have tried removing the scrollspy js
I have tried setting the body as the target element
I have tried $('body').scrollspy();

这些都不起作用。如果我在我正在监视的元素上设置了高度,那么它确实可以工作,尽管它似乎滚动了很多目标元素然后改变了。我希望仍然能够保持粘性页脚。

这是我的代码

查看

<div class="container">
 <div class="row show-grid clear-both">
  <div id="left-sidebar" class="span3 sidebar">
    <div class="side-nav sidebar-block">
     <div id="dateNav">
      <h3 class="resultTitle fontSize13">Release Dates</h2>
       <ul class="nav date">
        <% @response.each_pair do |date, movie| %>
        <li><i class="icon-chevron-right"></i><%= link_to date_format(date), "#d_#{date}", :id=> '#d_#{date}' %></li>
        <% end %>
      </ul>
     </div>
    </div>
  </div>
<div class="span9">
  <div id="spyOnThis" data-spy="scroll" data-target="#dateNav">
   <% @response.each_pair do |date, movie| %>
    <h3 class="resultTitle fontSize13" id="d_<%= date %>">Available on&nbsp;<%= date_format(date) %></h3>
    <% movie.each do |m| %>
      <div class="thumbnail clearfix">
        <!--Image here
    <% end %>>
        <div class="caption pull-right">
          <!--Content Here
        </div>
      </div>
    <% end %>
  <% end %>
  </div>
</div><!--span9-->
</div><!--Row-->
</div><!--/container-->

JS

$('#dateNav').scrollspy();

CSS

#dateNav{
position: fixed;
}

#spyOnThis {
height:100%;
overflow:auto;
}

.side-nav .active a {
 color: #FFBE00;
}

HTML 输出(导航)

  <div id="left-sidebar" class="span3 sidebar">
   <div class="side-nav sidebar-block">
    <div id="dateNav">
     <h3 class="resultTitle fontSize13">Release Dates</h3>
     <ul class="nav date">
    <li><i class="icon-chevron-right"></i>
    <a id="#d_#{date}" href="#d_2013-01-09">9th Jan 2013</a>
    </li>
    <li><i class="icon-chevron-right"></i>
    <a id="#d_#{date}" href="#d_2013-01-11">11th Jan 2013</a>
  </li>
  <li class="active"><i class="icon-chevron-right"></i>
  <a id="#d_#{date}" href="#d_2013-01-30">30th Jan 2013</a>
  </li>
  </ul>
  </div>
 </div>
 </div>

被监视的元素

<div class="span9">
 <div id="spyOnThis" data-target="#dateNav" data-spy="scroll">

  <h3 id="d_2013-01-09" class="resultTitle fontSize13">Available on 9th Jan 2013</h3>
   <div class="thumbnail clearfix">
    <!--Image Here -->
    <div class="caption pull-right">
     <!--Paragraphs in here -->
    </div>
   </div>

    <h3 id="d_2013-01-11" class="resultTitle fontSize13">Available on 11th Jan 2013</h3>
     <div class="thumbnail clearfix">
    <!--Image Here -->
     <div class="caption pull-right">
    <!-Paragraphs here
     </div>
    </div>

     <div class="thumbnail clearfix">
      <!-- Image Here-->
      <div class="caption pull-right">
       <!-paragraphs here -->
      </div>
    </div>

     <div class="thumbnail clearfix">
      <!-- Image Here-->
      <div class="caption pull-right">
       <!-paragraphs here -->
      </div>
    </div>

     <h3 id="d_2013-01-09" class="resultTitle fontSize13">Available on next date</h3>
   <div class="thumbnail clearfix">
    <!--Image Here -->
    <div class="caption pull-right">
     <!--Paragraphs in here -->
    </div>
   </div>
   </div>
   </div>

为代码量道歉,但我猜最好有更多代码

那么有没有人知道这个问题的解决方案,因为目前 scrollspy 看起来确实很麻烦

谢谢

【问题讨论】:

  • 为此组合一个 jsFiddle 可能是值得的。这样人们就可以有一个示例来重现您的问题,并能够快速编辑代码以使其正常工作。

标签: ruby-on-rails ruby-on-rails-3 twitter-bootstrap scroll


【解决方案1】:

我刚刚在我正在构建的网站上使用了 scrollspy。我遇到了同样的问题,最后一个元素总是突出显示。我的问题是我在导航元素上调用了.scrollspy(),而它应该在正文上。

尝试将脚本调用更改为:

$('body').scrollspy();

【讨论】:

  • @Richlewis - 当时我没有在你的问题中看到这一点。如果您发布一个 jsFiddle 以便我可以重现该问题,我会看看它。
  • 我的错误,我没有正确缩进我的努力,所以第一次没有显示出来,一会儿把一个放在一起,谢谢
【解决方案2】:

您根本无法在使用 ScrollSpy 监视的元素上设置 100% 的高度,无论是 body 还是另一个 div
但是,有一个 issue on GitHub 建议解决此问题(也讨论了 here)。

在你的情况下,这将是:

$(window).scrollspy({wrap: $('#spyOnThis')[0]});


Here's a jsFiddle of your code 适用于该修复程序。请注意,我更改了您的一些 HTML:

  • 我再次删除了data-targetdata-spy 属性。启动 ScrollSpy 时,请使用 任一 数据属性 JavaScript。
  • 我为您的span9 div 提供了#spyOnThis ID,因为不需要额外的标记。

希望这将一劳永逸地解决它。

编辑

此解决方案有效;对于@Richlewis 的特定场景,我们需要将参数offset: -250 添加到ScrollSpy。

【讨论】:

  • 我打赌你已经厌倦了我问这个问题的网站,但是问题太大了,我很感谢你的帮助
  • 我和下一个程序员一样喜欢谜题:)
  • 我也喜欢拼图,但这太荒谬了:)
  • 你的小提琴又被我弄坏了,因为没有滚动条,链接都不合适,我模仿了你在小提琴中所做的事情,但什么也没有
  • 这里是fiddle with more text,这样您就可以更轻松地看到滚动。如果您仍然遇到问题,请将“结果”窗口缩小,它会滚动。
【解决方案3】:

如果其他答案对您不起作用,我的问题最终是页面顶部缺少文档类型。

Scrollspy 调用公式中的$(window).height() 来计算当前滚动位置。 From this other question,您可以看到如果没有正确的文档类型,此调用将无法正常工作。

我将&lt;!DOCTYPE html&gt; 添加到我的 HTML 顶部后,Scrollspy 就开始突出显示正确的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2015-07-14
    • 1970-01-01
    相关资源
    最近更新 更多