我试图在单个页面应用程序上的各个节之间设置一个转换,它们都在同一个页面上,但其他部分设置为无显示,所以当我执行一个事件时,显示没有被请求的部分切换,现在我不希望该节像这样出现,而是设置一个超时,使进入的部分不会立即出现,但是在像5s之后,我如何才能做到这一点,我已经尝试了settimeout,但它似乎没有工作的问题大纲。
HTML
<div class="main-container">
<div class="page padding main" id="page-main">
<div class="modal hidden">
<button class="btn-close-modal">×</button>
<h2 class="modal-header">Login to your account</h2>
<form class="modal-form">
<div>
<label for="">Username:</label>
<input type="text" />
</div>
<div>
<label for="">Password:</label>
<input type="text" />
</div>
<button class="btn header-button">Login →</button>
</form>
</div>
<div class="overlay hidden"></div>
<nav class="header-nav">
<a href="#" class="header-img">
<svg viewBox="0 0 256 256" class="header-svg">
<path
class="path"
d="m 15.625507,46.199537 55.767886,-32.030352 55.623047,32.281229 -0.14485,64.311586 0.14485,-64.311586 55.76788,-32.030352 55.62305,32.281229 -0.14485,64.311579 -55.76788,32.03036 -55.62305,-32.28123 55.62305,32.28123 -0.14485,64.31158 -55.76788,32.03035 L 70.958866,207.10393 71.103708,142.79235 126.87159,110.762 71.103708,142.79235 15.480664,110.51112 Z"
style="
fill: none;
stroke: #000;
stroke-width: 13;
stroke-linejoin: round;
stroke-linecap: round;
"
/>
</svg>
</a>
<button
class="header-button login"
type="button"
data-page="page-login"
>
LOGIN
</button>
</nav>
<div class="header-hero">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="header-text">
<h1 class="header-text-description">
Make Banking Easy with Express
</h1>
<p class="header-text-texts">
Together we can make banking awesome!
</p>
<p class="header-text-texts">
Use our mobile app to your need today
</p>
<button class="header-button header-buttons" type="button">
<a href="">Services</a>
</button>
</div>
<div class="header-image hide-for-desktop">
<img src="./assets/hand.jpg" alt="" class="header-hand" />
<button class="header-image-1">Transfer</button>
<button class="header-image-2">Loan</button>
</div>
</div>
<div class="page u-none" id="page-login">
<nav>
<a data-page="page-dashboard">User Settings</a>
<a data-page="page-main">Logout</a>
</nav>
<h1>MAIN PAGE</h1>
<form action="" name="login" method="" id="form-id" required>
<label for="name">Name</label>
<input type="text" id="name" />
<label for="pin">Pin</label>
<input type="text" id="pin" />
<button type="submit" class="submit">Submit</button>
</form>
</div>
<div class="page u-none" id="page-signup">
<nav>
<a data-page="page-settings">User Settings</a>
<a data-page="page-login">Logout</a>
</nav>
<h1>MAIN PAGE</h1>
<form action="" name="login" method="" id="form-id" required>
<label for="name">Name</label>
<input type="text" id="name" />
<label for="pin">Pin</label>
<input type="text" id="pin" />
<button type="submit" class="submit">Submit</button>
</form>
</div>
<div class="page u-none" id="page-dashboard">
<nav>
<a data-page="page-main">Back to Main</a>
<a data-page="page-login">Logout</a>
</nav>
<h1>SETTINGS PAGE</h1>
</div>
</div>CSS
nav {
display: flex;
}
nav a {
color: #00f;
padding: 5px 10px;
cursor: pointer;
}
/* Utility classes */
.u-none {
display: none;
opacity: 0;
animation: 2s fadeIn forwards;
}
@keyframes fadeIn {
100% {
opacity: 1;
display: block;
}
}Javascript
const ELS_pages = document.querySelectorAll('.page');
const ELS_buttons = document.querySelectorAll('[data-page]');
console.log(ELS_pages);
console.log(ELS_buttons);
const submit = document.querySelector('.submit');
const goToPage = (id) => {
ELS_pages.forEach((EL, i) => {
// console.log(EL.id);
console.log(`${i} : ${EL.id}`);
console.log(id);
// EL.classList.toggle("u-none", EL.id !== id);
setTimeout(() => {
if (EL.id === id) {
EL.classList.remove('u-none');
} else {
EL.classList.add('u-none');
}
}, 20);
});
};
// goToPage("page-main");
ELS_buttons.forEach((EL) =>
EL.addEventListener('click', () => {
goToPage(EL.dataset.page);
})
);发布于 2021-08-02 10:08:48
我修正了这个问题,在add和remove分类风格上设置了一个计时器,它与我选择的内容一起工作。代码如下
const goToPage = (id) => {
ELS_pages.forEach((EL, i) => {
// console.log(EL.id);
console.log(`${i} : ${EL.id}`);
console.log(id);
// EL.classList.toggle("u-none", EL.id !== id);
if (EL.id === id) {
setTimeout(() => {
EL.classList.remove('u-none');
}, 2000);
} else {
setTimeout(() => {
EL.classList.add('u-none');
}, 2000);
}
});
};https://stackoverflow.com/questions/68619487
复制相似问题