【发布时间】:2019-12-21 19:41:45
【问题描述】:
我在看Intersection Observertutorial时遇到了这个问题。我的是一个 div 而不是图像,所以我不必像视频中那样指定一个属性,我相信我几乎做对了所有事情,因为我得到了 10 个控制台日志,因为我有 10 个带有类“box”的 div,其中在 JS 文件中用作变量。我使用 opacity 和 transformation 作为 CSS 中指示的动画。我很感激我做错了什么,我看不到滚动动画的发生。
const targets = document.querySelectorAll('.box');
const lazyLoad = target => {
const io = new IntersectionObserver((entries,observer) => {
entries.forEach(entry => {
console.log('hello World');
if(entry.isIntersecting) {
const div = entry.target;
div.classList.add('fade');
observer.disconnect();
}
});
});
io.observe(target);
};
targets.forEach(lazyLoad);
:root {
--primary-color:#425b84;
--secondary-color:#5b7bb4;
--max-width:1100px;
}
* {
margin:0;
padding:0;
box-sizing:border-box;
}
body {
font:normal 1rem/1.5 'Arial', sans-serif;
background:var(--primary-color);
color:#fff;
overflow-x:hidden;
padding-bottom:50px;
}
#main-header {
background:var(--secondary-color);
padding:4rem 0;
}
.container {
max-width:var(--max-width);
margin:0 auto;
text-align:center;
}
h1 {
font-size:2.3rem;
}
#timeline ul {
background:var(--primary-color);
padding:50px 0;
}
/* Create Line */
#timeline ul li {
list-style:none;
position: relative;
width:6px;
margin:0 auto;
padding-top:50px;
background:#fff;
}
/* Boxes */
#timeline ul li div {
position: relative;
bottom:0;
width:400px;
padding:1rem;
background:var(--secondary-color);
transition:all 0.5s ease-in-out;
opacity:0;
}
.fade {
opacity:1;
transition:all 0.5s ease-in-out;
transform:translateX(0);
}
/* Right Side */
#timeline ul li:nth-child(odd) div {
left:40px;
transform:translateX(1100px);
}
/* Left Side */
#timeline ul li:nth-child(even) div {
left:-434px;
transform:translateX(-1100px);
}
/* Dots */
#timeline ul li:after {
content:'';
position: absolute;
left:50%;
bottom:0;
width:25px;
height:25px;
background:var(--secondary-color);
transform:translateX(-50%);
border-radius:50%;
transition:background 0.5s ease-in-out;
}
/* Arrows Base */
#timeline div:before {
content:'';
position: absolute;
bottom:5px;
width:0;
height:0;
border-style:solid;
}
/* Right Side Arrows */
#timeline ul li:nth-child(odd) div:before {
left:-15px;
border-width:8px 16px 8px 0;
border-color:transparent var(--secondary-color) transparent transparent;
}
/* Left Side Arrows */
#timeline ul li:nth-child(even) div:before {
right:-15px;
border-width:8px 0 8px 16px;
border-color:transparent transparent transparent var(--secondary-color);
}
@media(max-width:900px){
#timeline ul li div {
width:250px;
}
#timeline ul li:nth-child(even) div {
left:-284px;
}
}
@media(max-width:600px) {
#timeline ul li {
margin-left:20px;
}
#timeline ul li div {
width:calc(100vw - 90px);
}
#timeline ul li:nth-child(even) div {
left:40px;
}
/* Right Side Arrows */
#timeline ul li:nth-child(even) div:before {
left:-15px;
border-width:8px 16px 8px 0;
border-color:transparent var(--secondary-color) transparent transparent;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="https://kit.fontawesome.com/bbb16afe05.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="./css/aos.css">
<link rel="stylesheet" href="./css/style.css">
<title>Knowledge Timeline</title>
</head>
<body>
<header id="main-header">
<div class="container">
<h1><i class="fas fa-brain"></i> Knowledge Resume</h1>
<h3><div class="fas fa-user"></div> Jun Jung</h3>
</div>
</header>
<section id="timeline">
<ul>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2007: HTML & CSS</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2009: JavaScript & jQuery</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2010: PHP & Wordpress</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2011: Ruby on Rails</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2012: Python</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box"
>
<h3><i class="fas fa-chevron-right"></i> 2013: Node.js & React</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2014: Angular & React Native</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2015: Vue.js </h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2016:GraphQL & Apollo</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
<li>
<div class="box">
<h3><i class="fas fa-chevron-right"></i> 2017: Machine Learning</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque animi at, dolorum tempora labore exercitationem sapiente voluptate possimus necessitatibus quos cum, voluptatibus maiores voluptates quam illum consequatur nemo est dolores.</p>
</div>
</li>
</ul>
</section>
<script src="./js/main.js"></script>
</body>
</html>
【问题讨论】:
标签: javascript html css scroll intersection-observer