.header { position: fixed; top: 0; left: 0; z-index: 1000; height: 7.5rem; width: 100%; font-family: Source Han Sans, Source Han Sans; font-weight: 700; font-size: 1.125rem; line-height: 1.625rem; text-align: left; font-style: normal; text-transform: none; /* transition: all 0.7s ease-in-out; transition-delay: 0.3s; */ } .header::before { content: ''; display: block; position: absolute; top: 0; left: 0; width: 100%; height: 0%; background: #fff; transition: height 0.5s ease-in-out; } .showDropPanel.header::before { height: 100%; transition: height 0.2s ease-in-out; } .whiteMode.header::before { height: 100%; } .whiteMode.header { /* background: rgba(255, 255, 255, 1); */ box-shadow: 0 0 .625rem 0 rgba(255, 255, 255, 0.1); box-shadow: 0 0 .625rem 0 rgba(0, 0, 0, 0.2); transition-delay: none; } .keepNavDark.header::before { height: 7.5rem; } .whiteMode .navLink, .showDropPanel .navLink, .keepNavDark .navLink, .keepNavDark .langTrigger, .keepNavDark .searchBtn, .keepNavDark svg { color: #222222; /* transition: color 0.3s ease-in-out; */ } .keepNavDark svg path { fill: #222222; } .whiteMode, .showDropPanel { .searchBtn { color: #222222; } .langTrigger { color: #222222; } svg, svg path { fill: #222222 !important; } } .activeNav .navLink { color: #14355C; } .headerInner { position: relative; display: flex; align-items: center; justify-content: space-between; height: 100%; width: 100%; z-index: 99999; } .headerInner::after { position: absolute; top: 100%; left: 0; right: 0; content: ''; display: block; width: 95%; margin: 0 auto; box-sizing: border-box; height: .0625rem; background: #FFFFFF; transform: scaleX(0); transform-origin: 90% 0; /* 交点:左侧 85%,右侧 15%,从此点向左右展开 */ transition: transform 1.5s ease-in-out; } .animate { &.headerInner::after { transform: scaleX(1); } .crossYline { height: 100%; } } .whiteMode, .showDropPanel { .headerInner::after { transform: scaleX(0); } .crossYline { height: 0%; } } .logo { display: flex; flex-direction: column; font-weight: 600; line-height: 1.3; } .commonMode { .logo img { transition: filter 0.5s steps(1); } } .headerRight { display: flex; align-items: center; gap: 1.875rem; height: 100%; } .nav { display: flex; align-items: center; gap: 0; list-style: none; margin: 0; padding: 0; margin-right: 1.875rem; } .navItem { padding: 0 1.875rem; } .navLink { color: #fff; text-decoration: none; white-space: nowrap; cursor: pointer; } .navLink:hover { color: #14355C !important; } .navLink:hover { opacity: 0.9; } .actions { display: flex; height: 100%; align-items: center; gap: 1rem; margin-left: 1.875rem; } .crossYline { width: .0625rem; height: 0%; background: #FFFFFF; align-self: flex-end; /* 交点在最底部,从此点向上展开 */ transform-origin: center bottom; /* 缩放从底部中心点展开 */ transition: height 1s ease-in-out; } .langTrigger { display: flex; align-items: center; gap: .25rem; color: #fff; background: transparent; border: none; cursor: pointer; font-weight: bold; } .searchBtn { color: #fff; background: transparent; border: none; cursor: pointer; padding: .25rem; display: flex; align-items: center; justify-content: center; } .dropPanel { position: absolute; top: 100%; left: 0; width: 100%; height: 0; background: rgba(255, 255, 255, 0.9); box-shadow: 0 0 .625rem 0 rgba(0, 0, 0, 0.1); padding: 0; z-index: 1000; overflow: hidden; transition: height 0.5s ease-in-out, padding-top 0.5s ease-in-out; /* transition-delay: 0.45s; */ &.visible { height: 23.75rem; padding-top: 1.25rem; } } .dropPanelContent { display: inline-flex; flex-direction: column; text-align: center; transform: translateX(-50%); } .dropPanelLink { font-weight: 400; font-size: 1.125rem; line-height: 3.125rem; color: #222222; text-decoration: none; &:hover { color: #14355C; } } @media (max-width: 64rem) { .header { height: 5.5rem; } .headerInner::after { left: 1.5rem; width: calc(100% - 3rem); } .navItem { padding: 0 1rem; } .headerRight { gap: 1rem; } .nav { margin-right: 1rem; } .actions { margin-left: 1rem; } } /* Hamburger button - hidden on desktop */ .hamburger { display: none; align-items: center; justify-content: center; background: transparent; border: none; cursor: pointer; padding: 0.25rem; position: relative; z-index: 1; width: 2.5rem; height: 2.5rem; } .hamburgerBar { display: block; width: 1.5rem; height: 2px; background: #fff; position: relative; transition: background 0.3s; } .hamburgerBar::before, .hamburgerBar::after { content: ''; display: block; width: 1.5rem; height: 2px; background: #fff; position: absolute; left: 0; transition: transform 0.3s, top 0.3s; } .hamburgerBar::before { top: -0.45rem; } .hamburgerBar::after { top: 0.45rem; } .hamburgerOpen .hamburgerBar { background: transparent; } .hamburgerOpen .hamburgerBar::before { top: 0; transform: rotate(45deg); background: #222; } .hamburgerOpen .hamburgerBar::after { top: 0; transform: rotate(-45deg); background: #222; } .whiteMode .hamburgerBar, .whiteMode .hamburgerBar::before, .whiteMode .hamburgerBar::after, .keepNavDark .hamburgerBar, .keepNavDark .hamburgerBar::before, .keepNavDark .hamburgerBar::after { background: #222; } .hamburgerOpen .hamburgerBar { background: transparent !important; } /* Mobile drawer */ .mobileDrawer { position: fixed; top: 0; left: 0; width: 100%; height: 100vh; height: 100dvh; background: #fff; z-index: 999; padding-top: 4rem; overflow-y: auto; transform: translateX(100%); transition: transform 0.35s ease; } .mobileDrawerOpen { transform: translateX(0); } .mobileNavList { list-style: none; margin: 0; padding: 1.5rem 1.25rem; margin-top: 3rem; } .mobileNavItem { border-bottom: 1px solid #eee; } .mobileNavLink { display: flex; align-items: center; justify-content: space-between; padding: 1rem 0; font-size: 1.125rem; font-weight: 600; color: #222; text-decoration: none; cursor: pointer; } .mobileNavArrow { font-size: 0.75rem; transition: transform 0.3s; color: #999; } .mobileNavArrowOpen { transform: rotate(90deg); } .mobileSubList { list-style: none; margin: 0; padding: 0 0 0.5rem 1rem; } .mobileSubLink { display: block; padding: 0.625rem 0; font-size: 1rem; font-weight: 400; color: #555; text-decoration: none; } .mobileSubLink:active { color: #14355C; } .mobileDrawerActions { display: flex; align-items: center; justify-content: space-between; padding: 1.5rem 1.25rem; border-top: 1px solid #eee; margin-top: 1rem; } .mobileDrawerActions .searchBtn { color: #222; } .mobileDrawerActions .searchBtn svg, .mobileDrawerActions .searchBtn svg path { fill: #222 !important; } .mobileDrawerActions .langTrigger { color: #222; } @media (max-width: 48rem) { .header { height: 8rem; width: 100vw; } .headerInner::after { left: 1rem; width: calc(100% - 2rem); } .nav, .actions, .crossYline { display: none; } .hamburger { display: flex; } .dropPanel { display: none; } }