| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- * {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
- }
- html, body {
- width: 100%;
- height: 100%;
- overflow: hidden;
- background: radial-gradient(ellipse 1400px 700px at 10% 0%, rgba(50,140,255,0.15), transparent 65%),
- radial-gradient(ellipse 1000px 500px at 90% 100%, rgba(0,200,255,0.1), transparent 60%),
- linear-gradient(150deg, $bg-0, $bg-1 45%, $bg-2);
- color: $text-primary;
- font-family: "DIN Alternate","Alibaba PuHuiTi","PingFang SC","Microsoft YaHei",sans-serif;
- }
- #app {
- width: 100%;
- height: 100%;
- position: relative;
- }
- // 滚动条样式
- ::-webkit-scrollbar {
- width: 4px;
- height: 4px;
- }
- ::-webkit-scrollbar-thumb {
- background: $border-color;
- border-radius: 2px;
- &:hover {
- background: $accent;
- box-shadow: 0 0 8px rgba(72,215,255,0.4);
- }
- }
- ::-webkit-scrollbar-track {
- background: transparent;
- }
- // ======================== 视口缩放容器 ========================
- .viewport {
- width: 100%;
- height: 100%;
- position: relative;
- }
- .screen {
- width: 1920px;
- height: 1080px;
- position: absolute;
- left: 50%;
- top: 50%;
- transform-origin: center center;
- overflow: hidden;
- }
- // 科技网格叠加
- .screen::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- pointer-events: none;
- z-index: 0;
- background-image:
- linear-gradient(rgba(72,180,255,0.04) 1px, transparent 1px),
- linear-gradient(90deg, rgba(72,180,255,0.04) 1px, transparent 1px);
- background-size: 60px 60px;
- mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, rgba(0,0,0,0.5) 0%, transparent 100%);
- }
- // 环境浮动粒子
- .screen::after {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- pointer-events: none;
- z-index: 1;
- background:
- radial-gradient(1.5px 1.5px at 15% 25%, rgba(72,215,255,0.5), transparent),
- radial-gradient(1px 1px at 85% 15%, rgba(72,215,255,0.4), transparent),
- radial-gradient(1.5px 1.5px at 45% 80%, rgba(58,123,255,0.4), transparent),
- radial-gradient(1px 1px at 70% 55%, rgba(72,215,255,0.3), transparent),
- radial-gradient(1.5px 1.5px at 25% 60%, rgba(100,200,255,0.35), transparent),
- radial-gradient(1px 1px at 90% 75%, rgba(72,215,255,0.3), transparent);
- animation: particleDrift 20s ease-in-out infinite alternate;
- }
- @keyframes particleDrift {
- 0% { transform: translate(0, 0); opacity: 0.6; }
- 50% { transform: translate(-8px, 6px); opacity: 1; }
- 100% { transform: translate(5px, -4px); opacity: 0.7; }
- }
- // ======================== 面板通用样式 ========================
- .panel-box {
- background: transparent;
- border: 1px solid rgba(72, 180, 255, 0.12);
- border-radius: 6px;
- padding: 14px 16px;
- position: relative;
- overflow: hidden;
- transition: box-shadow 0.4s ease;
- display: flex;
- flex-direction: column;
- // 面板内背景遮罩(遮挡旋转锥形渐变)
- &::before {
- content: '';
- position: absolute;
- inset: 2px;
- background: #061638;
- border-radius: 4px;
- z-index: 1;
- }
- // 旋转边框流光
- &::after {
- content: '';
- position: absolute;
- top: 50%;
- left: 50%;
- width: 200%;
- aspect-ratio: 1;
- background: conic-gradient(
- from 0deg at 50% 50%,
- #3BAFD6 0%,
- transparent 8%,
- transparent 92%,
- #3BAFD6 100%
- );
- transform: translate(-50%, -50%);
- animation: borderGlowRotate 4s linear infinite;
- z-index: 0;
- pointer-events: none;
- will-change: transform;
- }
- &:hover {
- box-shadow: 0 0 24px rgba(59, 175, 214, 0.2) !important;
- }
- .panel-title {
- font-size: 15px;
- font-weight: 600;
- letter-spacing: 2px;
- color: #fff;
- margin-bottom: 12px;
- padding-left: 12px;
- position: relative;
- z-index: 2;
- display: flex;
- align-items: center;
- flex-shrink: 0;
- &::before {
- content: '';
- position: absolute;
- left: 0;
- top: 2px;
- width: 3px;
- height: 14px;
- background: $accent;
- border-radius: 2px;
- box-shadow: 0 0 8px $accent;
- animation: titleBarGlow 2.5s ease-in-out infinite;
- }
- }
- .panel-content {
- padding: 0;
- position: relative;
- z-index: 2;
- flex: 1;
- min-height: 0;
- display: flex;
- flex-direction: column;
- }
- }
- // 面板四角装饰
- .corner-deco {
- position: absolute;
- width: 14px;
- height: 14px;
- border-color: $accent;
- border-style: solid;
- opacity: 0.7;
- z-index: 4;
- animation: cornerBreathe 3s ease-in-out infinite;
- &.tl { top: -1px; left: -1px; border-width: 2px 0 0 2px; }
- &.tr { top: -1px; right: -1px; border-width: 2px 2px 0 0; animation-delay: 0.5s; }
- &.bl { bottom: -1px; left: -1px; border-width: 0 0 2px 2px; animation-delay: 1s; }
- &.br { bottom: -1px; right: -1px; border-width: 0 2px 2px 0; animation-delay: 1.5s; }
- }
- @keyframes cornerBreathe {
- 0%, 100% { opacity: 0.4; box-shadow: 0 0 4px rgba(72,215,255,0.2); }
- 50% { opacity: 1; box-shadow: 0 0 12px rgba(72,215,255,0.6), 0 0 24px rgba(72,215,255,0.2); }
- }
- @keyframes borderGlowRotate {
- from { transform: translate(-50%, -50%) rotate(0deg); }
- to { transform: translate(-50%, -50%) rotate(360deg); }
- }
- @keyframes titleBarGlow {
- 0%, 100% { box-shadow: 0 0 6px $accent; opacity: 0.7; }
- 50% { box-shadow: 0 0 14px $accent, 0 0 24px rgba(72,215,255,0.3); opacity: 1; }
- }
|