我在Mac上使用VS。我两天前才开始编码,所以我是个菜鸟。我试图让一个固定的标题在滚动时改变颜色,尽管它不起作用。我不认为这是我的设置等问题,因为当我在网上运行它时,标题也没有从灰色变成黑色。
function changeRectangle() {
const header = document.getElementById('header');
var scrollValue = window.scrollY;
if (scrollValue < 150) {
header.classList.remove('header.active');
} else {
header.classList.add('header.active');
}
window.addEventListener('scroll', changeRectangle);
}
* {
margin: 0;
padding: 0;
}
.header.active {
background: rgb(0, 0, 0);
-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
-moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25);
}
.header {
position: fixed;
height: 100px;
width: 100%;
z-index: 4;
top: 0px;
left: 0px;
padding: 0;
transition: all 1s;
right: 0px;
background-color: gray;
}
.lowerbackground {
height: 1000px;
width: 100%;
background: white;
position: absolute;
top: 5000px;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial scale=1.0">
<link rel="stylesheet" href="styles.css">
<script type="text/javascript"></script>
</head>
<body>
<div id="header" class="header"></div>
</body>
<script src="index.js"></script>
<body>
<div class="lowerbackground"></div>
</body>
</html>
3条答案
按热度按时间g6ll5ycj1#
您的JavaScript代码有问题(您使用了错误的语法)
正确的语法为
与.add()类似
下面是最终的JS代码
希望这能帮上忙...
z4iuyo4d2#
有一些问题
1.事件处理程序内的addEventListener
1.正文标记太多
1.你改变了标题。active,你只需要改变active
1.您可以使用测试来切换活动,这样会更优雅
建议的HTML
ajsxfq5m3#
这些操作可能会解决您的问题。
1.首先将
window.addEventListener('scroll', changeRectangle);
移出函数changeRectangle
。1.其次,JS将
header.active
添加到DOM时,header.active
不是有效的类名,请将其重命名为active
,并在JS和CSS文件中相应地更改。1.最后,您必须将
!important
设置为background,以给予其具有高特异性,从而覆盖.header
类中的background。HTML提示:
html
元素最好具有lang
属性。1.这里有两个
body
元素,这并不好。head
元素内部应包含title
元素。最终代码