目前,我正在尝试使用javascript更改字体颜色 <a>
标签它需要发生在你向下滚动时,颜色从白色变为黑色,但我一直在努力,当你向下滚动时,它只会改变一个 <a>
标记为黑色,其余保持白色。
以下是我的导航的简短代码:
<div class="rc_nav" id="centered_nav">
<a href="#home" class="link1">Home</a>
<a href="#services" class="link1">Services</a>
<a href="#about" class="link1">About</a>
<a href="#contact" class="link1">Contact</a>
<a href="javascript:void(0);" title="Menu" style="font-size:18px;" class="icon" onclick="myFunction()">☰</a>
</div>
这就是我的javascript的样子
const nav = document.getElementById('centered_nav');
const logo = document.getElementById('rc_logo');
const link = document.getElementsByClassName('link1')[0];
window.onscroll = function(){
if (window.pageYOffset > 100) {
nav.style.background = "#FFFFFF";
nav.style.boxShadow = "0px 2px 1px #E55200";
link.style.color = "#000000";
logo.style.backgroundImage = "url('http://localhost/assets/img/nav-logo-color.png')";
}
else {
nav.style.background = "transparent";
nav.style.boxShadow = "none";
link.style.color = "#FFFFFF";
logo.style.backgroundImage = "url('http://localhost/assets/img/nav-logo.png')";
}
}
我做了一些研究,因为我不太熟悉javascript,但没有任何结果。有什么想法吗?
2条答案
按热度按时间sbtkgmzw1#
你可以用
document.querySelectorAll
获取所有锚元素并在其上循环以设置颜色(注意document.querySelectorAll
优先于document.getElementsByClassName
因为返回的集合不是活动的。)eqqqjvef2#
直接的答案是您影响了许多链接,而不是一个链接,因此您需要创建一个集合并使用类似的方法对其进行迭代
forEach
. 在您使用的代码中document.getElementsByClassName('link1')[0];
这只是第一个环节。更好的答案是只设置一个类
body
也许,然后让您的css规则完成其余的工作。你甚至可以通过这种方式添加过渡,这将允许你设置从白色到黑色等过渡的动画。我把过渡规则放在这里,你可以根据需要删除。css: