发布于2024-11-03 21:54 阅读(860) 评论(0) 点赞(21) 收藏(3)
我搜索了好久,但一直没找到在进入特定全屏部分时更改标题背景的方法。我找到了针对具有特定高度的 div 的 jquery 解决方案,但我不知道如何将其应用于高度:100vh 和宽度:100vw 的元素。
这可能吗?
section {
height:100vh;
width:100vw;
}
#section-one {
background-color:white;
}
#section-two {
background-color:green;
}
#section-three {
background-color:blue;
}
#section-four {
background-color:orange;
}
header {
background-color: purple;
color: white;
height: 30px;
position:fixed;
width:100%;
top:0;
z-index:1;
}
ul {
padding: 0;
margin: 0;
}
ul li{
display: inline-block;
padding: 5px;
}
<header>
<ul>
<li><a href="#section-one">One</a></li>
<li><a href="#section-two">Two</a></li>
<li><a href="#section-three">Three</a></li>
<li><a href="#section-four">Four</a></li>
</ul>
</header>
<section id="section-one"></section>
<section id="section-two"></section>
<section id="section-three"></section>
<section id="section-four"></section>
这可以是使用纯 javascript 和滚动事件处理程序的实现,对当前 html 结构进行最小的更改。这还支持单击锚链接。
let activeHeader = null;
function setCurrentSection() {
const sections = document.getElementsByTagName("section");
const scrollPosition = document.documentElement.scrollTop;
for(let i = 0; i < sections.length; i++) {
const section = sections[i];
const scrollDifference = section.offsetTop - scrollPosition;
if(scrollDifference >= 0 && scrollDifference <= 30) {
const headerSection = document.querySelector(`[data-id='${section.id}']`);
if(headerSection !== activeHeader) {
if(activeHeader) activeHeader.style.backgroundColor = "inherit";
const sectionStyles = window.getComputedStyle(section);
headerSection.style.backgroundColor = sectionStyles.backgroundColor;
activeHeader = headerSection;
}
}
}
}
setCurrentSection();
window.addEventListener("scroll", function () {
setCurrentSection();
}, false);
section {
height:100vh;
width:100vw;
}
#section-one {
background-color:white;
}
#section-two {
background-color:green;
}
#section-three {
background-color:blue;
}
#section-four {
background-color:orange;
}
header {
background-color: purple;
color: white;
height: 30px;
position:fixed;
width:100%;
top:0;
z-index:1;
}
ul {
padding: 0;
margin: 0;
}
ul li{
display: inline-block;
padding: 5px;
}
<header>
<ul>
<li><a data-id="section-one" href="#section-one">One</a></li>
<li><a data-id="section-two" href="#section-two">Two</a></li>
<li><a data-id="section-three" href="#section-three">Three</a></li>
<li><a data-id="section-four" href="#section-four">Four</a></li>
</ul>
</header>
<section id="section-one"></section>
<section id="section-two"></section>
<section id="section-three"></section>
<section id="section-four"></section>
作者:黑洞官方问答小能手
链接:http://www.qianduanheidong.com/blog/article/534979/a2ef9ec2e4a3308b4d88/
来源:前端黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 前端黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-3
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!