【发布时间】:2022-07-29 07:54:23
【问题描述】:
你好,我有一个问题。我想与选定的观察元素高度完全相交。不是下图中的一半或双相交,当我滚动时,两个元素已经相交我只想要滚动时谁是全高
这是我的 HTML 代码
<ul>
<li><a href="#one" class="active">P1</a></li>
<li><a href="#two">P2</a></li>
<li><a href="#three">P3</a></li>
<li><a href="#four">P4</a></li>
</ul>
<div id="one">
<p>P1 </p>
<section>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</section>
</div>
<div id="two">
<p>P2 </p>
<section>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</section>
</div>
<div id="three">
<p>P3 </p>
<section>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</section>
</div>
<div id="four">
<p>P4 </p>
<section>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</section>
</div>
这是我的 Javascript 代码
let observer = new IntersectionObserver(beTouching)
document.querySelectorAll('div').forEach(div=>{
observer.observe(div)
})
function beTouching(elements){
elements.forEach(element=>{
if(element.isIntersecting&&element.boundingClientRect.height){
console.log(element.target)
let id = element.target.getAttribute('id')
document.querySelector('ul li a[href*='+id+']').classList.add('active');
}else{
let id = element.target.getAttribute('id')
document.querySelector('ul li a[href*='+id+']').classList.remove('active');
}
})
}
这是我的 Css 代码
*{
padding: 0;
margin: 0;
box-sizing: border-box;
text-decoration: none;
scroll-behavior: smooth;
}
body{
}
div#one{
background: cornflowerblue;
height: 100vh;
}
div#two{
background: coral;
height: 100vh;
}
div#three{
background: pink;
height: 100vh;
}
div#four{
background: skyblue;
height: 100vh;
}
.active{
background: red !important;
color: white !important;
padding: 20px;
}
ul{
height: 50px;
width: 100%;
background: green;
display: flex;
list-style-type: none;
justify-content: space-around;
align-items: center;
position: sticky;
top: 0px;
}
【问题讨论】:
标签: javascript