index.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266
  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 alt="安全架构" :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 alt="助力各行业客户成功" :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="3L">
  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-box">
  271. <div class="industry-radar">
  272. <img :src="homeBg4" alt="radar" class="radar-bg-img" />
  273. <div class="radar-dots">
  274. <span class="radar-dot radar-dot-1" />
  275. <span class="radar-dot radar-dot-2" />
  276. <span class="radar-dot radar-dot-3" />
  277. <span class="radar-dot radar-dot-4" />
  278. </div>
  279. </div>
  280. </div>
  281. <div class="industry-title">
  282. <h3><span>立即加入</span> <span>安全之旅</span></h3>
  283. <div class="industry-subtitle">完成注册,即可免费体验 DDoS防护、CC防护、DNS解析等多款安全产品</div>
  284. </div>
  285. </section>
  286. <section class="hero-section">
  287. <!-- 视频背景 -->
  288. <video ref="videoRef" class="hero-video-bg" :src="videoSrc" autoplay loop muted playsinline
  289. @loadedmetadata="onVideoLoaded"></video>
  290. <!-- Canvas动画组件 -->
  291. <ParticlesCanvas class="canvas-overlay" />
  292. </section>
  293. </section>
  294. <Footer></Footer>
  295. </div>
  296. </template>
  297. <script setup>
  298. import { ref } from 'vue'
  299. import videoSrc from '~/assets/video/home.webm'
  300. import ParticlesCanvas from '~/components/ParticlesCanvas.vue'
  301. import SecurityParticles from '~/components/SecurityParticles.vue'
  302. import homeBg from '~/assets/images/home/home-bg.png'
  303. import homeD from '~/assets/images/home/home-d.png'
  304. import homeBg2 from '~/assets/images/home/home-bg2.png'
  305. import homeBg3 from '~/assets/images/home/home-bg3.png'
  306. import homeBg4 from '~/assets/images/home/home-bg4.png'
  307. import icon from '~/assets/images/home/icon.png'
  308. import icon2 from '~/assets/images/home/icon2.png'
  309. import icon3 from '~/assets/images/home/icon3.png'
  310. import icon4 from '~/assets/images/home/icon4.png'
  311. import icon5 from '~/assets/images/home/icon5.png'
  312. import icon6 from '~/assets/images/home/icon6.png'
  313. import icon7 from '~/assets/images/home/icon7.png'
  314. import icon8 from '~/assets/images/home/icon8.png'
  315. import icon9 from '~/assets/images/home/icon9.png'
  316. import icon10 from '~/assets/images/home/icon10.png'
  317. import icon11 from '~/assets/images/home/icon11.png'
  318. import icon12 from '~/assets/images/home/icon12.png'
  319. import icon13 from '~/assets/images/home/icon13.png'
  320. import icon14 from '~/assets/images/home/icon14.png'
  321. import icon15 from '~/assets/images/home/icon15.png'
  322. import icon16 from '~/assets/images/home/icon16.png'
  323. import icon17 from '~/assets/images/home/icon17.png'
  324. import icon18 from '~/assets/images/home/icon18.png'
  325. import icon19 from '~/assets/images/home/icon19.png'
  326. import icon20 from '~/assets/images/home/icon20.png'
  327. const videoRef = ref(null)
  328. const onVideoLoaded = () => {
  329. if (videoRef.value) {
  330. videoRef.value.play().catch(() => {
  331. // 自动播放失败时静默处理
  332. })
  333. }
  334. }
  335. useHead(() => ({
  336. title:'DDAC',
  337. meta: [
  338. { name: 'viewport', content: 'width=device-width, initial-scale=1' },
  339. { name: 'description', content: 'DDAC - 游戏盾防御' },
  340. { name: 'keywords', content: '高防服务器 | 高防DNS | 游戏盾SDK | 高防CDN' }
  341. ],
  342. link: [
  343. { rel: 'icon', href: '/favicon.ico' }
  344. ],
  345. htmlAttrs: {
  346. lang: 'en'
  347. }
  348. }))
  349. </script>
  350. <style scoped lang="scss">
  351. .container {
  352. width: 100%;
  353. min-height: 100vh;
  354. background-color: #030014;
  355. overflow-x: hidden;
  356. box-sizing: border-box;
  357. }
  358. .main-content {
  359. width: 100%;
  360. max-width: 1920px;
  361. margin: 0 auto;
  362. padding: 0;
  363. }
  364. // 标题区域(视频作为背景)
  365. .hero-section {
  366. width: 100%;
  367. height: 497px;
  368. position: relative;
  369. display: flex;
  370. align-items: center;
  371. justify-content: center;
  372. padding: 81px 0 0;
  373. box-sizing: border-box;
  374. overflow: hidden;
  375. .hero-video-bg {
  376. position: absolute;
  377. top: -3%;
  378. left: 0;
  379. width: 100%;
  380. object-fit: cover;
  381. clip-path: inset(0 0 50% 0);
  382. z-index: 0;
  383. }
  384. .canvas-overlay {
  385. position: absolute;
  386. top: 260px;
  387. left: 0;
  388. width: 100%;
  389. height: 50%; // 只显示上半部分
  390. pointer-events: none;
  391. z-index: 1; // 层级不要太高
  392. }
  393. .hero-content {
  394. width: 100%;
  395. max-width: 1568px;
  396. padding: 0 20px;
  397. box-sizing: border-box;
  398. display: flex;
  399. flex-direction: column;
  400. align-items: center;
  401. position: relative;
  402. z-index: 2; // 内容在视频和canvas之上
  403. margin: 0 auto;
  404. .hero-title {
  405. font-family: 'Source Han Sans CN', sans-serif;
  406. font-size: 30px;
  407. font-weight: 400;
  408. line-height: 30px;
  409. // color: #7c4dff;
  410. margin: 0;
  411. white-space: normal;
  412. text-align: center;
  413. word-break: break-word;
  414. max-width: 100%;
  415. background: linear-gradient(90deg, #7C4DFF 0.24%, #DEB9FF 45.03%, #617FFF 132.52%);
  416. background-clip: text;
  417. -webkit-background-clip: text;
  418. -webkit-text-fill-color: transparent;
  419. }
  420. .hero-subtitle {
  421. margin-top: 28px;
  422. width: 100%;
  423. max-width: 918.27px;
  424. min-height: 341.49px;
  425. position: relative;
  426. display: flex;
  427. justify-content: center;
  428. align-items: flex-start;
  429. p {
  430. font-family: 'Inter', sans-serif;
  431. font-size: 20px;
  432. font-weight: 400;
  433. line-height: normal;
  434. color: #ffffff;
  435. margin: 0;
  436. text-align: center;
  437. white-space: normal;
  438. word-break: break-word;
  439. max-width: 100%;
  440. }
  441. }
  442. }
  443. }
  444. // 产品标签栏
  445. .product-tabs {
  446. width: 100%;
  447. max-width: 1200px;
  448. padding: 0 20px;
  449. box-sizing: border-box;
  450. height: 100px;
  451. margin: 0 auto;
  452. // margin-top: 441px;
  453. border-radius: 150px;
  454. background: linear-gradient(7.88deg, rgba(165, 101, 255, 0.3) 0%, rgba(3, 0, 20, 0.3) 100%);
  455. display: flex;
  456. align-items: center;
  457. .tab-item {
  458. font-family: 'Source Han Sans CN', sans-serif;
  459. font-size: 16px;
  460. font-weight: 400;
  461. line-height: 16px;
  462. color: #ffffff;
  463. margin-left: 90px;
  464. cursor: pointer;
  465. white-space: nowrap;
  466. transition: color 0.3s ease;
  467. &:first-child {
  468. margin-left: 0;
  469. }
  470. &:nth-child(1) {
  471. width: 177px;
  472. height: 60px;
  473. border-radius: 46.5px;
  474. background: linear-gradient(62.84deg, rgba(130, 77, 255, 1) 0%, rgba(164, 125, 255, 1) 100%);
  475. display: flex;
  476. align-items: center;
  477. justify-content: center;
  478. margin-left: 20px;
  479. }
  480. &:hover {
  481. color: #bdbdbd;
  482. }
  483. }
  484. }
  485. // 产品卡片区域
  486. .product-cards {
  487. width: 100%;
  488. max-width: 1200px;
  489. padding: 0 20px;
  490. box-sizing: border-box;
  491. min-height: 474px;
  492. margin: 0 auto;
  493. margin-top: 81px;
  494. border-radius: 20px;
  495. background: linear-gradient(1.67deg, rgba(165, 101, 255, 0.3) 0%, rgba(3, 0, 20, 0.3) 100%);
  496. display: flex;
  497. align-items: center;
  498. justify-content: center;
  499. .product-card {
  500. width: 266px;
  501. height: 336px;
  502. display: flex;
  503. flex-direction: column;
  504. align-items: center;
  505. padding: 0;
  506. .card-title {
  507. font-family: 'Source Han Sans CN', sans-serif;
  508. font-size: 20px;
  509. font-weight: 500;
  510. line-height: 20px;
  511. color: #ffffff;
  512. margin: 0 0 44px 0;
  513. text-align: center;
  514. }
  515. .card-description {
  516. width: 266px;
  517. font-family: 'Source Han Sans CN', sans-serif;
  518. font-size: 14px;
  519. font-weight: 400;
  520. line-height: 24px;
  521. color: #ffffff;
  522. margin: 0 0 30px 0;
  523. text-align: left;
  524. }
  525. .card-features {
  526. width: 237px;
  527. display: flex;
  528. flex-direction: column;
  529. align-items: flex-start;
  530. margin-bottom: 48px;
  531. .feature-tag {
  532. font-family: 'Source Han Sans CN', sans-serif;
  533. font-size: 14px;
  534. font-weight: 400;
  535. line-height: 14px;
  536. color: #9b71ff;
  537. margin-bottom: 12px;
  538. &:last-child {
  539. margin-bottom: 0;
  540. }
  541. }
  542. }
  543. .card-actions {
  544. width: 263px;
  545. display: flex;
  546. align-items: center;
  547. .btn-primary {
  548. width: 120px;
  549. height: 40px;
  550. border-radius: 8px;
  551. background: linear-gradient(24.74deg, rgba(163, 157, 255, 1) 0%, rgba(125, 70, 255, 1) 100%);
  552. border: none;
  553. font-family: 'Source Han Sans CN', sans-serif;
  554. font-size: 14px;
  555. font-weight: 400;
  556. color: #ffffff;
  557. cursor: pointer;
  558. transition: opacity 0.3s ease;
  559. &:hover {
  560. opacity: 0.8;
  561. }
  562. }
  563. .btn-secondary {
  564. width: 120px;
  565. height: 40px;
  566. border-radius: 8px;
  567. border: 1px solid rgba(255, 255, 255, 0.5);
  568. background: rgba(255, 255, 255, 0.2);
  569. backdrop-filter: blur(15.2px);
  570. font-family: 'Source Han Sans CN', sans-serif;
  571. font-size: 14px;
  572. font-weight: 400;
  573. color: #ffffff;
  574. cursor: pointer;
  575. margin-left: 23px;
  576. transition: opacity 0.3s ease;
  577. &:hover {
  578. opacity: 0.8;
  579. }
  580. }
  581. }
  582. }
  583. .divider {
  584. width: 1px;
  585. height: 450px;
  586. background-color: rgba(255, 255, 255, 0.1);
  587. margin: 0 65.5px;
  588. }
  589. }
  590. // 安全洞见标题
  591. .insight-header {
  592. width: 313px;
  593. margin: 156px auto 0;
  594. display: flex;
  595. flex-direction: column;
  596. align-items: center;
  597. .insight-title {
  598. font-family: 'Source Han Sans CN', sans-serif;
  599. font-size: 36px;
  600. font-weight: 400;
  601. line-height: 36px;
  602. color: #ffffff;
  603. margin: 0;
  604. white-space: nowrap;
  605. }
  606. .insight-subtitle {
  607. font-family: 'Source Han Sans CN', sans-serif;
  608. font-size: 24px;
  609. font-weight: 400;
  610. line-height: 24px;
  611. color: #a39dff;
  612. margin: 24px 0 0 0;
  613. text-align: center;
  614. }
  615. }
  616. // 数据展示区域
  617. .stats-section {
  618. width: 100%;
  619. max-width: 1920px;
  620. height: 749px;
  621. // margin: 80px auto 0;
  622. position: relative;
  623. display: flex;
  624. align-items: center;
  625. justify-content: center;
  626. background-size: cover;
  627. background-position: center top;
  628. overflow: hidden;
  629. .stats-figure {
  630. position: absolute;
  631. top: 280px;
  632. left: 50%;
  633. transform: translateX(-50%) translateY(0);
  634. width: 226.059px;
  635. height: 305.118px;
  636. object-fit: contain;
  637. pointer-events: none;
  638. z-index: 0;
  639. /* 上下浮动动画 */
  640. will-change: transform;
  641. animation: float 3s ease-in-out infinite;
  642. }
  643. @keyframes float {
  644. 0% {
  645. transform: translateX(-50%) translateY(0);
  646. }
  647. 50% {
  648. transform: translateX(-50%) translateY(-20px);
  649. }
  650. 100% {
  651. transform: translateX(-50%) translateY(0);
  652. }
  653. }
  654. .state-other {
  655. position: absolute;
  656. top: 100px;
  657. }
  658. .stat-item {
  659. display: flex;
  660. flex-direction: column;
  661. align-items: center;
  662. justify-content: space-between;
  663. margin: 0 300px;
  664. z-index: 1;
  665. .stat-label {
  666. font-family: 'Source Han Sans CN', sans-serif;
  667. font-size: 24px;
  668. font-weight: 400;
  669. line-height: 24px;
  670. color: #ffffff;
  671. text-align: center;
  672. margin-bottom: 20px;
  673. }
  674. .stat-value {
  675. font-family: 'Roboto', sans-serif;
  676. font-size: 56px;
  677. font-weight: 700;
  678. line-height: 56px;
  679. color: #a182ff;
  680. text-align: center;
  681. }
  682. }
  683. }
  684. // 方案卡片区域
  685. .plans-section {
  686. width: 100%;
  687. max-width: 1200px;
  688. margin: 120px auto 0;
  689. padding: 0 20px;
  690. box-sizing: border-box;
  691. display: flex;
  692. flex-direction: column;
  693. gap: 40px;
  694. .plans-cards {
  695. display: grid;
  696. grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  697. gap: 24px;
  698. }
  699. .plan-card {
  700. border-radius: 20px;
  701. background: rgba(255, 255, 255, 0.08);
  702. border: 1px solid rgba(178, 161, 255, 0.8);
  703. padding: 28px 24px;
  704. box-sizing: border-box;
  705. display: flex;
  706. flex-direction: column;
  707. gap: 14px;
  708. min-height: 380px;
  709. &:hover {
  710. border: 2px solid rgba(178, 161, 255, 0.9);
  711. box-shadow: 0 10px 30px rgba(125, 70, 255, 0.3);
  712. background: linear-gradient(1.67deg, rgba(165, 101, 255, 0.16) 0%, rgba(3, 0, 20, 0.1) 100%);
  713. .plan-actions .btn-primary {
  714. background: linear-gradient(91deg, #A39DFF 1.24%, #7D46FF 122.93%);
  715. }
  716. }
  717. // &.highlight {
  718. // }
  719. .plan-name {
  720. text-align: center;
  721. font-family: 'Roboto', sans-serif;
  722. font-size: 36px;
  723. font-weight: 700;
  724. line-height: 26px;
  725. color: #ffffff;
  726. }
  727. .plan-desc {
  728. text-align: center;
  729. font-family: 'Source Han Sans CN', sans-serif;
  730. font-size: 20px;
  731. font-weight: 400;
  732. line-height: 20px;
  733. color: #e0d3ff;
  734. }
  735. .old-price {
  736. display: flex;
  737. justify-content: center;
  738. align-items: center;
  739. gap: 12px;
  740. del {
  741. color: #A39DFF;
  742. font-size: 20px;
  743. font-style: normal;
  744. font-weight: 500;
  745. line-height: 20px;
  746. }
  747. span {
  748. display: flex;
  749. border-radius: 17.5px;
  750. background: #7D46FF;
  751. color: #fff;
  752. width: 145px;
  753. height: 35px;
  754. justify-content: center;
  755. align-items: center;
  756. gap: 10px;
  757. }
  758. }
  759. .plan-price {
  760. font-family: 'Roboto', sans-serif;
  761. text-align: center;
  762. font-size: 65px;
  763. font-weight: 700;
  764. line-height: 65px;
  765. color: #ffffff;
  766. margin: 8px 0;
  767. }
  768. .plan-actions {
  769. display: flex;
  770. gap: 12px;
  771. align-items: center;
  772. .btn-primary {
  773. flex: 1;
  774. height: 44px;
  775. border-radius: 50px;
  776. background: linear-gradient(91deg, rgba(163, 157, 255, 0.20) 1.24%, rgba(125, 70, 255, 0.20) 122.93%);
  777. border: none;
  778. color: #fff;
  779. font-family: 'Source Han Sans CN', sans-serif;
  780. font-size: 24px;
  781. cursor: pointer;
  782. transition: opacity 0.3s ease;
  783. &:hover {
  784. opacity: 0.85;
  785. }
  786. }
  787. .btn-link {
  788. flex: 1;
  789. height: 44px;
  790. border-radius: 10px;
  791. border: 1px solid rgba(255, 255, 255, 0.5);
  792. background: transparent;
  793. color: #fff;
  794. font-family: 'Source Han Sans CN', sans-serif;
  795. font-size: 16px;
  796. cursor: pointer;
  797. transition: opacity 0.3s ease;
  798. &:hover {
  799. opacity: 0.8;
  800. }
  801. }
  802. }
  803. .plan-title {
  804. .plan-cs {
  805. margin: 22px 0;
  806. color: #fff;
  807. font-size: 20px;
  808. font-style: normal;
  809. font-weight: 600;
  810. line-height: 20px;
  811. }
  812. .plan-features {
  813. margin: 0;
  814. padding: 0;
  815. display: grid;
  816. grid-template-columns: repeat(2, 1fr);
  817. gap: 8px;
  818. li {
  819. position: relative;
  820. font-family: 'Source Han Sans CN', sans-serif;
  821. padding-left: 20px;
  822. font-size: 14px;
  823. font-weight: 400;
  824. line-height: 20px;
  825. color: #ffffff;
  826. &::before {
  827. content: "";
  828. position: absolute;
  829. left: 0;
  830. top: 50%;
  831. transform: translateY(-50%);
  832. width: 16px;
  833. height: 16px;
  834. border-radius: 50%;
  835. background-color: #a39dff;
  836. display: flex;
  837. align-items: center;
  838. justify-content: center;
  839. }
  840. &::after {
  841. position: absolute;
  842. left: 4px;
  843. top: 50%;
  844. transform: translateY(-50%);
  845. content: "✓";
  846. color: #fff;
  847. font-size: 10px;
  848. font-weight: bold;
  849. text-align: center;
  850. }
  851. }
  852. }
  853. }
  854. }
  855. }
  856. // 安全架构展示(到全景技术架构上方)
  857. .security-arch-section {
  858. position: relative;
  859. padding-top: 496px;
  860. padding-bottom: 60px;
  861. box-sizing: border-box;
  862. .security-arch-img {
  863. left: 50%;
  864. position: absolute;
  865. top: 56px;
  866. transform: translate(-50%);
  867. height: 700px;
  868. width: 806px;
  869. }
  870. .security-arch-animate {
  871. height: 212px;
  872. left: 50%;
  873. mask-size: cover;
  874. position: absolute;
  875. top: 234px;
  876. transform: translate(-50%);
  877. width: 936px;
  878. opacity: .7;
  879. pointer-events: none;
  880. }
  881. .security-arch-desc {
  882. color: #fff;
  883. position: absolute;
  884. left: 50%;
  885. top: 500px;
  886. transform: translate(-50%, -50%);
  887. /* 限制宽度并居中:保证 title 与 subtitle 两端对齐 */
  888. width: min(760px, 90%);
  889. text-align: justify;
  890. .security-arch-title {
  891. font-size: 40px;
  892. font-style: normal;
  893. font-weight: 400;
  894. line-height: 40px;
  895. margin: 0 auto;
  896. /* 通过伪元素强制单行也两端对齐 */
  897. text-align: justify;
  898. display: block;
  899. &::after {
  900. content: "";
  901. display: inline-block;
  902. width: 100%;
  903. height: 0;
  904. }
  905. }
  906. .security-arch-subtitle {
  907. margin-top: 20px;
  908. color: rgba(255, 255, 255, 0.80);
  909. font-size: 18px;
  910. font-style: normal;
  911. font-weight: 400;
  912. line-height: 24px;
  913. white-space: normal;
  914. word-break: break-word;
  915. text-align: justify;
  916. /* 两端对齐并自动换行 */
  917. }
  918. }
  919. }
  920. //彩虹部分
  921. .cain-section {
  922. position: relative;
  923. padding-top: 496px;
  924. padding-bottom: 60px;
  925. box-sizing: border-box;
  926. .cain-section-img {
  927. left: 50%;
  928. position: absolute;
  929. top: 56px;
  930. transform: translate(-50%);
  931. height: 400px;
  932. width: 900px;
  933. }
  934. .cain-section-animate {
  935. height: 212px;
  936. left: 50%;
  937. mask-size: cover;
  938. position: absolute;
  939. top: 128px;
  940. transform: translate(-50%);
  941. width: 936px;
  942. opacity: .7;
  943. pointer-events: none;
  944. }
  945. .cain-section-desc {
  946. position: absolute;
  947. left: 50%;
  948. top: 60%;
  949. transform: translate(-50%, -50%);
  950. width: 100%;
  951. text-align: center;
  952. .cain-section-title {
  953. font-size: 45px;
  954. color: #ffffff;
  955. margin: 0;
  956. font-weight: 400;
  957. }
  958. }
  959. }
  960. $Diameter :890px;
  961. .industry {
  962. display: flex;
  963. flex-direction: column;
  964. align-items: center;
  965. gap: 40px;
  966. .industry-content {
  967. display: flex;
  968. gap: 16px;
  969. }
  970. .industry-item {
  971. display: flex;
  972. justify-content: space-between;
  973. width: 240px;
  974. height: 100px;
  975. border-radius: 10px;
  976. background: linear-gradient(118deg, #C9C5FF -25.53%, #5704FF 110.12%);
  977. }
  978. .industry-icon {
  979. width: 150px;
  980. height: 100px;
  981. }
  982. .industry-text {
  983. padding: 16px 0 0 16px;
  984. font-family: 'Source Han Sans CN', sans-serif;
  985. font-size: 18px;
  986. font-weight: 400;
  987. line-height: 18px;
  988. color: #fff;
  989. }
  990. .industry-other {
  991. display: grid;
  992. gap: 16px;
  993. grid-template-columns: repeat(5, 1fr);
  994. grid-template-rows: repeat(3, auto);
  995. }
  996. .other-item {
  997. display: flex;
  998. justify-content: center;
  999. align-items: center;
  1000. width: 240px;
  1001. height: 100px;
  1002. border-radius: 20px;
  1003. border: 1px solid #B2A1FF;
  1004. background: #1C192B;
  1005. }
  1006. .industry-title {
  1007. h3 {
  1008. padding: 40px 0;
  1009. text-align: center;
  1010. color: #FFF;
  1011. font-size: 45px;
  1012. font-style: normal;
  1013. font-weight: 400;
  1014. line-height: 45px;
  1015. span {
  1016. margin: 0 20px
  1017. }
  1018. }
  1019. .industry-subtitle {
  1020. text-align: center;
  1021. color: #FFF;
  1022. font-size: 26px;
  1023. font-style: normal;
  1024. font-weight: 400;
  1025. line-height: 26px;
  1026. }
  1027. }
  1028. .industry-box,
  1029. .industry-radar {
  1030. position: relative;
  1031. width: $Diameter;
  1032. height: calc($Diameter / 2);
  1033. }
  1034. .industry-radar {
  1035. overflow: hidden;
  1036. }
  1037. .radar-bg-img {
  1038. position: absolute;
  1039. left: 50%;
  1040. top: 0;
  1041. transform: translateX(-50%);
  1042. width: 100%;
  1043. height: $Diameter;
  1044. object-fit: contain;
  1045. object-position: center top;
  1046. opacity: 0.95;
  1047. z-index: 1;
  1048. }
  1049. .industry-radar::before {
  1050. content: '';
  1051. position: absolute;
  1052. left: 0;
  1053. top: 0;
  1054. width: $Diameter;
  1055. height: $Diameter;
  1056. border-radius: 50%;
  1057. transform-origin: 50%;
  1058. background: conic-gradient(from 0deg at center,
  1059. rgba(99, 102, 241, 0) 0deg,
  1060. rgba(99, 102, 241, 0.05) 10deg,
  1061. rgba(99, 102, 241, 0.1) 20deg,
  1062. rgba(99, 102, 241, 0.2) 25deg,
  1063. rgba(99, 102, 241, 0.3) 28deg,
  1064. rgba(99, 102, 241, 0.4) 30deg,
  1065. transparent 30deg 360deg);
  1066. filter: blur(1px);
  1067. animation: radarScan 6s linear infinite;
  1068. z-index: 2;
  1069. opacity: 0.7;
  1070. }
  1071. .industry-box::before {
  1072. content: "";
  1073. position: absolute;
  1074. left: 50%;
  1075. top: 100%;
  1076. transform: translate(-50%, -50%);
  1077. width: 64px;
  1078. height: 64px;
  1079. background: linear-gradient(114deg, #C9C5FF -44.49%, #5704FF 140.15%);
  1080. stroke: #AE80FF;
  1081. border-radius: 50%;
  1082. z-index: 3;
  1083. }
  1084. .radar-dots {
  1085. position: absolute;
  1086. width: 100%;
  1087. height: 100%;
  1088. left: 0;
  1089. top: 0;
  1090. z-index: 4;
  1091. }
  1092. .radar-dot {
  1093. position: absolute;
  1094. width: 8px;
  1095. height: 8px;
  1096. border-radius: 50%;
  1097. background-color: rgba(99, 102, 241, 0.8);
  1098. box-shadow: 0 0 8px rgba(99, 102, 241, 0.8);
  1099. }
  1100. .radar-dot-1 {
  1101. left: 45%;
  1102. top: 35%;
  1103. animation: radarBlink 1.5s ease-in-out infinite;
  1104. }
  1105. .radar-dot-2 {
  1106. left: 60%;
  1107. top: 62%;
  1108. animation: radarBlink 1.5s ease-in-out infinite 0.375s;
  1109. }
  1110. .radar-dot-3 {
  1111. left: 30%;
  1112. top: 66%;
  1113. animation: radarBlink 1.5s ease-in-out infinite 0.75s;
  1114. }
  1115. .radar-dot-4 {
  1116. left: 70%;
  1117. top: 35%;
  1118. animation: radarBlink 1.5s ease-in-out infinite 1.125s;
  1119. }
  1120. }
  1121. @keyframes radarScan {
  1122. 0% {
  1123. transform: rotateZ(0deg);
  1124. }
  1125. 100% {
  1126. transform: rotateZ(360deg);
  1127. }
  1128. }
  1129. @keyframes radarBlink {
  1130. 0% {
  1131. transform: scale(0.6);
  1132. opacity: 0.2;
  1133. }
  1134. 50% {
  1135. transform: scale(1.2);
  1136. opacity: 1;
  1137. }
  1138. 100% {
  1139. transform: scale(0.6);
  1140. opacity: 0.2;
  1141. }
  1142. }
  1143. </style>