javascript - 仅当经过滚动点时 Bootstrap 附加

标签 javascript jquery html css twitter-bootstrap

我正在尝试在我的网站上实现 Bootstraps Affix 功能,我只想在相邻的 div 开始消失后才滚动侧边栏。

我希望 .submenu 仅在第一个 .test-div 开始滚动到 View 之外时才具有粘性,因此它会随 .test 一起滚动-div 最初位于顶部,但一旦第一个 .test-div 开始消失在视线之外,它就会变得粘稠。

jsFiddle link

CSS:

body {
    padding-top: 200px;
}
.test-div {
    min-height: 400px;
    border: 1px solid #D1D1D1;
    margin-bottom: 10px;
}
.footer {
    border: 1px solid red;
    height: 500px;
}

HTML:

<div class="container">
    <div class="row">
        <div class="col-xs-8">

            <div id="1" class="test-div">
                <h2>Header</h2>
            </div>
            <div id="2" class="test-div">
                <h2>Header</h2>
            </div>
            <div id="3" class="test-div">
                <h2>Header</h2>
            </div>
            <div id="4" class="test-div">
                <h2>Header</h2>
            </div>
            <div id="5" class="test-div">
                <h2>Header</h2>
            </div>
            <div id="6" class="test-div">
                <h2>Header</h2>
            </div>
            <div id="7" class="test-div">
                <h2>Header</h2>
            </div>

        </div>

        <div class="col-xs-4">
            <div data-spy="affix" data-offset-top="60" data-offset-bottom="400" class="submenu">
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
              sub menu will go here<br>
            </div>
        </div>
    </div>

    <div class="row">
        <div class="col-xs-12 footer">Footer</div>
    </div>
</div>

最佳答案

来自docs它表示您需要为附加内容的位置和宽度提供 CSS。另外,对于底部偏移,您需要为类 .affix-bottom 添加 CSS .

Usage

Use the affix plugin via data attributes or manually with your own JavaScript. In both situations, you must provide CSS for the positioning and width of your affixed content.

CSS

.affix{ top: 0px;}
.affix-bottom{ position: absolute;}

由于您希望侧边栏仅在第一个测试 div 退出 View 后才保留,因此您必须考虑第一个 div 的高度以及 data-offset-top 的 body padding-top 。对于 data-offset-bottom 也是如此考虑页脚的高度。

<div data-spy="affix" data-offset-top="600" data-offset-bottom="400">
    sub menu will go here<br/>
    sub menu will go here<br/>
    ....
</div>

更新:

您可以设置data-offset通过使用获取第二个 test-div 的顶部值来动态属性使用offset .

var pos = $('.test-div').eq(0).offset();
var pos_foot = $('.footer').height();

$('[data-spy="affix"]').attr("data-offset-top",pos.top);
$('[data-spy="affix"]').attr("data-offset-bottom",pos_foot);

Updated Fiddle

关于javascript - 仅当经过滚动点时 Bootstrap 附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516875/

相关文章:

javascript - React 错误边界不适用于 React

javascript - jQuery hashchange 事件立即无速度执行动画

javascript函数使元素垂直居中

javascript - isRequired 对于嵌套 PropType 是必需的吗?

javascript - jQuery 模糊事件未在隐藏元素上触发

javascript - ".filter"是否可以检查目标是否具有多个属性?

javascript - 将 dygraph 内容注入(inject) jquery UI Accordion 不显示

jquery - 随着浏览器高度的变化调整水平布局中的图像大小

html - 根据网格中元素的数量自动调整 css 中的文本大小

html - 当用户输入任何数据时如何防止ipad滚动