スクロールスパイを垂直ナビゲーションで適切に動作させることはできません。以下に、私が使用するコードがあります。何らかの理由で、「2」のみがアクティブになります。
誰が何が間違っているのか考えていますか?
<html lang="en">
<head>
<meta charset="utf-8">
<title>Twitter Bootstrap Scroll Spy Playground</title>
<link href="bootstrap/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row">
<div class="span3">
<ul class="navbar nav nav-list affix">
<li class="active"><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
</ul>
</div>
<div class="span1" data-spy="scroll">
<section id="one">
<h1>One</h1>
<h2>Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. </h2>
</section>
<section id="two">
<h1>Two</h1>
<h2>Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.</h2>
</section>
</div>
</div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="bootstrap/js/bootstrap.js"></script>
</body>
</html>
私自身でこれを整理してみると、スパイされている要素にはスクロールバーが必要であることがわかりました。
このフィドルをご覧ください: http://jsfiddle.net/adamp/qgU6h/1/
Body要素($('body').scrollspy()
)を直接スパイするか、コンテンツに明示的な高さを与えてスクロールバーを表示させることができます。
(Bootstrap ドキュメントの例 を見ると、固定高さのトリックが実行されます。)
ジェレックのおかげで私は私の助けで私の作品を作ることができました
height: 100%;
cSSのbodyセレクターで
また、Bootstrap http://getbootstrap.com/javascript/#scrollspy
私は追加しました position: relative;
本体にも。
私のCSSのボディセレクタの始まりは次のようになります:
body {
position: relative;
height: 100%;
/* … */
}
の中に <body>
HTMLで削除する必要がありました
data-offset="0"
こんな感じです
<body data-spy="scroll" data-target="#navigation">
http://jsfiddle.net/mCxqY/ のようにこれを行うことができます
<body data-spy="scroll" data-target="#navbar">
<div id="post1" class="box">
<h1>Post 1</h1>
<p> Scroll Down↓</p>
</div>
<div id="post2" class="box"><h1>Post 2</h1></div>
<div id="post3" class="box"><h1>Post 3</h1></div>
<div id="navbar">
<ul class="nav">
<li><a href="#post1">Post 1</a></li>
<li><a href="#post2">Post 2</a></li>
<li><a href="#post3">Post 3</a></li>
</ul>
</div>
<script src="http://Twitter.github.com/bootstrap/assets/js/bootstrap-scrollspy.js"></script>
</body>
css
@import url(http://Twitter.github.com/bootstrap/assets/css/bootstrap.css);
.box{
margin: 20px; padding: 15px;
background: #eee;
height: 500px;
}
#navbar{
position: fixed;
bottom: 0; left: 20px;
width: 100%;
background: #fff;
}
.nav li a{
float: left;
width: 80px;
padding: 15px 0;
}
.nav li a:hover{
color: #f33 !important;
background: none;
}
.nav li.active a{
color: #f55;
text-decoration: underline;
}
Scrollspyを機能させるには、2つのことをしなければなりませんでした。
まず、<body>
要素:
<style>
.body
{
height: 100%;
}
</style>
<body data-spy="scroll" data-target="#scrollElement" data-offset="0">
I 思考これは、scroll-spyがスパイしている要素の高さを取得しようとしているためですが、要素に指定された高さがない場合はnull(または0?)値。スクリプトの計算を壊しているようです。
次に、id要素間に十分な垂直方向のスペースがあることを確認する必要がありました(navアンカーが向いていること)。
必要なスペースの正確な量を把握できませんでした(data-offset属性によって異なるため、おそらくそれと関係があると思われます)が、スパイ要素に高さを設定し、 scrollspyはまだ機能しません-id要素の間にコンテンツを追加するだけです。
$(window).scroll(function() {
if ($(".navbar").offset().top > 50) {
$(".navbar-fixed-top").addClass("top-nav-collapse");
} else {
$(".navbar-fixed-top").removeClass("top-nav-collapse");
}
});
//jQuery for page scrolling feature - requires jQuery Easing plugin
$(function() {
$('a.page-scroll').bind('click', function(event) {
var $anchor = $(this);
$('html, body').stop().animate({
scrollTop: $($anchor.attr('href')).offset().top
}, 1500, 'easeInOutExpo');
event.preventDefault();
});
});
.nameClasse {
position: relative;
overflow: auto;
height: 330px;
}
<div data-spy="scroll" data-target="#navbarVertical" data-offset="0" class="nameClass">
私はこのようにしました。データターゲットの場合、クラス名。navbarを使用します
<body data-spy="scroll" data-target=".navbar" data-offset="50">
<nav class="navbar navbar-default navbar-fixed-top" >
数時間のフラストレーションと調査の後、多くの人々がBootstrap Affixのドキュメント( www.mtjhax.wordpress.com )にも満足していないことに気付きました。周りを見て、Bootplyのこのソリューションは私のために働いた: http://bootply.com/63937
ナビゲーションのIDが「navbar」だった場合、本文は次のようになります。
<body data-spy="scroll" data-target="#navbar">
...
</body>
また、navbar自体は次のようになります。
<div class="navbar" id="navbar">
<ul class="nav navbar-nav">
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
</div>
次に、プラグインを初期化しました...
$('#nav').affix({
offset: {top: 0}
});
...そして、ナビゲーションに適切なスタイリングを与えます:
#nav.affix {
position: fixed;
top: 0;
width: 100%
}