javascript - 如何根据滚动选择菜单项?

标签 javascript html css

我的代码中的滚动和事件菜单有问题,...... 这是我的代码和 fiddle 链接 https://jsfiddle.net/ajm7Ljwu/

只需在向下和向上滚动时检查页面的第 3 和第 4 菜单.. 请帮助我...谢谢(请不要给出任何与jquery相关的解决方案)

css

<style type="text/css">
                    a{
                        position: fixed;
                    }
                    div{
                        float:left;
                        width:100px;
                    }
                    p{
                        height:500px;
                    }
                </style>

html

   <div>
        <a href="" class="ele elemMe1">1</a><br>
        <a href="" class="ele elemMe2">2</a><br>
        <a href="" class="ele elemMe3">3</a><br>
        <a href="" class="ele elemMe4">4</a><br>
    </div>

    <div>   
        <p class="elemMe" id="elemMe1">1</p>
        <p class="elemMe" id="elemMe2">2</p>
        <p class="elemMe" id="elemMe3">3</p>
        <p class="elemMe" id="elemMe4">4</p>
    </div>

javascript

<script type="text/javascript">
    var currentPagePosition = pageYOffset;


        window.onscroll = function(e){
            var allDiv = document.getElementsByClassName('elemMe');
                console.log(allDiv);


                for(var i = 0; i < allDiv.length; i++){


                    if(pageYOffset > allDiv[i].offsetTop-allDiv[i].offsetHeight-100){


                        var p_id = allDiv[i].attributes['id'].value;
                        var currentMenu = document.getElementsByClassName(p_id);



                        currentMenu[0].style.color = "red";


                    }else if(pageYOffset < allDiv[i].offsetTop-allDiv[i].offsetHeight){
                        currentMenu[0].style.color = 'black';
                    }

                }


        };

</script>

最佳答案

试试这个。

var currentPagePosition = pageYOffset;
window.onscroll = function(e){
  var allDiv = document.getElementsByClassName('elemMe');
  for(var i = 0; i < allDiv.length; i++){
    var p_id = allDiv[i].attributes['id'].value;
    var currentMenu = document.getElementsByClassName(p_id);
    if(pageYOffset > allDiv[i].offsetTop-allDiv[i].offsetHeight){
      currentMenu[0].style.color = "#FE0000";
    }else if(pageYOffset < allDiv[i].offsetTop-allDiv[i].offsetHeight){
      currentMenu[0].style.color = '#000';
    }else {
      currentMenu[0].style.color = 'black';
    }
  }
};
a{
			position: fixed;
		}
		div{
			float:left;
			width:100px;
		}
		p{
			height:500px;
		}
<div>
	<a href="" class="ele elemMe1">1</a><br>
	<a href="" class="ele elemMe2">2</a><br>
	<a href="" class="ele elemMe3">3</a><br>
	<a href="" class="ele elemMe4">4</a><br>
</div>

<div>	
	<p class="elemMe" id="elemMe1">1</p>
	<p class="elemMe" id="elemMe2">2</p>
	<p class="elemMe" id="elemMe3">3</p>
	<p class="elemMe" id="elemMe4">4</p>
</div>

关于javascript - 如何根据滚动选择菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35789514/

相关文章:

html - Font Awesome 'fa-life-ring' 不显示

jquery - 我的博客有一个 jquery 评论插件,但我不知道评论存储在哪里?

html - 我将 CSS 的某些部分传输到另一个文件后无法正常工作

javascript - 只能更新已安装或正在安装的组件错误。条件渲染

javascript - 复选框状态更改不起作用

javascript - 找到占用最大空间的列?

javascript 使用自定义事件创建自定义类

jquery - 滑动 div 导航

html - 将图像 float 到 DIV 之外

html - 将鼠标悬停在图像上时如何停止元素移动位置