index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955
  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. <ProductTabs />
  22. <!-- 安全洞见标题 -->
  23. <section class="insight-header">
  24. <h2 class="insight-title">安全洞见&nbsp;&nbsp;&nbsp;全网感知</h2>
  25. <p class="insight-subtitle">实时攻防态势数据</p>
  26. </section>
  27. <!-- 数据展示区域 -->
  28. <StatsSection />
  29. <!-- 安全运营与方案模块 -->
  30. <section class="plans-section">
  31. <div class="plans-cards">
  32. <div class="plan-card">
  33. <div class="plan-name">Lite Plan</div>
  34. <div class="plan-desc">适合项目上线初期集成</div>
  35. <div class="old-price">
  36. <del>$1500</del>
  37. <span>节省20.04%</span>
  38. </div>
  39. <div class="plan-price">$999</div>
  40. <div class="plan-actions">
  41. <button class="btn-primary">立即选择</button>
  42. </div>
  43. <div class="plan-title">
  44. <div class="plan-cs">详细参数</div>
  45. <ul class="plan-features">
  46. <li>防护目标数:3个</li>
  47. <li>峰值设备数:200</li>
  48. <li>智能BGP线路</li>
  49. <li>带宽峰值:20M</li>
  50. <li>DDoS防御:无上限</li>
  51. <li>CC防御:100%</li>
  52. </ul>
  53. </div>
  54. </div>
  55. <div class="plan-card">
  56. <div class="plan-name">Basic Plan</div>
  57. <div class="plan-desc">最经济实惠的个人开发者套餐</div>
  58. <div class="old-price">
  59. <del>$2500</del>
  60. <span>节省20.04%</span>
  61. </div>
  62. <div class="plan-price">$1999</div>
  63. <div class="plan-actions">
  64. <button class="btn-primary">立即选择</button>
  65. </div>
  66. <div class="plan-title">
  67. <div class="plan-cs">详细参数</div>
  68. <ul class="plan-features">
  69. <li>防护目标数:10个</li>
  70. <li>峰值设备数:2000</li>
  71. <li>智能CN2/BGP线路</li>
  72. <li>带宽峰值:50M</li>
  73. <li>DDoS防御:无上限</li>
  74. <li>CC防御:100%</li>
  75. </ul>
  76. </div>
  77. </div>
  78. <div class="plan-card">
  79. <div class="plan-name">Standard Plan</div>
  80. <div class="plan-desc">企业入门级畅销精选套餐</div>
  81. <div class="old-price">
  82. <del>$6000</del>
  83. <span>节省16.68%</span>
  84. </div>
  85. <div class="plan-price">$4999</div>
  86. <div class="plan-actions">
  87. <button class="btn-primary ghost">立即选择</button>
  88. </div>
  89. <div class="plan-title">
  90. <div class="plan-cs">详细参数</div>
  91. <ul class="plan-features">
  92. <li>防护目标数:15个</li>
  93. <li>峰值设备数:10000</li>
  94. <li>智能CN2/BGP线路</li>
  95. <li>带宽峰值:80M</li>
  96. <li>DDoS防御:无上限</li>
  97. <li>CC防御:100%</li>
  98. </ul>
  99. </div>
  100. </div>
  101. </div>
  102. </section>
  103. <!-- 安全漏洞 / 全景技术架构上方模块 -->
  104. <section class="security-arch-section">
  105. <img alt="安全架构" :src="homeBg2" width="1" height="1" class="security-arch-img" />
  106. <div class="security-arch-animate">
  107. <SecurityParticles />
  108. </div>
  109. <div class="security-arch-desc">
  110. <h3 class="security-arch-title">
  111. 全景技术架构,让技术成为增长引擎
  112. </h3>
  113. <div class="security-arch-subtitle">
  114. 从基础设施、数据引擎、服务中台到业务应用,层层协同,将算力、数据与能力统一管理,
  115. 保证系统在高并发、高复杂度场景下依然稳定运行。
  116. </div>
  117. </div>
  118. </section>
  119. <!-- TODO 正常访客等... -->
  120. <!-- 助力各行业客户成功 -->
  121. <section class="cain-section">
  122. <img alt="助力各行业客户成功" :src="homeBg3" width="1" height="1" class="cain-section-img" />
  123. <div class="cain-section-animate">
  124. <SecurityParticles />
  125. </div>
  126. <div class="cain-section-desc">
  127. <h3 class="cain-section-title">
  128. 助力各行业客户成功
  129. </h3>
  130. </div>
  131. </section>
  132. <section class="industry">
  133. <div class="industry-content">
  134. <div class="industry-item">
  135. <div class="industry-text">金融</div>
  136. <img :src="icon" alt="金融" class="industry-icon" />
  137. </div>
  138. <div class="industry-item">
  139. <div class="industry-text">互联网</div>
  140. <img :src="icon2" alt="互联网" class="industry-icon" />
  141. </div>
  142. <div class="industry-item">
  143. <div class="industry-text">医疗健康</div>
  144. <img :src="icon3" alt="医疗健康" class="industry-icon" />
  145. </div>
  146. <div class="industry-item">
  147. <div class="industry-text">制造</div>
  148. <img :src="icon4" alt="制造" class="industry-icon" />
  149. </div>
  150. <div class="industry-item">
  151. <div class="industry-text">教育</div>
  152. <img :src="icon5" alt="教育" class="industry-icon" />
  153. </div>
  154. </div>
  155. <div class="industry-other">
  156. <div class="other-item">
  157. <img :src="icon6" alt="卓越教育">
  158. </div>
  159. <div class="other-item">
  160. <img :src="icon7" alt="华福证券">
  161. </div>
  162. <div class="other-item">
  163. <img :src="icon8" alt="汉王">
  164. </div>
  165. <div class="other-item">
  166. <img :src="icon9" alt="隧道股份">
  167. </div>
  168. <div class="other-item">
  169. <img :src="icon10" alt="岳阳医院">
  170. </div>
  171. <div class="other-item">
  172. <img :src="icon11" alt="杉德">
  173. </div>
  174. <div class="other-item">
  175. <img :src="icon12" alt="易班">
  176. </div>
  177. <div class="other-item">
  178. <img :src="icon13" alt="银联商务">
  179. </div>
  180. <div class="other-item">
  181. <img :src="icon14" alt="长海医院">
  182. </div>
  183. <div class="other-item">
  184. <img :src="icon15" alt="斗象科技">
  185. </div>
  186. <div class="other-item">
  187. <img :src="icon16" alt="瑞金">
  188. </div>
  189. <div class="other-item">
  190. <img :src="icon17" alt="3L">
  191. </div>
  192. <div class="other-item">
  193. <img :src="icon18" alt="宝付">
  194. </div>
  195. <div class="other-item">
  196. <img :src="icon19" alt="新华医院">
  197. </div>
  198. <div class="other-item">
  199. <img :src="icon20" alt="中船重工物贸集团">
  200. </div>
  201. </div>
  202. <div class="industry-box">
  203. <div class="industry-radar">
  204. <img :src="homeBg4" alt="radar" class="radar-bg-img" />
  205. <div class="radar-dots">
  206. <span class="radar-dot radar-dot-1" />
  207. <span class="radar-dot radar-dot-2" />
  208. <span class="radar-dot radar-dot-3" />
  209. <span class="radar-dot radar-dot-4" />
  210. </div>
  211. </div>
  212. </div>
  213. <div class="industry-title">
  214. <h3><span>立即加入</span> <span>安全之旅</span></h3>
  215. <div class="industry-subtitle">完成注册,即可免费体验 DDoS防护、CC防护、DNS解析等多款安全产品</div>
  216. </div>
  217. </section>
  218. <section class="hero-section">
  219. <!-- 视频背景 -->
  220. <video ref="videoRef" class="hero-video-bg" :src="videoSrc" autoplay loop muted playsinline
  221. @loadedmetadata="onVideoLoaded"></video>
  222. <!-- Canvas动画组件 -->
  223. <ParticlesCanvas class="canvas-overlay" />
  224. </section>
  225. </section>
  226. <Footer></Footer>
  227. </div>
  228. </template>
  229. <script setup>
  230. import { ref } from 'vue'
  231. import StatsSection from '~/components/home/StatsSection.vue'
  232. import ProductTabs from '~/components/home/ProductTabs.vue'
  233. import videoSrc from '~/assets/video/home.webm'
  234. import ParticlesCanvas from '~/components/ParticlesCanvas.vue'
  235. import SecurityParticles from '~/components/SecurityParticles.vue'
  236. import homeBg2 from '~/assets/images/home/home-bg2.png'
  237. import homeBg3 from '~/assets/images/home/home-bg3.png'
  238. import homeBg4 from '~/assets/images/home/home-bg4.png'
  239. import icon from '~/assets/images/home/icon.png'
  240. import icon2 from '~/assets/images/home/icon2.png'
  241. import icon3 from '~/assets/images/home/icon3.png'
  242. import icon4 from '~/assets/images/home/icon4.png'
  243. import icon5 from '~/assets/images/home/icon5.png'
  244. import icon6 from '~/assets/images/home/icon6.png'
  245. import icon7 from '~/assets/images/home/icon7.png'
  246. import icon8 from '~/assets/images/home/icon8.png'
  247. import icon9 from '~/assets/images/home/icon9.png'
  248. import icon10 from '~/assets/images/home/icon10.png'
  249. import icon11 from '~/assets/images/home/icon11.png'
  250. import icon12 from '~/assets/images/home/icon12.png'
  251. import icon13 from '~/assets/images/home/icon13.png'
  252. import icon14 from '~/assets/images/home/icon14.png'
  253. import icon15 from '~/assets/images/home/icon15.png'
  254. import icon16 from '~/assets/images/home/icon16.png'
  255. import icon17 from '~/assets/images/home/icon17.png'
  256. import icon18 from '~/assets/images/home/icon18.png'
  257. import icon19 from '~/assets/images/home/icon19.png'
  258. import icon20 from '~/assets/images/home/icon20.png'
  259. const videoRef = ref(null)
  260. const onVideoLoaded = () => {
  261. if (videoRef.value) {
  262. videoRef.value.play().catch(() => {
  263. // 自动播放失败时静默处理
  264. })
  265. }
  266. }
  267. useHead(() => ({
  268. title:'DDAC',
  269. meta: [
  270. { name: 'viewport', content: 'width=device-width, initial-scale=1' },
  271. { name: 'description', content: 'DDAC - 游戏盾防御' },
  272. { name: 'keywords', content: '高防服务器 | 高防DNS | 游戏盾SDK | 高防CDN' }
  273. ],
  274. link: [
  275. { rel: 'icon', href: '/favicon.ico' }
  276. ],
  277. htmlAttrs: {
  278. lang: 'en'
  279. }
  280. }))
  281. </script>
  282. <style scoped lang="scss">
  283. .container {
  284. width: 100%;
  285. min-height: 100vh;
  286. background-color: #030014;
  287. overflow-x: hidden;
  288. box-sizing: border-box;
  289. }
  290. .main-content {
  291. width: 100%;
  292. max-width: 1920px;
  293. margin: 0 auto;
  294. padding: 0;
  295. }
  296. // 标题区域(视频作为背景)
  297. .hero-section {
  298. width: 100%;
  299. height: 497px;
  300. position: relative;
  301. display: flex;
  302. align-items: center;
  303. justify-content: center;
  304. padding: 81px 0 0;
  305. box-sizing: border-box;
  306. overflow: hidden;
  307. .hero-video-bg {
  308. position: absolute;
  309. top: -3%;
  310. left: 0;
  311. width: 100%;
  312. object-fit: cover;
  313. clip-path: inset(0 0 50% 0);
  314. z-index: 0;
  315. }
  316. .canvas-overlay {
  317. position: absolute;
  318. top: 260px;
  319. left: 0;
  320. width: 100%;
  321. height: 50%; // 只显示上半部分
  322. pointer-events: none;
  323. z-index: 1; // 层级不要太高
  324. }
  325. .hero-content {
  326. width: 100%;
  327. max-width: 1568px;
  328. padding: 0 20px;
  329. box-sizing: border-box;
  330. display: flex;
  331. flex-direction: column;
  332. align-items: center;
  333. position: relative;
  334. z-index: 2; // 内容在视频和canvas之上
  335. margin: 0 auto;
  336. .hero-title {
  337. font-family: 'Source Han Sans CN', sans-serif;
  338. font-size: 30px;
  339. font-weight: 400;
  340. line-height: 30px;
  341. // color: #7c4dff;
  342. margin: 0;
  343. white-space: normal;
  344. text-align: center;
  345. word-break: break-word;
  346. max-width: 100%;
  347. background: linear-gradient(90deg, #7C4DFF 0.24%, #DEB9FF 45.03%, #617FFF 132.52%);
  348. background-clip: text;
  349. -webkit-background-clip: text;
  350. -webkit-text-fill-color: transparent;
  351. }
  352. .hero-subtitle {
  353. margin-top: 28px;
  354. width: 100%;
  355. max-width: 918.27px;
  356. min-height: 341.49px;
  357. position: relative;
  358. display: flex;
  359. justify-content: center;
  360. align-items: flex-start;
  361. p {
  362. font-family: 'Inter', sans-serif;
  363. font-size: 20px;
  364. font-weight: 400;
  365. line-height: normal;
  366. color: #ffffff;
  367. margin: 0;
  368. text-align: center;
  369. white-space: normal;
  370. word-break: break-word;
  371. max-width: 100%;
  372. }
  373. }
  374. }
  375. }
  376. // 安全洞见标题
  377. .insight-header {
  378. width: 313px;
  379. margin: 156px auto 0;
  380. display: flex;
  381. flex-direction: column;
  382. align-items: center;
  383. .insight-title {
  384. font-family: 'Source Han Sans CN', sans-serif;
  385. font-size: 36px;
  386. font-weight: 400;
  387. line-height: 36px;
  388. color: #ffffff;
  389. margin: 0;
  390. white-space: nowrap;
  391. }
  392. .insight-subtitle {
  393. font-family: 'Source Han Sans CN', sans-serif;
  394. font-size: 24px;
  395. font-weight: 400;
  396. line-height: 24px;
  397. color: #a39dff;
  398. margin: 24px 0 0 0;
  399. text-align: center;
  400. }
  401. }
  402. // 方案卡片区域
  403. .plans-section {
  404. width: 100%;
  405. max-width: 1200px;
  406. margin: 120px auto 0;
  407. padding: 0 20px;
  408. box-sizing: border-box;
  409. display: flex;
  410. flex-direction: column;
  411. gap: 40px;
  412. .plans-cards {
  413. display: grid;
  414. grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  415. gap: 24px;
  416. }
  417. .plan-card {
  418. border-radius: 20px;
  419. background: rgba(255, 255, 255, 0.08);
  420. border: 1px solid rgba(178, 161, 255, 0.8);
  421. padding: 28px 24px;
  422. box-sizing: border-box;
  423. display: flex;
  424. flex-direction: column;
  425. gap: 14px;
  426. min-height: 380px;
  427. &:hover {
  428. border: 2px solid rgba(178, 161, 255, 0.9);
  429. box-shadow: 0 10px 30px rgba(125, 70, 255, 0.3);
  430. background: linear-gradient(1.67deg, rgba(165, 101, 255, 0.16) 0%, rgba(3, 0, 20, 0.1) 100%);
  431. .plan-actions .btn-primary {
  432. background: linear-gradient(91deg, #A39DFF 1.24%, #7D46FF 122.93%);
  433. }
  434. }
  435. // &.highlight {
  436. // }
  437. .plan-name {
  438. text-align: center;
  439. font-family: 'Roboto', sans-serif;
  440. font-size: 36px;
  441. font-weight: 700;
  442. line-height: 26px;
  443. color: #ffffff;
  444. }
  445. .plan-desc {
  446. text-align: center;
  447. font-family: 'Source Han Sans CN', sans-serif;
  448. font-size: 20px;
  449. font-weight: 400;
  450. line-height: 20px;
  451. color: #e0d3ff;
  452. }
  453. .old-price {
  454. display: flex;
  455. justify-content: center;
  456. align-items: center;
  457. gap: 12px;
  458. del {
  459. color: #A39DFF;
  460. font-size: 20px;
  461. font-style: normal;
  462. font-weight: 500;
  463. line-height: 20px;
  464. }
  465. span {
  466. display: flex;
  467. border-radius: 17.5px;
  468. background: #7D46FF;
  469. color: #fff;
  470. width: 145px;
  471. height: 35px;
  472. justify-content: center;
  473. align-items: center;
  474. gap: 10px;
  475. }
  476. }
  477. .plan-price {
  478. font-family: 'Roboto', sans-serif;
  479. text-align: center;
  480. font-size: 65px;
  481. font-weight: 700;
  482. line-height: 65px;
  483. color: #ffffff;
  484. margin: 8px 0;
  485. }
  486. .plan-actions {
  487. display: flex;
  488. gap: 12px;
  489. align-items: center;
  490. .btn-primary {
  491. flex: 1;
  492. height: 44px;
  493. border-radius: 50px;
  494. background: linear-gradient(91deg, rgba(163, 157, 255, 0.20) 1.24%, rgba(125, 70, 255, 0.20) 122.93%);
  495. border: none;
  496. color: #fff;
  497. font-family: 'Source Han Sans CN', sans-serif;
  498. font-size: 24px;
  499. cursor: pointer;
  500. transition: opacity 0.3s ease;
  501. &:hover {
  502. opacity: 0.85;
  503. }
  504. }
  505. .btn-link {
  506. flex: 1;
  507. height: 44px;
  508. border-radius: 10px;
  509. border: 1px solid rgba(255, 255, 255, 0.5);
  510. background: transparent;
  511. color: #fff;
  512. font-family: 'Source Han Sans CN', sans-serif;
  513. font-size: 16px;
  514. cursor: pointer;
  515. transition: opacity 0.3s ease;
  516. &:hover {
  517. opacity: 0.8;
  518. }
  519. }
  520. }
  521. .plan-title {
  522. .plan-cs {
  523. margin: 22px 0;
  524. color: #fff;
  525. font-size: 20px;
  526. font-style: normal;
  527. font-weight: 600;
  528. line-height: 20px;
  529. }
  530. .plan-features {
  531. margin: 0;
  532. padding: 0;
  533. display: grid;
  534. grid-template-columns: repeat(2, 1fr);
  535. gap: 8px;
  536. li {
  537. position: relative;
  538. font-family: 'Source Han Sans CN', sans-serif;
  539. padding-left: 20px;
  540. font-size: 14px;
  541. font-weight: 400;
  542. line-height: 20px;
  543. color: #ffffff;
  544. &::before {
  545. content: "";
  546. position: absolute;
  547. left: 0;
  548. top: 50%;
  549. transform: translateY(-50%);
  550. width: 16px;
  551. height: 16px;
  552. border-radius: 50%;
  553. background-color: #a39dff;
  554. display: flex;
  555. align-items: center;
  556. justify-content: center;
  557. }
  558. &::after {
  559. position: absolute;
  560. left: 4px;
  561. top: 50%;
  562. transform: translateY(-50%);
  563. content: "✓";
  564. color: #fff;
  565. font-size: 10px;
  566. font-weight: bold;
  567. text-align: center;
  568. }
  569. }
  570. }
  571. }
  572. }
  573. }
  574. // 安全架构展示(到全景技术架构上方)
  575. .security-arch-section {
  576. position: relative;
  577. padding-top: 496px;
  578. padding-bottom: 60px;
  579. box-sizing: border-box;
  580. .security-arch-img {
  581. left: 50%;
  582. position: absolute;
  583. top: 56px;
  584. transform: translate(-50%);
  585. height: 700px;
  586. width: 806px;
  587. }
  588. .security-arch-animate {
  589. height: 212px;
  590. left: 50%;
  591. mask-size: cover;
  592. position: absolute;
  593. top: 234px;
  594. transform: translate(-50%);
  595. width: 936px;
  596. opacity: .7;
  597. pointer-events: none;
  598. }
  599. .security-arch-desc {
  600. color: #fff;
  601. position: absolute;
  602. left: 50%;
  603. top: 500px;
  604. transform: translate(-50%, -50%);
  605. /* 限制宽度并居中:保证 title 与 subtitle 两端对齐 */
  606. width: min(760px, 90%);
  607. text-align: justify;
  608. .security-arch-title {
  609. font-size: 40px;
  610. font-style: normal;
  611. font-weight: 400;
  612. line-height: 40px;
  613. margin: 0 auto;
  614. /* 通过伪元素强制单行也两端对齐 */
  615. text-align: justify;
  616. display: block;
  617. &::after {
  618. content: "";
  619. display: inline-block;
  620. width: 100%;
  621. height: 0;
  622. }
  623. }
  624. .security-arch-subtitle {
  625. margin-top: 20px;
  626. color: rgba(255, 255, 255, 0.80);
  627. font-size: 18px;
  628. font-style: normal;
  629. font-weight: 400;
  630. line-height: 24px;
  631. white-space: normal;
  632. word-break: break-word;
  633. text-align: justify;
  634. /* 两端对齐并自动换行 */
  635. }
  636. }
  637. }
  638. //彩虹部分
  639. .cain-section {
  640. position: relative;
  641. padding-top: 496px;
  642. padding-bottom: 60px;
  643. box-sizing: border-box;
  644. .cain-section-img {
  645. left: 50%;
  646. position: absolute;
  647. top: 56px;
  648. transform: translate(-50%);
  649. height: 400px;
  650. width: 900px;
  651. }
  652. .cain-section-animate {
  653. height: 212px;
  654. left: 50%;
  655. mask-size: cover;
  656. position: absolute;
  657. top: 128px;
  658. transform: translate(-50%);
  659. width: 936px;
  660. opacity: .7;
  661. pointer-events: none;
  662. }
  663. .cain-section-desc {
  664. position: absolute;
  665. left: 50%;
  666. top: 60%;
  667. transform: translate(-50%, -50%);
  668. width: 100%;
  669. text-align: center;
  670. .cain-section-title {
  671. font-size: 45px;
  672. color: #ffffff;
  673. margin: 0;
  674. font-weight: 400;
  675. }
  676. }
  677. }
  678. $Diameter :890px;
  679. .industry {
  680. display: flex;
  681. flex-direction: column;
  682. align-items: center;
  683. gap: 40px;
  684. .industry-content {
  685. display: flex;
  686. gap: 16px;
  687. }
  688. .industry-item {
  689. display: flex;
  690. justify-content: space-between;
  691. width: 240px;
  692. height: 100px;
  693. border-radius: 10px;
  694. background: linear-gradient(118deg, #C9C5FF -25.53%, #5704FF 110.12%);
  695. }
  696. .industry-icon {
  697. width: 150px;
  698. height: 100px;
  699. }
  700. .industry-text {
  701. padding: 16px 0 0 16px;
  702. font-family: 'Source Han Sans CN', sans-serif;
  703. font-size: 18px;
  704. font-weight: 400;
  705. line-height: 18px;
  706. color: #fff;
  707. }
  708. .industry-other {
  709. display: grid;
  710. gap: 16px;
  711. grid-template-columns: repeat(5, 1fr);
  712. grid-template-rows: repeat(3, auto);
  713. }
  714. .other-item {
  715. display: flex;
  716. justify-content: center;
  717. align-items: center;
  718. width: 240px;
  719. height: 100px;
  720. border-radius: 20px;
  721. border: 1px solid #B2A1FF;
  722. background: #1C192B;
  723. }
  724. .industry-title {
  725. h3 {
  726. padding: 40px 0;
  727. text-align: center;
  728. color: #FFF;
  729. font-size: 45px;
  730. font-style: normal;
  731. font-weight: 400;
  732. line-height: 45px;
  733. span {
  734. margin: 0 20px
  735. }
  736. }
  737. .industry-subtitle {
  738. text-align: center;
  739. color: #FFF;
  740. font-size: 26px;
  741. font-style: normal;
  742. font-weight: 400;
  743. line-height: 26px;
  744. }
  745. }
  746. .industry-box,
  747. .industry-radar {
  748. position: relative;
  749. width: $Diameter;
  750. height: calc($Diameter / 2);
  751. }
  752. .industry-radar {
  753. overflow: hidden;
  754. }
  755. .radar-bg-img {
  756. position: absolute;
  757. left: 50%;
  758. top: 0;
  759. transform: translateX(-50%);
  760. width: 100%;
  761. height: $Diameter;
  762. object-fit: contain;
  763. object-position: center top;
  764. opacity: 0.95;
  765. z-index: 1;
  766. }
  767. .industry-radar::before {
  768. content: '';
  769. position: absolute;
  770. left: 0;
  771. top: 0;
  772. width: $Diameter;
  773. height: $Diameter;
  774. border-radius: 50%;
  775. transform-origin: 50%;
  776. background: conic-gradient(from 0deg at center,
  777. rgba(99, 102, 241, 0) 0deg,
  778. rgba(99, 102, 241, 0.05) 10deg,
  779. rgba(99, 102, 241, 0.1) 20deg,
  780. rgba(99, 102, 241, 0.2) 25deg,
  781. rgba(99, 102, 241, 0.3) 28deg,
  782. rgba(99, 102, 241, 0.4) 30deg,
  783. transparent 30deg 360deg);
  784. filter: blur(1px);
  785. animation: radarScan 6s linear infinite;
  786. z-index: 2;
  787. opacity: 0.7;
  788. }
  789. .industry-box::before {
  790. content: "";
  791. position: absolute;
  792. left: 50%;
  793. top: 100%;
  794. transform: translate(-50%, -50%);
  795. width: 64px;
  796. height: 64px;
  797. background: linear-gradient(114deg, #C9C5FF -44.49%, #5704FF 140.15%);
  798. stroke: #AE80FF;
  799. border-radius: 50%;
  800. z-index: 3;
  801. }
  802. .radar-dots {
  803. position: absolute;
  804. width: 100%;
  805. height: 100%;
  806. left: 0;
  807. top: 0;
  808. z-index: 4;
  809. }
  810. .radar-dot {
  811. position: absolute;
  812. width: 8px;
  813. height: 8px;
  814. border-radius: 50%;
  815. background-color: rgba(99, 102, 241, 0.8);
  816. box-shadow: 0 0 8px rgba(99, 102, 241, 0.8);
  817. }
  818. .radar-dot-1 {
  819. left: 45%;
  820. top: 35%;
  821. animation: radarBlink 1.5s ease-in-out infinite;
  822. }
  823. .radar-dot-2 {
  824. left: 60%;
  825. top: 62%;
  826. animation: radarBlink 1.5s ease-in-out infinite 0.375s;
  827. }
  828. .radar-dot-3 {
  829. left: 30%;
  830. top: 66%;
  831. animation: radarBlink 1.5s ease-in-out infinite 0.75s;
  832. }
  833. .radar-dot-4 {
  834. left: 70%;
  835. top: 35%;
  836. animation: radarBlink 1.5s ease-in-out infinite 1.125s;
  837. }
  838. }
  839. @keyframes radarScan {
  840. 0% {
  841. transform: rotateZ(0deg);
  842. }
  843. 100% {
  844. transform: rotateZ(360deg);
  845. }
  846. }
  847. @keyframes radarBlink {
  848. 0% {
  849. transform: scale(0.6);
  850. opacity: 0.2;
  851. }
  852. 50% {
  853. transform: scale(1.2);
  854. opacity: 1;
  855. }
  856. 100% {
  857. transform: scale(0.6);
  858. opacity: 0.2;
  859. }
  860. }
  861. </style>