【发布时间】:2014-05-08 22:42:22
【问题描述】:
向下滚动页面时,会触发向上滑动,但粘性包装不会调整到向上滑动元素缺失的高度。停留在那里并阻止内容出现。如何根据向上滑动元素的高度调整粘性包装的高度?
http://jsfiddle.net/Luter/1/ 注释掉第一个 //$('.option-wrap').slideToggle(); (案例 b)单击菜单并向下滚动。这次的 Menu 元素只有在滚动超过 Header 高度时才具有粘性。同样,我如何调整缺少的 Header 的粘性包装高度,以便立即卡住菜单?
这两种情况是否与偏移或刷新粘性包装有关?我认为,由于 Waypoints 正确测量了整个菜单/窗口元素的初始状态的高度,因此即使选项部分向上滑动或隐藏标题时,粘性包装也会保持其高度。
我正在寻找一种根据选项元素或隐藏标题元素的滑动/可见/切换状态将较小的粘性包装高度传递给航点的方法。
我不知道如何将缺少的向上滑动或隐藏元素的高度传递给航点,以便内容始终在菜单下很好地流动。
我检查了tutsplus、Waypoints Docs、Sticky Elements、stack different-offset-for-jquery-waypoint、stack how-to-make-jquery-waypoints-plugin-fire-when 并尝试了许多不同的组合,但就是没有达到目标。
你能帮帮我吗?感谢您的宝贵时间,我非常重视 Waypoints 插件,在您的帮助下学习正确使用它会很棒。谢谢。
HTML
<div id='header'>HEADER</div>
<div id='menu-wrap'>
<div id='menu'>MENU</div>
<div class='option-wrap'>
<div id='opt1'>OPTION 1</div>
<div id='opt2'>OPTION 2</div>
<div id='opt3'>OPTION 3</div>
<div id='opt4'>OPTION 4</div>
</div>
</div>
<div id='content'>CONTENT</div>
jQuery
$('#menu-wrap').waypoint('sticky');
$(function() {
$('#menu').waypoint(
function() {
console.log("Waypoint reached.");
//case b
//$('.option-wrap').slideToggle();
}
)
});
$("#menu").click(function(){
$('.option-wrap').slideToggle();
$('#header').slideToggle('slow');
});
CSS
#header, #menu, #opt1, #opt2, #opt3, #opt4, #opt5, #content {
width: 100%;
line-height: 2em;
font-size: 200%;
text-align: center;
}
#header {
background: #e74c3c;
}
#menu {
background: #2ecc71;
}
#opt1 {
background: #f39c12;
}
#opt2 {
background: #9b59b6;
}
#opt3 {
background: #95a5a6;
}
#opt4 {
background: #34495e;
}
#content {
background: #2980b9;
height: 1000px;
}
#menu-wrap.stuck {
position: fixed;
top: 0;
width: 100%;
}
【问题讨论】:
-
jsfiddle.net/Luter/3 差不多完成了,只是缺少最后一点,你能帮忙吗?
标签: javascript jquery html css jquery-waypoints