Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 滚动带有隐藏溢出的div时的粘性标题_Javascript_Html_Css_Scroll - Fatal编程技术网

Javascript 滚动带有隐藏溢出的div时的粘性标题

Javascript 滚动带有隐藏溢出的div时的粘性标题,javascript,html,css,scroll,Javascript,Html,Css,Scroll,我一直在拼命寻找一个纯javascript解决方案,允许滚动div的内容(一个固定高度的div,带有overflow:scroll) 我已经看过很多jquery的例子,包括window.scroll,但是我一直在努力让它作为纯css在div元素上工作 任何和我想做的类似的例子都是 $('div.scrollingDiv').scroll(function () { var active = null; $('.scrollingDiv h4').each(function (idx, val)

我一直在拼命寻找一个纯javascript解决方案,允许滚动div的内容(一个固定高度的div,带有overflow:scroll)

我已经看过很多jquery的例子,包括window.scroll,但是我一直在努力让它作为纯css在div元素上工作

任何和我想做的类似的例子都是

$('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());
});
});
$('div.scrollingDiv')。滚动(函数(){
var-active=null;
$('.scrollingDiv h4')。每个(函数(idx,val){
var topOffset=$(val).offset().top;
if(topOffset<20)//elem距离顶部为20px
{
//最靠近顶部的元素
活动=$(val);
}
$('.stickyTop').html(“时髦的菜单:“+active.text());
});
});
…但显然没有jquery:)


非常感谢你的帮助

基于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>

window.onload=函数(e){
document.querySelector('.scrollingDiv')。onscroll=function(ev){
var title=“Funky菜单:”;
var titleElem=document.querySelector('.stickyTop');
var h4=this.querySelectorAll('h4');
var-active=null;
对于(变量i=0;i
基于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>

window.onload=函数(e){
document.querySelector('.scrollingDiv')。onscroll=function(ev){
var title=“Funky菜单:”;
var titleElem=document.querySelector('.stickyTop');
var h4=this.querySelectorAll('h4');
var-active=null;
对于(变量i=0;i
谢谢Javier,这是一个很大的帮助,但是它似乎没有正确地更新.stickyTop元素的innerHTML-翻译是正确的。然而,最初的逻辑不足以实现您想要的。如果我理解正确,您希望根据可见段落的标题更新标题。试试这个新的更新答案(跟着你的小提琴)。嗨,哈维尔,太完美了!非常感谢!!不客气。你认为答案正确吗?如果可以的话。当然,不幸的是,我看到了“谢谢你的反馈!声誉低于15的人所投的票会被记录下来,但不会改变公开显示的帖子分数。“然而,你的帮助真的得到了感谢,值得投上一票!谢谢Javier,这是一个很大的帮助,但是它似乎没有正确地更新.stickyTop元素的innerHTML-翻译是正确的。然而,最初的逻辑不足以实现您想要的。如果我理解正确,您希望根据可见段落的标题更新标题。试试这个新的更新答案(跟着你的小提琴)。嗨,哈维尔,太完美了!非常感谢!!不客气。你认为答案正确吗?如果可以的话。当然,不幸的是,我看到了“谢谢你的反馈!声誉低于15的人所投的票会被记录下来,但不会改变公开显示的帖子分数。“然而,你的帮助真的得到了感谢,值得投上一票!