全部。我正在尝试创建一个浮动在动态定位的 div 中的垂直固定导航菜单。我希望 div 水平滚动,使其不与页面上的内容重叠,但垂直固定,使其始终可见。我仍然用 jquery 弄湿了我的脚,虽然我为我有限的知识能够完成的事情感到非常自豪,但我在尝试实现的代码中遇到了障碍。
我创建了 4 个函数。一种定义导航 div 的位置 (getVar),一种采用 div 的当前位置并操作 CSS 以使其随页面内容水平滚动(scrollWith),一种在窗口打开时调用第二个函数scrolled(scrollStart),最后是一个在调整窗口大小时重新定义 div 位置的函数。
加载时正确计算 div 的位置。在调整窗口大小后,它甚至会被正确地重新计算,但前提是窗口没有被滚动。滚动窗口后,似乎更新的位置变量不会传递给计算 CSS 位置的函数。
我尝试过创建这个,其中只有两个功能,一个用于加载,一个用于调整窗口大小后。这两个功能实际上是相同的,但没有按我希望的方式工作。我还尝试创建一个 scrollStop 函数,该函数将在调整窗口大小时取消绑定滚动事件,并在重新计算变量后调用 scrollStart 函数,但似乎变量没有按照我希望的方式刷新。可能有一种更简单的方法来实现我所追求的效果,非常感谢任何输入。
我也为此创建了一个小提琴。http://jsfiddle.net/ED3gD/
这是我的jQuery
$(document).ready(function() {
getVar();
scrollStart();
});
$(window).resize((function() {
var timeout = null;
return function() {
if (timeout) clearTimeout(timeout);
timeout = setTimeout(getVar, 250);
};
})());
function getVar() {
var p = $(".navigation");
position = p.offset();
}
function scrollWith() {
$win = $(window);
$('.navigation').css('left', position.left - $win.scrollLeft());
}
function scrollStart() {
$(window).scroll(scrollWith);
}
这是我的 HTML
<div class="wrapper">
<div class="navigation">
<div class="menu">
navigation
</div>
</div>
<div class="content">content</div>
wrapper
</div>
这是我的 CSS
.wrapper {
position:relative;
margin:0 auto;
background-color:red;
width:200px;
}
.navigation {
float: left;
position:fixed;
width:100px;
background-color:yellow;
}
.content {
position:absolute;
left:100px;
top:0px;
margin:0;
padding:0;
width:100px;
height:1400px;
background-color:blue;
}