index.vue 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121
  1. <template>
  2. <div class="container">
  3. <Header></Header>
  4. <section class="main-content">
  5. <!-- 标题区域和视频背景 -->
  6. <section class="hero-section">
  7. <!-- 视频背景 -->
  8. <video ref="videoRef" class="hero-video-bg" :src="videoSrc" autoplay loop muted playsinline
  9. @loadedmetadata="onVideoLoaded"></video>
  10. <!-- Canvas动画组件 -->
  11. <ParticlesCanvas class="canvas-overlay" />
  12. <!-- 内容 -->
  13. <div class="hero-content">
  14. <h2 class="hero-title">您专注业务,我们守护安全&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;再强的攻击,也有攻不破的防线
  15. </h2>
  16. <div class="hero-subtitle">
  17. <p>高防服务器&nbsp;|&nbsp;高防DNS&nbsp;|&nbsp;游戏盾SDK&nbsp;|&nbsp;高防CDN&nbsp;全方位守护您的业务</p>
  18. </div>
  19. </div>
  20. </section>
  21. <!-- 产品标签栏 -->
  22. <section class="product-tabs">
  23. <div class="tab-item active">网站安全加速</div>
  24. <div class="tab-item">TCP业务安全</div>
  25. <div class="tab-item">客户端安全加速</div>
  26. <div class="tab-item">专家服务</div>
  27. <div class="tab-item">零信任安全访问</div>
  28. <div class="tab-item">出海业务保障</div>
  29. </section>
  30. <!-- 产品卡片区域 -->
  31. <section class="product-cards">
  32. <div class="product-card">
  33. <h3 class="card-title">Web安全加速</h3>
  34. <p class="card-description">
  35. 为游戏、电商、金融、医疗、门户等网站业务,提供DDoS、CC、页面篡改、爬虫等各类攻击防护,结合精准访问控制和全网联防联控,在抵御各类攻击的同时,保障网站业务的快速稳定访问。
  36. </p>
  37. <div class="card-features">
  38. <span class="feature-tag">支持HTTP、HTTPS和WebSocket协议</span>
  39. <span class="feature-tag">适用网站类业务</span>
  40. </div>
  41. <div class="card-actions">
  42. <button class="btn-primary">更多详情</button>
  43. <button class="btn-secondary">0元体验</button>
  44. </div>
  45. </div>
  46. <div class="divider"></div>
  47. <div class="product-card">
  48. <h3 class="card-title">DNS安全加速</h3>
  49. <p class="card-description">
  50. 安全可靠的智能DNS解析服务,具备多重灾备机制,支持IPv4、IPv6双栈,全球及自定义智能解析线路,运营商缓存刷新,提供大QPS&nbsp;DNS查询攻击、大流量DNS&nbsp;DDoS攻击等针对域名解析的攻击防御服务,为网站域名提供安全、稳定、可靠的解析体验。
  51. </p>
  52. <div class="card-features">
  53. <span class="feature-tag">支持定制专用清洗集群</span>
  54. </div>
  55. <div class="card-actions">
  56. <button class="btn-primary">更多详情</button>
  57. <button class="btn-secondary">0元体验</button>
  58. </div>
  59. </div>
  60. <div class="divider"></div>
  61. <div class="product-card">
  62. <h3 class="card-title">扫描观测(漏洞扫描)</h3>
  63. <p class="card-description">
  64. 为网站业务提供安全体检服务,模拟黑客视角,对网站业务进行可用性监测、内容安全监测、漏洞渗透性探测等风险多维度巡检综合评估,提出相应安全对策,告警安全事件,输出网站安全体检报告
  65. </p>
  66. <div class="card-features">
  67. <span class="feature-tag">支持HTTP、HTTPS和WebSocket协议</span>
  68. <span class="feature-tag">适用网站类业务</span>
  69. </div>
  70. <div class="card-actions">
  71. <button class="btn-primary">更多详情</button>
  72. <button class="btn-secondary">0元体验</button>
  73. </div>
  74. </div>
  75. </section>
  76. <!-- 安全洞见标题 -->
  77. <section class="insight-header">
  78. <h2 class="insight-title">安全洞见&nbsp;&nbsp;&nbsp;全网感知</h2>
  79. <p class="insight-subtitle">实时攻防态势数据</p>
  80. </section>
  81. <!-- 数据展示区域 -->
  82. <section class="stats-section" :style="{ backgroundImage: `url(${homeBg})` }">
  83. <img class="stats-figure" :src="homeD" alt="游戏盾" />
  84. <div class="stat-item">
  85. <div class="stat-label">今日&nbsp;CC&nbsp;攻击次数</div>
  86. <div class="stat-value">19,009</div>
  87. </div>
  88. <div class="stat-item state-other">
  89. <div class="stat-label">今日&nbsp;DDoS&nbsp;攻击峰值</div>
  90. <div class="stat-value">22,844</div>
  91. </div>
  92. <div class="stat-item">
  93. <div class="stat-label">今日&nbsp;WAF&nbsp;拦截次数</div>
  94. <div class="stat-value">56,870</div>
  95. </div>
  96. </section>
  97. <!-- 安全运营与方案模块 -->
  98. <section class="plans-section">
  99. <div class="plans-cards">
  100. <div class="plan-card">
  101. <div class="plan-name">Lite Plan</div>
  102. <div class="plan-desc">适合项目上线初期集成</div>
  103. <div class="old-price">
  104. <del>$1500</del>
  105. <span>节省20.04%</span>
  106. </div>
  107. <div class="plan-price">$999</div>
  108. <div class="plan-actions">
  109. <button class="btn-primary">立即选择</button>
  110. </div>
  111. <div class="plan-title">
  112. <div class="plan-cs">详细参数</div>
  113. <ul class="plan-features">
  114. <li>防护目标数:3个</li>
  115. <li>峰值设备数:200</li>
  116. <li>智能BGP线路</li>
  117. <li>带宽峰值:20M</li>
  118. <li>DDoS防御:无上限</li>
  119. <li>CC防御:100%</li>
  120. </ul>
  121. </div>
  122. </div>
  123. <div class="plan-card">
  124. <div class="plan-name">Basic Plan</div>
  125. <div class="plan-desc">最经济实惠的个人开发者套餐</div>
  126. <div class="old-price">
  127. <del>$2500</del>
  128. <span>节省20.04%</span>
  129. </div>
  130. <div class="plan-price">$1999</div>
  131. <div class="plan-actions">
  132. <button class="btn-primary">立即选择</button>
  133. </div>
  134. <div class="plan-title">
  135. <div class="plan-cs">详细参数</div>
  136. <ul class="plan-features">
  137. <li>防护目标数:10个</li>
  138. <li>峰值设备数:2000</li>
  139. <li>智能CN2/BGP线路</li>
  140. <li>带宽峰值:50M</li>
  141. <li>DDoS防御:无上限</li>
  142. <li>CC防御:100%</li>
  143. </ul>
  144. </div>
  145. </div>
  146. <div class="plan-card">
  147. <div class="plan-name">Standard Plan</div>
  148. <div class="plan-desc">企业入门级畅销精选套餐</div>
  149. <div class="old-price">
  150. <del>$6000</del>
  151. <span>节省16.68%</span>
  152. </div>
  153. <div class="plan-price">$4999</div>
  154. <div class="plan-actions">
  155. <button class="btn-primary ghost">立即选择</button>
  156. </div>
  157. <div class="plan-title">
  158. <div class="plan-cs">详细参数</div>
  159. <ul class="plan-features">
  160. <li>防护目标数:15个</li>
  161. <li>峰值设备数:10000</li>
  162. <li>智能CN2/BGP线路</li>
  163. <li>带宽峰值:80M</li>
  164. <li>DDoS防御:无上限</li>
  165. <li>CC防御:100%</li>
  166. </ul>
  167. </div>
  168. </div>
  169. </div>
  170. </section>
  171. <!-- 安全漏洞 / 全景技术架构上方模块 -->
  172. <section class="security-arch-section">
  173. <img :src="homeBg2" width="1" height="1" class="security-arch-img" />
  174. <div class="security-arch-animate">
  175. <SecurityParticles />
  176. </div>
  177. <div class="security-arch-desc">
  178. <h3 class="security-arch-title">
  179. 全景技术架构,让技术成为增长引擎
  180. </h3>
  181. <div class="security-arch-subtitle">
  182. 从基础设施、数据引擎、服务中台到业务应用,层层协同,将算力、数据与能力统一管理,
  183. 保证系统在高并发、高复杂度场景下依然稳定运行。
  184. </div>
  185. </div>
  186. </section>
  187. <!-- TODO 正常访客等... -->
  188. <!-- 助力各行业客户成功 -->
  189. <section class="cain-section">
  190. <img :src="homeBg3" width="1" height="1" class="cain-section-img" />
  191. <div class="cain-section-animate">
  192. <SecurityParticles />
  193. </div>
  194. <div class="cain-section-desc">
  195. <h3 class="cain-section-title">
  196. 助力各行业客户成功
  197. </h3>
  198. </div>
  199. </section>
  200. <section class="industry">
  201. <div class="industry-content">
  202. <div class="industry-item">
  203. <div class="industry-text">金融</div>
  204. <img :src="icon" alt="金融" class="industry-icon" />
  205. </div>
  206. <div class="industry-item">
  207. <div class="industry-text">互联网</div>
  208. <img :src="icon2" alt="互联网" class="industry-icon" />
  209. </div>
  210. <div class="industry-item">
  211. <div class="industry-text">医疗健康</div>
  212. <img :src="icon3" alt="医疗健康" class="industry-icon" />
  213. </div>
  214. <div class="industry-item">
  215. <div class="industry-text">制造</div>
  216. <img :src="icon4" alt="制造" class="industry-icon" />
  217. </div>
  218. <div class="industry-item">
  219. <div class="industry-text">教育</div>
  220. <img :src="icon5" alt="教育" class="industry-icon" />
  221. </div>
  222. </div>
  223. <div class="industry-other">
  224. <div class="other-item">
  225. <img :src="icon6" alt="卓越教育">
  226. </div>
  227. <div class="other-item">
  228. <img :src="icon7" alt="卓越教育">
  229. </div>
  230. <div class="other-item">
  231. <img :src="icon8" alt="卓越教育">
  232. </div>
  233. <div class="other-item">
  234. <img :src="icon9" alt="卓越教育">
  235. </div>
  236. <div class="other-item">
  237. <img :src="icon10" alt="卓越教育">
  238. </div>
  239. <div class="other-item">
  240. <img :src="icon11" alt="卓越教育">
  241. </div>
  242. <div class="other-item">
  243. <img :src="icon12" alt="卓越教育">
  244. </div>
  245. <div class="other-item">
  246. <img :src="icon13" alt="卓越教育">
  247. </div>
  248. <div class="other-item">
  249. <img :src="icon14" alt="卓越教育">
  250. </div>
  251. <div class="other-item">
  252. <img :src="icon15" alt="卓越教育">
  253. </div>
  254. <div class="other-item">
  255. <img :src="icon16" alt="卓越教育">
  256. </div>
  257. <div class="other-item">
  258. <img :src="icon17" alt="卓越教育">
  259. </div>
  260. <div class="other-item">
  261. <img :src="icon18" alt="卓越教育">
  262. </div>
  263. <div class="other-item">
  264. <img :src="icon19" alt="卓越教育">
  265. </div>
  266. <div class="other-item">
  267. <img :src="icon20" alt="卓越教育">
  268. </div>
  269. </div>
  270. <div class="industry-radar" :style="{ '--radar-bg': `url(${homeBg4})` }">
  271. <div class="radar-dots">
  272. <span class="radar-dot radar-dot-1" />
  273. <span class="radar-dot radar-dot-2" />
  274. <span class="radar-dot radar-dot-3" />
  275. <span class="radar-dot radar-dot-4" />
  276. </div>
  277. </div>
  278. </section>
  279. </section>
  280. <Footer></Footer>
  281. </div>
  282. </template>
  283. <script setup>
  284. import { ref } from 'vue'
  285. import videoSrc from '~/assets/video/home.webm'
  286. import ParticlesCanvas from '~/components/ParticlesCanvas.vue'
  287. import SecurityParticles from '~/components/SecurityParticles.vue'
  288. import homeBg from '~/assets/images/home/home-bg.png'
  289. import homeD from '~/assets/images/home/home-d.png'
  290. import homeBg2 from '~/assets/images/home/home-bg2.png'
  291. import homeBg3 from '~/assets/images/home/home-bg3.png'
  292. import homeBg4 from '~/assets/images/home/home-bg4.png'
  293. import icon from '~/assets/images/home/icon.png'
  294. import icon2 from '~/assets/images/home/icon2.png'
  295. import icon3 from '~/assets/images/home/icon3.png'
  296. import icon4 from '~/assets/images/home/icon4.png'
  297. import icon5 from '~/assets/images/home/icon5.png'
  298. import icon6 from '~/assets/images/home/icon6.png'
  299. import icon7 from '~/assets/images/home/icon7.png'
  300. import icon8 from '~/assets/images/home/icon8.png'
  301. import icon9 from '~/assets/images/home/icon9.png'
  302. import icon10 from '~/assets/images/home/icon10.png'
  303. import icon11 from '~/assets/images/home/icon11.png'
  304. import icon12 from '~/assets/images/home/icon12.png'
  305. import icon13 from '~/assets/images/home/icon13.png'
  306. import icon14 from '~/assets/images/home/icon14.png'
  307. import icon15 from '~/assets/images/home/icon15.png'
  308. import icon16 from '~/assets/images/home/icon16.png'
  309. import icon17 from '~/assets/images/home/icon17.png'
  310. import icon18 from '~/assets/images/home/icon18.png'
  311. import icon19 from '~/assets/images/home/icon19.png'
  312. import icon20 from '~/assets/images/home/icon20.png'
  313. const videoRef = ref(null)
  314. const onVideoLoaded = () => {
  315. if (videoRef.value) {
  316. videoRef.value.play().catch(() => {
  317. // 自动播放失败时静默处理
  318. })
  319. }
  320. }
  321. </script>
  322. <style scoped lang="scss">
  323. .container {
  324. width: 100%;
  325. min-height: 100vh;
  326. background-color: #030014;
  327. overflow-x: hidden;
  328. box-sizing: border-box;
  329. }
  330. .main-content {
  331. width: 100%;
  332. max-width: 1920px;
  333. margin: 0 auto;
  334. padding: 0;
  335. }
  336. // 标题区域(视频作为背景)
  337. .hero-section {
  338. width: 100%;
  339. height: 497px;
  340. position: relative;
  341. display: flex;
  342. align-items: center;
  343. justify-content: center;
  344. padding: 81px 0 0;
  345. box-sizing: border-box;
  346. overflow: hidden;
  347. .hero-video-bg {
  348. position: absolute;
  349. top: 0;
  350. left: 0;
  351. width: 100%;
  352. height: 100%;
  353. object-fit: cover;
  354. object-position: center top; // 只显示上半部分
  355. z-index: 0;
  356. }
  357. .canvas-overlay {
  358. position: absolute;
  359. top: 260px;
  360. left: 0;
  361. width: 100%;
  362. height: 50%; // 只显示上半部分
  363. pointer-events: none;
  364. z-index: 1; // 层级不要太高
  365. }
  366. .hero-content {
  367. width: 100%;
  368. max-width: 1568px;
  369. padding: 0 20px;
  370. box-sizing: border-box;
  371. display: flex;
  372. flex-direction: column;
  373. align-items: center;
  374. position: relative;
  375. z-index: 2; // 内容在视频和canvas之上
  376. margin: 0 auto;
  377. .hero-title {
  378. font-family: 'Source Han Sans CN', sans-serif;
  379. font-size: 30px;
  380. font-weight: 400;
  381. line-height: 30px;
  382. // color: #7c4dff;
  383. margin: 0;
  384. white-space: normal;
  385. text-align: center;
  386. word-break: break-word;
  387. max-width: 100%;
  388. background: linear-gradient(90deg, #7C4DFF 0.24%, #DEB9FF 45.03%, #617FFF 132.52%);
  389. background-clip: text;
  390. -webkit-background-clip: text;
  391. -webkit-text-fill-color: transparent;
  392. }
  393. .hero-subtitle {
  394. margin-top: 28px;
  395. width: 100%;
  396. max-width: 918.27px;
  397. min-height: 341.49px;
  398. position: relative;
  399. display: flex;
  400. justify-content: center;
  401. align-items: flex-start;
  402. p {
  403. font-family: 'Inter', sans-serif;
  404. font-size: 20px;
  405. font-weight: 400;
  406. line-height: normal;
  407. color: #ffffff;
  408. margin: 0;
  409. text-align: center;
  410. white-space: normal;
  411. word-break: break-word;
  412. max-width: 100%;
  413. }
  414. }
  415. }
  416. }
  417. // 产品标签栏
  418. .product-tabs {
  419. width: 100%;
  420. max-width: 1200px;
  421. padding: 0 20px;
  422. box-sizing: border-box;
  423. height: 100px;
  424. margin: 0 auto;
  425. // margin-top: 441px;
  426. border-radius: 150px;
  427. background: linear-gradient(7.88deg, rgba(165, 101, 255, 0.3) 0%, rgba(3, 0, 20, 0.3) 100%);
  428. display: flex;
  429. align-items: center;
  430. .tab-item {
  431. font-family: 'Source Han Sans CN', sans-serif;
  432. font-size: 16px;
  433. font-weight: 400;
  434. line-height: 16px;
  435. color: #ffffff;
  436. margin-left: 90px;
  437. cursor: pointer;
  438. white-space: nowrap;
  439. transition: color 0.3s ease;
  440. &:first-child {
  441. margin-left: 0;
  442. }
  443. &:nth-child(1) {
  444. width: 177px;
  445. height: 60px;
  446. border-radius: 46.5px;
  447. background: linear-gradient(62.84deg, rgba(130, 77, 255, 1) 0%, rgba(164, 125, 255, 1) 100%);
  448. display: flex;
  449. align-items: center;
  450. justify-content: center;
  451. margin-left: 20px;
  452. }
  453. &:hover {
  454. color: #bdbdbd;
  455. }
  456. }
  457. }
  458. // 产品卡片区域
  459. .product-cards {
  460. width: 100%;
  461. max-width: 1200px;
  462. padding: 0 20px;
  463. box-sizing: border-box;
  464. min-height: 474px;
  465. margin: 0 auto;
  466. margin-top: 81px;
  467. border-radius: 20px;
  468. background: linear-gradient(1.67deg, rgba(165, 101, 255, 0.3) 0%, rgba(3, 0, 20, 0.3) 100%);
  469. display: flex;
  470. align-items: center;
  471. justify-content: center;
  472. .product-card {
  473. width: 266px;
  474. height: 336px;
  475. display: flex;
  476. flex-direction: column;
  477. align-items: center;
  478. padding: 0;
  479. .card-title {
  480. font-family: 'Source Han Sans CN', sans-serif;
  481. font-size: 20px;
  482. font-weight: 500;
  483. line-height: 20px;
  484. color: #ffffff;
  485. margin: 0 0 44px 0;
  486. text-align: center;
  487. }
  488. .card-description {
  489. width: 266px;
  490. font-family: 'Source Han Sans CN', sans-serif;
  491. font-size: 14px;
  492. font-weight: 400;
  493. line-height: 24px;
  494. color: #ffffff;
  495. margin: 0 0 30px 0;
  496. text-align: left;
  497. }
  498. .card-features {
  499. width: 237px;
  500. display: flex;
  501. flex-direction: column;
  502. align-items: flex-start;
  503. margin-bottom: 48px;
  504. .feature-tag {
  505. font-family: 'Source Han Sans CN', sans-serif;
  506. font-size: 14px;
  507. font-weight: 400;
  508. line-height: 14px;
  509. color: #9b71ff;
  510. margin-bottom: 12px;
  511. &:last-child {
  512. margin-bottom: 0;
  513. }
  514. }
  515. }
  516. .card-actions {
  517. width: 263px;
  518. display: flex;
  519. align-items: center;
  520. .btn-primary {
  521. width: 120px;
  522. height: 40px;
  523. border-radius: 8px;
  524. background: linear-gradient(24.74deg, rgba(163, 157, 255, 1) 0%, rgba(125, 70, 255, 1) 100%);
  525. border: none;
  526. font-family: 'Source Han Sans CN', sans-serif;
  527. font-size: 14px;
  528. font-weight: 400;
  529. color: #ffffff;
  530. cursor: pointer;
  531. transition: opacity 0.3s ease;
  532. &:hover {
  533. opacity: 0.8;
  534. }
  535. }
  536. .btn-secondary {
  537. width: 120px;
  538. height: 40px;
  539. border-radius: 8px;
  540. border: 1px solid rgba(255, 255, 255, 0.5);
  541. background: rgba(255, 255, 255, 0.2);
  542. backdrop-filter: blur(15.2px);
  543. font-family: 'Source Han Sans CN', sans-serif;
  544. font-size: 14px;
  545. font-weight: 400;
  546. color: #ffffff;
  547. cursor: pointer;
  548. margin-left: 23px;
  549. transition: opacity 0.3s ease;
  550. &:hover {
  551. opacity: 0.8;
  552. }
  553. }
  554. }
  555. }
  556. .divider {
  557. width: 1px;
  558. height: 450px;
  559. background-color: rgba(255, 255, 255, 0.1);
  560. margin: 0 65.5px;
  561. }
  562. }
  563. // 安全洞见标题
  564. .insight-header {
  565. width: 313px;
  566. margin: 156px auto 0;
  567. display: flex;
  568. flex-direction: column;
  569. align-items: center;
  570. .insight-title {
  571. font-family: 'Source Han Sans CN', sans-serif;
  572. font-size: 36px;
  573. font-weight: 400;
  574. line-height: 36px;
  575. color: #ffffff;
  576. margin: 0;
  577. white-space: nowrap;
  578. }
  579. .insight-subtitle {
  580. font-family: 'Source Han Sans CN', sans-serif;
  581. font-size: 24px;
  582. font-weight: 400;
  583. line-height: 24px;
  584. color: #a39dff;
  585. margin: 24px 0 0 0;
  586. text-align: center;
  587. }
  588. }
  589. // 数据展示区域
  590. .stats-section {
  591. width: 100%;
  592. max-width: 1920px;
  593. height: 749px;
  594. // margin: 80px auto 0;
  595. position: relative;
  596. display: flex;
  597. align-items: center;
  598. justify-content: center;
  599. background-size: cover;
  600. background-position: center top;
  601. overflow: hidden;
  602. .stats-figure {
  603. position: absolute;
  604. top: 280px;
  605. left: 50%;
  606. transform: translateX(-50%) translateY(0);
  607. width: 226.059px;
  608. height: 305.118px;
  609. object-fit: contain;
  610. pointer-events: none;
  611. z-index: 0;
  612. /* 上下浮动动画 */
  613. will-change: transform;
  614. animation: float 3s ease-in-out infinite;
  615. }
  616. @keyframes float {
  617. 0% {
  618. transform: translateX(-50%) translateY(0);
  619. }
  620. 50% {
  621. transform: translateX(-50%) translateY(-20px);
  622. }
  623. 100% {
  624. transform: translateX(-50%) translateY(0);
  625. }
  626. }
  627. .state-other {
  628. position: absolute;
  629. top: 100px;
  630. }
  631. .stat-item {
  632. display: flex;
  633. flex-direction: column;
  634. align-items: center;
  635. justify-content: space-between;
  636. margin: 0 300px;
  637. z-index: 1;
  638. .stat-label {
  639. font-family: 'Source Han Sans CN', sans-serif;
  640. font-size: 24px;
  641. font-weight: 400;
  642. line-height: 24px;
  643. color: #ffffff;
  644. text-align: center;
  645. margin-bottom: 20px;
  646. }
  647. .stat-value {
  648. font-family: 'Roboto', sans-serif;
  649. font-size: 56px;
  650. font-weight: 700;
  651. line-height: 56px;
  652. color: #a182ff;
  653. text-align: center;
  654. }
  655. }
  656. }
  657. // 方案卡片区域
  658. .plans-section {
  659. width: 100%;
  660. max-width: 1200px;
  661. margin: 120px auto 0;
  662. padding: 0 20px;
  663. box-sizing: border-box;
  664. display: flex;
  665. flex-direction: column;
  666. gap: 40px;
  667. .plans-cards {
  668. display: grid;
  669. grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  670. gap: 24px;
  671. }
  672. .plan-card {
  673. border-radius: 20px;
  674. background: rgba(255, 255, 255, 0.08);
  675. border: 1px solid rgba(178, 161, 255, 0.8);
  676. padding: 28px 24px;
  677. box-sizing: border-box;
  678. display: flex;
  679. flex-direction: column;
  680. gap: 14px;
  681. min-height: 380px;
  682. &:hover {
  683. border: 2px solid rgba(178, 161, 255, 0.9);
  684. box-shadow: 0 10px 30px rgba(125, 70, 255, 0.3);
  685. background: linear-gradient(1.67deg, rgba(165, 101, 255, 0.16) 0%, rgba(3, 0, 20, 0.1) 100%);
  686. .plan-actions .btn-primary {
  687. background: linear-gradient(91deg, #A39DFF 1.24%, #7D46FF 122.93%);
  688. }
  689. }
  690. // &.highlight {
  691. // }
  692. .plan-name {
  693. text-align: center;
  694. font-family: 'Roboto', sans-serif;
  695. font-size: 36px;
  696. font-weight: 700;
  697. line-height: 26px;
  698. color: #ffffff;
  699. }
  700. .plan-desc {
  701. text-align: center;
  702. font-family: 'Source Han Sans CN', sans-serif;
  703. font-size: 20px;
  704. font-weight: 400;
  705. line-height: 20px;
  706. color: #e0d3ff;
  707. }
  708. .old-price {
  709. display: flex;
  710. justify-content: center;
  711. align-items: center;
  712. gap: 12px;
  713. del {
  714. color: #A39DFF;
  715. font-size: 20px;
  716. font-style: normal;
  717. font-weight: 500;
  718. line-height: 20px;
  719. }
  720. span {
  721. display: flex;
  722. border-radius: 17.5px;
  723. background: #7D46FF;
  724. color: #fff;
  725. width: 145px;
  726. height: 35px;
  727. justify-content: center;
  728. align-items: center;
  729. gap: 10px;
  730. }
  731. }
  732. .plan-price {
  733. font-family: 'Roboto', sans-serif;
  734. text-align: center;
  735. font-size: 65px;
  736. font-weight: 700;
  737. line-height: 65px;
  738. color: #ffffff;
  739. margin: 8px 0;
  740. }
  741. .plan-actions {
  742. display: flex;
  743. gap: 12px;
  744. align-items: center;
  745. .btn-primary {
  746. flex: 1;
  747. height: 44px;
  748. border-radius: 50px;
  749. background: linear-gradient(91deg, rgba(163, 157, 255, 0.20) 1.24%, rgba(125, 70, 255, 0.20) 122.93%);
  750. border: none;
  751. color: #fff;
  752. font-family: 'Source Han Sans CN', sans-serif;
  753. font-size: 24px;
  754. cursor: pointer;
  755. transition: opacity 0.3s ease;
  756. &:hover {
  757. opacity: 0.85;
  758. }
  759. }
  760. .btn-link {
  761. flex: 1;
  762. height: 44px;
  763. border-radius: 10px;
  764. border: 1px solid rgba(255, 255, 255, 0.5);
  765. background: transparent;
  766. color: #fff;
  767. font-family: 'Source Han Sans CN', sans-serif;
  768. font-size: 16px;
  769. cursor: pointer;
  770. transition: opacity 0.3s ease;
  771. &:hover {
  772. opacity: 0.8;
  773. }
  774. }
  775. }
  776. .plan-title {
  777. .plan-cs {
  778. margin: 22px 0;
  779. color: #fff;
  780. font-size: 20px;
  781. font-style: normal;
  782. font-weight: 600;
  783. line-height: 20px;
  784. }
  785. .plan-features {
  786. margin: 0;
  787. padding: 0;
  788. display: grid;
  789. grid-template-columns: repeat(2, 1fr);
  790. gap: 8px;
  791. li {
  792. position: relative;
  793. font-family: 'Source Han Sans CN', sans-serif;
  794. padding-left: 20px;
  795. font-size: 14px;
  796. font-weight: 400;
  797. line-height: 20px;
  798. color: #ffffff;
  799. &::before {
  800. content: "";
  801. position: absolute;
  802. left: 0;
  803. top: 50%;
  804. transform: translateY(-50%);
  805. width: 16px;
  806. height: 16px;
  807. border-radius: 50%;
  808. background-color: #a39dff;
  809. display: flex;
  810. align-items: center;
  811. justify-content: center;
  812. }
  813. &::after {
  814. position: absolute;
  815. left: 4px;
  816. top: 50%;
  817. transform: translateY(-50%);
  818. content: "✓";
  819. color: #fff;
  820. font-size: 10px;
  821. font-weight: bold;
  822. text-align: center;
  823. }
  824. }
  825. }
  826. }
  827. }
  828. }
  829. // 安全架构展示(到全景技术架构上方)
  830. .security-arch-section {
  831. position: relative;
  832. padding-top: 496px;
  833. padding-bottom: 60px;
  834. box-sizing: border-box;
  835. .security-arch-img {
  836. left: 50%;
  837. position: absolute;
  838. top: 56px;
  839. transform: translate(-50%);
  840. height: 700px;
  841. width: 806px;
  842. }
  843. .security-arch-animate {
  844. height: 212px;
  845. left: 50%;
  846. mask-size: cover;
  847. position: absolute;
  848. top: 234px;
  849. transform: translate(-50%);
  850. width: 936px;
  851. opacity: .7;
  852. pointer-events: none;
  853. }
  854. .security-arch-desc {
  855. color: #fff;
  856. position: absolute;
  857. left: 50%;
  858. top: 500px;
  859. transform: translate(-50%, -50%);
  860. /* 限制宽度并居中:保证 title 与 subtitle 两端对齐 */
  861. width: min(760px, 90%);
  862. text-align: justify;
  863. .security-arch-title {
  864. font-size: 40px;
  865. font-style: normal;
  866. font-weight: 400;
  867. line-height: 40px;
  868. margin: 0 auto;
  869. /* 通过伪元素强制单行也两端对齐 */
  870. text-align: justify;
  871. display: block;
  872. &::after {
  873. content: "";
  874. display: inline-block;
  875. width: 100%;
  876. height: 0;
  877. }
  878. }
  879. .security-arch-subtitle {
  880. margin-top: 20px;
  881. color: rgba(255, 255, 255, 0.80);
  882. font-size: 18px;
  883. font-style: normal;
  884. font-weight: 400;
  885. line-height: 24px;
  886. white-space: normal;
  887. word-break: break-word;
  888. text-align: justify;
  889. /* 两端对齐并自动换行 */
  890. }
  891. }
  892. }
  893. //彩虹部分
  894. .cain-section {
  895. position: relative;
  896. padding-top: 496px;
  897. padding-bottom: 60px;
  898. box-sizing: border-box;
  899. .cain-section-img {
  900. left: 50%;
  901. position: absolute;
  902. top: 56px;
  903. transform: translate(-50%);
  904. height: 400px;
  905. width: 900px;
  906. }
  907. .cain-section-animate {
  908. height: 212px;
  909. left: 50%;
  910. mask-size: cover;
  911. position: absolute;
  912. top: 128px;
  913. transform: translate(-50%);
  914. width: 936px;
  915. opacity: .7;
  916. pointer-events: none;
  917. }
  918. .cain-section-desc {
  919. position: absolute;
  920. left: 50%;
  921. top: 60%;
  922. transform: translate(-50%, -50%);
  923. width: 100%;
  924. text-align: center;
  925. .cain-section-title {
  926. font-size: 45px;
  927. color: #ffffff;
  928. margin: 0;
  929. font-weight: 400;
  930. }
  931. }
  932. }
  933. .industry {
  934. display: flex;
  935. flex-direction: column;
  936. align-items: center;
  937. gap: 40px;
  938. .industry-content {
  939. display: flex;
  940. gap: 16px;
  941. }
  942. .industry-item {
  943. display: flex;
  944. justify-content: space-between;
  945. width: 240px;
  946. height: 100px;
  947. border-radius: 10px;
  948. background: linear-gradient(118deg, #C9C5FF -25.53%, #5704FF 110.12%);
  949. }
  950. .industry-icon {
  951. width: 150px;
  952. height: 100px;
  953. }
  954. .industry-text {
  955. padding: 16px 0 0 16px;
  956. font-family: 'Source Han Sans CN', sans-serif;
  957. font-size: 18px;
  958. font-weight: 400;
  959. line-height: 18px;
  960. color: #fff;
  961. }
  962. .industry-other {
  963. display: grid;
  964. gap: 16px;
  965. grid-template-columns: repeat(5, 1fr);
  966. grid-template-rows: repeat(3, auto);
  967. }
  968. .other-item {
  969. display: flex;
  970. justify-content: center;
  971. align-items: center;
  972. width: 240px;
  973. height: 100px;
  974. border-radius: 20px;
  975. border: 1px solid #B2A1FF;
  976. background: #1C192B;
  977. }
  978. .industry-radar {
  979. position: relative;
  980. width: 640px;
  981. height: 260px;
  982. overflow: hidden;
  983. }
  984. .industry-radar::before {
  985. content: "";
  986. position: absolute;
  987. left: 50%;
  988. top: 0;
  989. transform: translateX(-50%);
  990. width: 100%;
  991. height: 200%;
  992. background-image: var(--radar-bg);
  993. background-repeat: no-repeat;
  994. background-position: center top;
  995. background-size: cover;
  996. opacity: 0.95;
  997. }
  998. }
  999. @keyframes radarBlink {
  1000. 0% {
  1001. transform: scale(0.6);
  1002. opacity: 0.2;
  1003. }
  1004. 50% {
  1005. transform: scale(1.2);
  1006. opacity: 1;
  1007. }
  1008. 100% {
  1009. transform: scale(0.6);
  1010. opacity: 0.2;
  1011. }
  1012. }
  1013. </style>