Skip to content
Snippets Groups Projects
Commit 5856eb32 authored by Yifeng Wang's avatar Yifeng Wang
Browse files

test the navbar

parent 49d543f0
No related branches found
No related tags found
No related merge requests found
Pipeline #443615 passed
...@@ -86,111 +86,4 @@ ...@@ -86,111 +86,4 @@
.apple-nav .dropdown-toggle { .apple-nav .dropdown-toggle {
padding: 10px 20px; padding: 10px 20px;
} }
}@import url('https://fonts.googleapis.com/css2?family=SF+Pro+Display:wght@300;400;500&display=swap');
.apple-navbar {
background-color: rgba(245, 245, 220, 0.8);
backdrop-filter: saturate(180%) blur(20px);
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
padding: 0;
display: flex;
justify-content: center;
}
.apple-brand {
padding: 0 20px;
margin-right: auto;
}
.apple-logo {
height: 68px;
width: auto;
}
.apple-nav {
font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
margin-right: auto;
}
.nav-item {
display: flex;
align-items: center;
flex-direction: column;
text-align: center;
}
.nav-icon {
width: 24px;
height: 24px;
margin-bottom: 4px;
}
.nav-text {
font-size: 12px;
font-weight: 300;
}
.apple-nav .nav-link,
.apple-nav .dropdown-toggle {
color: #000;
padding: 12px 20px;
transition: opacity 0.2s ease;
}
.apple-nav .nav-link:hover,
.apple-nav .dropdown-toggle:hover {
opacity: 0.65;
}
.apple-nav .dropdown-menu {
background-color: rgba(255, 255, 255, 0.8);
backdrop-filter: saturate(180%) blur(20px);
border: none;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.apple-nav .dropdown-item {
color: #000;
font-size: 14px;
font-weight: 300;
padding: 10px 20px;
}
.apple-nav .dropdown-item:hover {
background-color: rgba(0, 0, 0, 0.05);
}
.apple-toggler {
border: none;
padding: 0 20px;
}
.apple-toggler:focus {
box-shadow: none;
}
@media (max-width: 991px) {
.apple-navbar {
padding: 10px 0;
justify-content: flex-start;
}
.apple-nav .nav-link,
.apple-nav .dropdown-toggle {
padding: 10px 20px;
}
.nav-item {
flex-direction: row;
}
.nav-icon {
margin-right: 8px;
margin-bottom: 0;
}
.nav-text {
font-size: 16px;
}
} }
\ No newline at end of file
import React from 'react';
import Nav from "react-bootstrap/Nav"; import Nav from "react-bootstrap/Nav";
import BootstrapNavbar from "react-bootstrap/Navbar"; import BootstrapNavbar from "react-bootstrap/Navbar";
import NavDropdown from "react-bootstrap/NavDropdown"; import NavDropdown from "react-bootstrap/NavDropdown";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import Pages from "../pages"; import Pages from "../pages.ts";
import { Container } from "react-bootstrap"; import { Container } from "react-bootstrap";
import "./Navbar.css"; import "./Navbar.css"; // 添加这行来引入自定义 CSS 文件的1
// test
export function Navbar() { export function Navbar() {
const renderNavItem = (item: any, pageIndex: number, isSubItem: boolean = false) => { const pages = Pages.map((item, pageIndex) => {
if (item.folder) { if ("folder" in item && item.folder) {
const folderItems = item.folder.map((subpage: any, subpageIndex: number) => const folderItems = item.folder.map((subpage, subpageIndex) => {
renderNavItem(subpage, subpageIndex, true) if (subpage.path) {
); return (
<NavDropdown.Item
key={`subpage-${pageIndex}-${subpageIndex}`}
as={Link}
to={subpage.path}
className="custom-dropdown-menu"
>
{subpage.name}
</NavDropdown.Item>
);
}
});
return ( return (
<NavDropdown <NavDropdown
key={`page-${pageIndex}`} key={`page-${pageIndex}`}
title={ title={item.name}
<span className="nav-item"> id="basic-nav-dropdown"
<img src={`/icons/${item.name.toLowerCase()}.png`} alt={item.name} className="nav-icon" /> className="custom-dropdown-menu"
<span className="nav-text">{item.name}</span>
</span>
}
id={`dropdown-${item.name.toLowerCase()}`}
className="custom-dropdown"
> >
{folderItems} {folderItems}
</NavDropdown> </NavDropdown>
); );
} else if (item.path) { } else if ("path" in item && item.path) {
const content = ( return (
<span className="nav-item"> <Nav.Link
<img src={`/icons/${item.name.toLowerCase()}.png`} alt={item.name} className="nav-icon" /> key={`page-${pageIndex}`} as={Link} to={item.path}
<span className="nav-text">{item.name}</span> className="custom-dropdown-menu"
</span>
);
return isSubItem ? (
<NavDropdown.Item
key={`subpage-${pageIndex}`}
as={Link}
to={item.path}
className="custom-dropdown-item"
>
{content}
</NavDropdown.Item>
) : (
<Nav.Link
key={`page-${pageIndex}`}
as={Link}
to={item.path}
className="custom-nav-link"
> >
{content} {item.name}
</Nav.Link> </Nav.Link>
); );
} }
return null; });
};
const pages = Pages.map((item, index) => renderNavItem(item, index));
return ( return (
<BootstrapNavbar expand="lg" className="apple-navbar" fixed="top"> <BootstrapNavbar expand="lg" className="apple-navbar" fixed="top">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment