add hamb_menu
This commit is contained in:
parent
c4e8900e24
commit
b3e699f4b1
15
package-lock.json
generated
15
package-lock.json
generated
@ -8,6 +8,7 @@
|
|||||||
"name": "portfolio",
|
"name": "portfolio",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"hamburger-react": "^2.5.0",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-router-dom": "^6.3.0"
|
"react-router-dom": "^6.3.0"
|
||||||
@ -1069,6 +1070,14 @@
|
|||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/hamburger-react": {
|
||||||
|
"version": "2.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hamburger-react/-/hamburger-react-2.5.0.tgz",
|
||||||
|
"integrity": "sha512-5GSXe+ucxTPJ0SkhIsPQ/PRDweZPIKya1lfahAuExx31SdheeUA4uOPfQIAirbKona8hvo79VDr5LJQzPXsdpw==",
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "^16.8 || ^17 || ^18"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/has": {
|
"node_modules/has": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
@ -2131,6 +2140,12 @@
|
|||||||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
|
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"hamburger-react": {
|
||||||
|
"version": "2.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/hamburger-react/-/hamburger-react-2.5.0.tgz",
|
||||||
|
"integrity": "sha512-5GSXe+ucxTPJ0SkhIsPQ/PRDweZPIKya1lfahAuExx31SdheeUA4uOPfQIAirbKona8hvo79VDr5LJQzPXsdpw==",
|
||||||
|
"requires": {}
|
||||||
|
},
|
||||||
"has": {
|
"has": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
||||||
|
|||||||
@ -4,11 +4,12 @@
|
|||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite --host",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"hamburger-react": "^2.5.0",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-router-dom": "^6.3.0"
|
"react-router-dom": "^6.3.0"
|
||||||
|
|||||||
60
src/App.css
60
src/App.css
@ -1,14 +1,31 @@
|
|||||||
.container {
|
.container {
|
||||||
border: 2px solid red;
|
|
||||||
max-width: 1000px;
|
max-width: 1000px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav {
|
.nav .container {
|
||||||
background-color: rgb(84, 84, 84);
|
|
||||||
height: 3em;
|
height: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav {
|
||||||
|
background-color: rgb(47, 46, 58);
|
||||||
|
height: 3em;
|
||||||
|
-webkit-box-shadow: 0px 3px 10px 1px rgba(122, 122, 122, 0.59);
|
||||||
|
-moz-box-shadow: 0px 3px 10px 1px rgba(122, 122, 122, 0.59);
|
||||||
|
box-shadow: 0px 3px 10px 1px rgba(122, 122, 122, 0.59);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: rgb(229, 229, 255);
|
||||||
|
transition: 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav a:hover {
|
||||||
|
color: #fff;
|
||||||
|
text-shadow: 0 0 5px #03e9f4;
|
||||||
|
}
|
||||||
|
|
||||||
.nav-items {
|
.nav-items {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@ -23,3 +40,40 @@
|
|||||||
.menu-items div {
|
.menu-items div {
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hamburger {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hamburger-menu {
|
||||||
|
background-color: rgba(84, 84, 84, 0.9);
|
||||||
|
z-index: 100;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
backdrop-filter: blur(3px);
|
||||||
|
top: 3em;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hamburger-menu a {
|
||||||
|
font-size: 2em;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.hamburger {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.menu-items {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import "./App.css";
|
import "./App.css";
|
||||||
import { Routes, Route, Link } from "react-router-dom";
|
import { Routes, Route } from "react-router-dom";
|
||||||
import Home from "./pages/Home";
|
import Home from "./pages/Home";
|
||||||
import Experiance from "./pages/Experiance";
|
import Experience from "./pages/Experience";
|
||||||
import Contact from "./pages/Contact";
|
import Contact from "./pages/Contact";
|
||||||
import Footer from "./components/Footer";
|
import Footer from "./components/Footer";
|
||||||
import Header from "./components/Header";
|
import Header from "./components/Header";
|
||||||
@ -12,7 +12,7 @@ function App() {
|
|||||||
<Header />
|
<Header />
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route path="/" element={<Home />} />
|
<Route path="/" element={<Home />} />
|
||||||
<Route path="experiance" element={<Experiance />} />
|
<Route path="experience" element={<Experience />} />
|
||||||
<Route path="contact" element={<Contact />} />
|
<Route path="contact" element={<Contact />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
<Footer />
|
<Footer />
|
||||||
|
|||||||
@ -1,24 +1,50 @@
|
|||||||
import { Routes, Route, Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
|
import { Turn as Hamburger } from "hamburger-react";
|
||||||
|
import { useState } from "react";
|
||||||
|
|
||||||
function Header() {
|
function Header() {
|
||||||
|
const [isOpen, setOpen] = useState(false);
|
||||||
|
|
||||||
|
const hamburgerMenu = (
|
||||||
|
<div className="hamburger-menu">
|
||||||
|
<div>
|
||||||
|
<Link to="/">.me()</Link>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<Link to="/experience">.experience()</Link>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<Link to="/contact">.contact()</Link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="nav">
|
<div className="nav">
|
||||||
<div className="container nav-items">
|
<div className="container">
|
||||||
|
<div className=" nav-items">
|
||||||
<div className="logo">
|
<div className="logo">
|
||||||
<Link to="/">LOGO</Link>
|
<Link to="/">MS.</Link>
|
||||||
</div>
|
</div>
|
||||||
<div className="menu-items">
|
<div className="hamburger">
|
||||||
|
<Hamburger toggled={isOpen} toggle={setOpen} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="menu-items ">
|
||||||
<div>
|
<div>
|
||||||
<Link to="/">About</Link>
|
<Link to="/">.me()</Link>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Link to="/experiance">Experiance</Link>
|
<Link to="/experience">.experience()</Link>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Link to="/contact">Contact</Link>
|
<Link to="/contact">.contact()</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{isOpen && hamburgerMenu}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
font-family: "Roboto Mono", monospace;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user