粘头

2017-02-12 71 views
1

我一直在拼命寻找一个纯JavaScript解决办法,让一个div的内容的滚动(固定高度的div溢出:滚动)..粘头

我已经看到了很多jquery的例子,window.scroll,但我一直在努力得到这个div元素作为纯CSS的工作。

相似,我想要做的是任何例子,

$('div.scrollingDiv').scroll(function() { 
var active = null; 
$('.scrollingDiv h4').each(function (idx, val) { 
    var topOffset = $(val).offset().top; 
    if (topOffset < 20) // elem is 20 px from top 
    { 
     // Element nearest the top 
     active = $(val); 
    } 

    $('.stickyTop').html("Funky Menu : " + active.text()); 
}); 
}); 

..但显然没有jQuery的:)

帮助非常感谢...!

回答

0

你的语法翻译基于jQuery代码到普通的JavaScript将是:

<script> 
window.onload = function(e) { 
    document.querySelector('.scrollingDiv').onscroll = function(ev) { 
    var title = "Funky Menu: "; 
    var titleElem = document.querySelector('.stickyTop'); 
    var h4 = this.querySelectorAll('h4'); 
    var active = null; 
    for (var i = 0; i < h4.length; i++) { 
     if (h4[i].offsetTop - this.scrollTop < 30) { 
     active = h4[i]; 
     } // elem is visible and close to top 
    } 
    if (active) { 
     title += active.innerHTML; 
    } 
    titleElem.innerHTML = title; 
    }; 
}; 
</script> 
+0

感谢哈维尔,这是一个很大的帮助,但它似乎没有正确地更新.stickyTop元素的innerHTML - HTTPS:/ /plnkr.co/edit/gxkGqDgvrPc3T202biIS?p=preview –

+0

翻译是正确的。然而,原来的逻辑还不足以实现你想要的。如果我的理解正确,则需要根据可见段落的标题更新标题。尝试这个新的更新的答案(在你的小提琴之后)。 –

+0

嗨哈维尔,那很完美!非常感谢 !! –