我目前正致力于基于CSS的3列布局,该布局具有以下要求:
现在我试图实现这个:
position: sticky
(技术术语中的最佳解决方案,但不受任何浏览器支持)。scroll
事件并根据需要更改为position: fixed
。这就是Bootstrap为其提供affix
插件的OOTB。使用这个插件,它也是一件容易的事。当我想将粘性副标题与滑动侧边栏结合使用时,问题就开始了:affix
插件只是停止工作,副标题不再粘。基本上,问题归结为CSS transform
和position: fixed
的问题,请参阅Eric Meyer's awesome blog post on this和this answer。
解决这个问题的一个选择可能是将标题放在侧边栏滑入的区域上方,这样它们就不会受到影响,但这不是我想要的:我希望侧边栏能够推开一切< / em>的
我该如何解决这个问题?这有可能吗?
答案 0 :(得分:1)
考虑这篇文章: Applying snap.js to my main content wrapper seems to break *some* of my jQuery functions
Bootstraps affix.js监听$(窗口).on(&#39; scroll&#39; ...事件.Snap.js似乎改变了&#34; window&#34;元素中的可滚动元素添加&#34; snap-content&#34;类的元素。我没有看到任何其他解决方案来编写bootstrap提供的粘性功能。
使用此作为参考。根据您当前的滚动位置(以像素为单位),您可以将css属性甚至整个css类添加到要粘贴的元素中:
jQuery(document).ready(function ($) {
$('.snap-content').scroll(function () {
if ($(this).scrollTop() > 140) {
if ($("#navbar").css('position') !== 'fixed') {
$("#navbar").css("position", "fixed");
}
} else {
if ($("#navbar").css('position') !== 'static') {
$("#navbar").css("position", "static");
}
}
});
});