我需要动画(淡入)以下列表项逐个出现。作为right side drawer in this website。
<ul>
<li class="fade-item">Item 01</li>
<li class="fade-item">Item 02</li>
<li class="fade-item">Item 03</li>
<li class="fade-item">Item 04</li>
<li class="fade-item">Item 05</li>
</ul>
这是JavaScript代码。
function fadeItems() {
var items = document.getElementsByClassName("fade-item");
for (var i = 0; i < items.length; i++) {
setTimeout(function() {
items[i].classList.add("fadein");
}, 3000);
}
}
Css样式就在这里。
.fade-item {
transition: .2s all ease-in-out;
opacity: 0;
}
.fade-item .fadein {
animation: fadeIn 0.9s 1;
animation-fill-mode: forwards;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
执行该功能时,会出现以下错误。
未捕获的TypeError:无法读取未定义的属性“classList”
我需要使用JavaScript进行编码。
答案 0 :(得分:0)
items[i].className="fade-item fadeIn"
课程之间有一个空间。
答案 1 :(得分:0)
未捕获的TypeError:无法读取未定义的属性“classList”
因为当您使用setTimeout(handler, delay)
时,处理程序在其他上下文中被调用。
如果您希望逐项淡化项目,则应为每个项目使用不同的延迟。
如果您想在添加课程fadein
后淡入项目,那么您的CSS应该是
.fade-item {
transition: .2s all ease-in-out;
opacity: 0;
}
.fadein {
animation: fadeIn 0.9s 1;
animation-fill-mode: forwards;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}