推特bootstrap。添加 class"affix" 时添加新的 class

Twitter bootstrap. Add a new class when class"affix" is added

我有一个关于 bootstrap 词缀和 CSS3 的问题。

<section id="main">
   <div class="myContainer">
    some content
   </div>

   <aside class="cart-wrapper" data-spy="affix" data-offset-top="50">
    some content
   </aside>
</section>

我正在使用 flexbox,所以 div #main 有

#main{
 display:flex;
 height: 100%;
 align-items: stretch;
}

旁边的 .cart-wrapper 有

.cart-wrapper{
width: 400px;
}

购物车包装必须位于页面右侧。当用户向下滚动页面时,在 50px 之后,我希望这个 div 固定。所以我正在使用 bootstrap 的词缀插件。 一切正常,但是当 bootstrap 将 .affix class 添加到 cart-wrapper 时,#main div 增长,填满了页面。这是因为购物车包装器在添加词缀 class 时不在流程中(位置:固定)。

为了避免 #main div 的增长,我想添加一个 class,像这样:

.affixAdded{margin-right: 400px;}

这样,布局是一样的,即使在添加.affix class之后。

我正在尝试使用 jquery 来完成此操作。我试过这段代码,但它不起作用。

if($('#cart-wrapper').hasClass('affix'){
  $('#main').addClass('affixAdded');
}

你能帮我弄清楚为什么它不起作用或如何达到我的目标吗? 非常感谢

尚未测试此代码。但据我了解,问题出在滚动时。所以检查用户何时滚动,如果有一个带有 class 后缀的元素,它会将 class 添加到 #main 元素,否则它会删除它。

$(document).scroll(function(){
    if($('some_element').length == 0) {
        $('#main').removeClass('affixAdded');
    }
    else{
        $('#main').addClass('affixAdded');
    }
});