global.scss 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. * {
  2. margin: 0;
  3. padding: 0;
  4. box-sizing: border-box;
  5. }
  6. html, body {
  7. width: 100%;
  8. height: 100%;
  9. overflow: hidden;
  10. background: radial-gradient(ellipse 1400px 700px at 10% 0%, rgba(50,140,255,0.15), transparent 65%),
  11. radial-gradient(ellipse 1000px 500px at 90% 100%, rgba(0,200,255,0.1), transparent 60%),
  12. linear-gradient(150deg, $bg-0, $bg-1 45%, $bg-2);
  13. color: $text-primary;
  14. font-family: "DIN Alternate","Alibaba PuHuiTi","PingFang SC","Microsoft YaHei",sans-serif;
  15. }
  16. #app {
  17. width: 100%;
  18. height: 100%;
  19. position: relative;
  20. }
  21. // 滚动条样式
  22. ::-webkit-scrollbar {
  23. width: 4px;
  24. height: 4px;
  25. }
  26. ::-webkit-scrollbar-thumb {
  27. background: $border-color;
  28. border-radius: 2px;
  29. &:hover {
  30. background: $accent;
  31. box-shadow: 0 0 8px rgba(72,215,255,0.4);
  32. }
  33. }
  34. ::-webkit-scrollbar-track {
  35. background: transparent;
  36. }
  37. // ======================== 视口缩放容器 ========================
  38. .viewport {
  39. width: 100%;
  40. height: 100%;
  41. position: relative;
  42. }
  43. .screen {
  44. width: 1920px;
  45. height: 1080px;
  46. position: absolute;
  47. left: 50%;
  48. top: 50%;
  49. transform-origin: center center;
  50. overflow: hidden;
  51. }
  52. // 科技网格叠加
  53. .screen::before {
  54. content: '';
  55. position: absolute;
  56. top: 0;
  57. left: 0;
  58. right: 0;
  59. bottom: 0;
  60. pointer-events: none;
  61. z-index: 0;
  62. background-image:
  63. linear-gradient(rgba(72,180,255,0.04) 1px, transparent 1px),
  64. linear-gradient(90deg, rgba(72,180,255,0.04) 1px, transparent 1px);
  65. background-size: 60px 60px;
  66. mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, rgba(0,0,0,0.5) 0%, transparent 100%);
  67. }
  68. // 环境浮动粒子
  69. .screen::after {
  70. content: '';
  71. position: absolute;
  72. top: 0;
  73. left: 0;
  74. right: 0;
  75. bottom: 0;
  76. pointer-events: none;
  77. z-index: 1;
  78. background:
  79. radial-gradient(1.5px 1.5px at 15% 25%, rgba(72,215,255,0.5), transparent),
  80. radial-gradient(1px 1px at 85% 15%, rgba(72,215,255,0.4), transparent),
  81. radial-gradient(1.5px 1.5px at 45% 80%, rgba(58,123,255,0.4), transparent),
  82. radial-gradient(1px 1px at 70% 55%, rgba(72,215,255,0.3), transparent),
  83. radial-gradient(1.5px 1.5px at 25% 60%, rgba(100,200,255,0.35), transparent),
  84. radial-gradient(1px 1px at 90% 75%, rgba(72,215,255,0.3), transparent);
  85. animation: particleDrift 20s ease-in-out infinite alternate;
  86. }
  87. @keyframes particleDrift {
  88. 0% { transform: translate(0, 0); opacity: 0.6; }
  89. 50% { transform: translate(-8px, 6px); opacity: 1; }
  90. 100% { transform: translate(5px, -4px); opacity: 0.7; }
  91. }
  92. // ======================== 面板通用样式 ========================
  93. .panel-box {
  94. background: transparent;
  95. border: 1px solid rgba(72, 180, 255, 0.12);
  96. border-radius: 6px;
  97. padding: 14px 16px;
  98. position: relative;
  99. overflow: hidden;
  100. transition: box-shadow 0.4s ease;
  101. display: flex;
  102. flex-direction: column;
  103. // 面板内背景遮罩(遮挡旋转锥形渐变)
  104. &::before {
  105. content: '';
  106. position: absolute;
  107. inset: 2px;
  108. background: #061638;
  109. border-radius: 4px;
  110. z-index: 1;
  111. }
  112. // 旋转边框流光
  113. &::after {
  114. content: '';
  115. position: absolute;
  116. top: 50%;
  117. left: 50%;
  118. width: 200%;
  119. aspect-ratio: 1;
  120. background: conic-gradient(
  121. from 0deg at 50% 50%,
  122. #3BAFD6 0%,
  123. transparent 8%,
  124. transparent 92%,
  125. #3BAFD6 100%
  126. );
  127. transform: translate(-50%, -50%);
  128. animation: borderGlowRotate 4s linear infinite;
  129. z-index: 0;
  130. pointer-events: none;
  131. will-change: transform;
  132. }
  133. &:hover {
  134. box-shadow: 0 0 24px rgba(59, 175, 214, 0.2) !important;
  135. }
  136. .panel-title {
  137. font-size: 15px;
  138. font-weight: 600;
  139. letter-spacing: 2px;
  140. color: #fff;
  141. margin-bottom: 12px;
  142. padding-left: 12px;
  143. position: relative;
  144. z-index: 2;
  145. display: flex;
  146. align-items: center;
  147. flex-shrink: 0;
  148. &::before {
  149. content: '';
  150. position: absolute;
  151. left: 0;
  152. top: 2px;
  153. width: 3px;
  154. height: 14px;
  155. background: $accent;
  156. border-radius: 2px;
  157. box-shadow: 0 0 8px $accent;
  158. animation: titleBarGlow 2.5s ease-in-out infinite;
  159. }
  160. }
  161. .panel-content {
  162. padding: 0;
  163. position: relative;
  164. z-index: 2;
  165. flex: 1;
  166. min-height: 0;
  167. display: flex;
  168. flex-direction: column;
  169. }
  170. }
  171. // 面板四角装饰
  172. .corner-deco {
  173. position: absolute;
  174. width: 14px;
  175. height: 14px;
  176. border-color: $accent;
  177. border-style: solid;
  178. opacity: 0.7;
  179. z-index: 4;
  180. animation: cornerBreathe 3s ease-in-out infinite;
  181. &.tl { top: -1px; left: -1px; border-width: 2px 0 0 2px; }
  182. &.tr { top: -1px; right: -1px; border-width: 2px 2px 0 0; animation-delay: 0.5s; }
  183. &.bl { bottom: -1px; left: -1px; border-width: 0 0 2px 2px; animation-delay: 1s; }
  184. &.br { bottom: -1px; right: -1px; border-width: 0 2px 2px 0; animation-delay: 1.5s; }
  185. }
  186. @keyframes cornerBreathe {
  187. 0%, 100% { opacity: 0.4; box-shadow: 0 0 4px rgba(72,215,255,0.2); }
  188. 50% { opacity: 1; box-shadow: 0 0 12px rgba(72,215,255,0.6), 0 0 24px rgba(72,215,255,0.2); }
  189. }
  190. @keyframes borderGlowRotate {
  191. from { transform: translate(-50%, -50%) rotate(0deg); }
  192. to { transform: translate(-50%, -50%) rotate(360deg); }
  193. }
  194. @keyframes titleBarGlow {
  195. 0%, 100% { box-shadow: 0 0 6px $accent; opacity: 0.7; }
  196. 50% { box-shadow: 0 0 14px $accent, 0 0 24px rgba(72,215,255,0.3); opacity: 1; }
  197. }