【发布时间】:2019-07-12 21:26:25
【问题描述】:
我正在尝试将纯 JavaScript、CSS 和 HTML 动画导航栏转换为 ReactJS 组件以在项目中使用。
原始代码是用 HTML 编写的,带有一个单独的 CSS 样式文件,以及一个通过 <script> 标签链接到 HTML 代码的 JavaScript 文件。下面是我试图转换为 ReactJS 的 JavaScript 文件的代码 sn-p:
const navSlide = () => {
const burger = document.querySelector('.burger');
const navLinks = document.querySelectorAll('.nav-links li');
burger.addEventListener('click', ()=> {
navLinks.forEach((link, index) => {
if (link.style.animation) {
link.style.animation = '';
} else {
link.style.animation = 'navLinkFade 0.5s ease forwards $(index / 7 + 1}s
}
});
}
navSlide();
我正在尝试更改以适应上述代码 sn-p 的 ReactJS 组件当前包含以下代码:
import React, { useState } from "react";
const NavBar = () => {
const [navOpened, setNavOpened] = useState(false);
const navClassNames = navOpened ? "nav-links nav-active" : "nav-links";
return (
<div className="navbar">
<nav>
<div className="logo">
<h4>Reuben McQueen</h4>
</div>
<ul className={navClassNames}>
<li>
<a href="#">Projects</a>
</li>
<li>
{" "}
<a href="#">Experiments</a>
</li>
<li>
{" "}
<a href="#">Skills</a>
</li>
<li>
{" "}
<a href="#">Contact Me</a>
</li>
</ul>
<div className="burger" onClick={() => setNavOpened(!navOpened)}>
<div className="line1" />
<div className="line2" />
<div className="line3" />
</div>
</nav>
</div>
);
};
export default NavBar;
.nav-links li 的 CSS 如下:
.nav-links li {
list-style: none;
}
在给定时间延迟后,代码应该在每个列表项中单独移动。
【问题讨论】:
标签: javascript html css reactjs hamburger-menu