0
我有一個由列表元素構成的簡單菜單,它漂浮在全寬度容器上。因爲其中一些容器比其他容器更暗,所以我希望能夠定義菜單的每個元素何時都會覆蓋它們。爲了改變類匹配浮動菜單和容器的偏移量
所以我增加了一些類是較深的容器,並寫入了他們獲得補償的功能:窗口滾動時
function getOffsets(){
var offsets = [],
colorChangers = $(".colorChange").length,
top,
bottom;
for(i = 0; i < colorChangers; i++){
top = $(".colorChange").eq(i).offset().top; // where container begins
bottom = top + $(".colorChange").eq(i).css("height"); // where container ends
offsets.push(top);
offsets.push(bottom);
}
return offsets;
}
接下來,我想比較.colorChange容器和菜單的元素的偏移事件。 在一場比賽我想切換附加類元素的菜單的情況下:
function setMenu(toggleAt){
var winScrollTop = $(window).scrollTop(),
newPos = 90 + winScrollTop,
topPos,
item = $("#FloatMenu ul li"),
menuItems = item.length;
if(winScrollTop > 90){
$("#FloatMenu").is(":visible") ? "" : $("#FloatMenu").show();
topPos = (newPos - 90) + 10;
$("#FloatMenu").css("top", topPos);
} else{
$("#FloatMenu").hide();
}
for(i = 0; i < menuItems; i++){
$this = item.eq(i);
for(var j in toggleAt){
$this.offset().top == toggleAt[j] ? $this.toggleClass("white") : ""; // toggle class "white"
}
}
}
遺憾的是它不正確(如果你使用滾動條慢慢不時)工作,任何想法,爲什麼?這裏是fiddle
document.elementFromPoint方法返回這並不一定意味着它具有相同的頂部,每個菜單項的偏移最接近的元素。所以他們早早就把白色的方式化了。感謝您的回答,儘管 –
elementFromPoint返回文檔中給定點處的元素...最頂端的元素。這是你的工作,找到相對於elementFromPoint的容器colorChange,使用parents()方法或任何其他有用的方法... https://developer.mozilla.org/zh-CN/docs/Web/API/document.elementFromPoint –