web.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <template>
  2. <section class="mb-web">
  3. <section class="video-section">
  4. <div class="cdn-dg">
  5. <NuxtImg class="cdn-bg" src="/images/products/cdn-bg.png" alt="cdn" />
  6. </div>
  7. <div class="video-title">
  8. <p class="video-text">Intelligent routing / dynamic optimization / real-time processing</p>
  9. <h1><span>智能</span>路由/<span>动态</span>优化/<span>实时</span>处理</h1>
  10. <div class="video-subtitle">不止于快,更稳更安全,为您的业务保驾护航</div>
  11. <div class="video-btn">
  12. <span>联系我们</span>
  13. <Icon name="line-md:chevron-right" />
  14. </div>
  15. </div>
  16. <section class="perspective-grid-section">
  17. <div class="perspective-container">
  18. <div class="grid-floor">
  19. <div class="grid-lines"></div>
  20. </div>
  21. </div>
  22. </section>
  23. </section>
  24. </section>
  25. </template>
  26. <script setup>
  27. useHead(() => ({
  28. title: 'Web安全加速 - 移动端',
  29. meta: [
  30. { name: 'viewport', content: 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' }
  31. ]
  32. }))
  33. </script>
  34. <style scoped lang="scss">
  35. .mb-web {
  36. .video-section {
  37. position: relative;
  38. width: 100%;
  39. height: 200px;
  40. margin: 0 auto;
  41. overflow: hidden;
  42. .cdn-dg {
  43. position: absolute;
  44. top: 0;
  45. right: -26px;
  46. background: url('/images/products/dengg.png') no-repeat center center;
  47. background-size: contain;
  48. width: 212px;
  49. height: 200px;
  50. display: flex;
  51. align-items: center;
  52. justify-content: center;
  53. z-index: 1;
  54. .cdn-bg {
  55. position: relative;
  56. z-index: 1;
  57. animation: float 3s ease-in-out infinite;
  58. }
  59. :deep(img) {
  60. width: 140px;
  61. height: auto;
  62. }
  63. }
  64. @keyframes float {
  65. 0%,
  66. 100% {
  67. transform: translateY(0);
  68. }
  69. 50% {
  70. transform: translateY(-10px);
  71. }
  72. }
  73. .video-title {
  74. position: relative;
  75. padding-top: 30px;
  76. width: 100%;
  77. z-index: 3;
  78. color: #fff;
  79. font-style: normal;
  80. display: flex;
  81. flex-direction: column;
  82. h1 {
  83. color: #D8D3FF;
  84. font-size: 15px;
  85. font-weight: 500;
  86. line-height: 16px;
  87. span {
  88. color: #997DFF;
  89. }
  90. }
  91. .video-subtitle {
  92. margin-top: 10px;
  93. width: 140px;
  94. color: #E2D9FF;
  95. font-size: 10px;
  96. font-weight: 400;
  97. line-height: 14px;
  98. }
  99. .video-text {
  100. color: #E2D9FF;
  101. font-size: 8px;
  102. font-weight: 300;
  103. line-height: 8px;
  104. }
  105. .video-btn {
  106. cursor: pointer;
  107. margin-top: 20px;
  108. display: flex;
  109. box-sizing: border-box;
  110. width: 85px;
  111. height: 24px;
  112. justify-content: center;
  113. align-items: center;
  114. gap: 10px;
  115. border-radius: 4px;
  116. color: #FFF;
  117. font-size: 10px;
  118. font-weight: 400;
  119. line-height: 14px;
  120. background: linear-gradient(91deg, #A39DFF 1.24%, #7D46FF 122.93%);
  121. }
  122. }
  123. }
  124. .perspective-grid-section {
  125. width: 100%;
  126. height: 100px;
  127. overflow: hidden;
  128. position: absolute;
  129. bottom: 0;
  130. background: transparent;
  131. perspective: 400px;
  132. z-index: 0;
  133. .perspective-container {
  134. width: 100%;
  135. height: 100%;
  136. display: flex;
  137. justify-content: center;
  138. align-items: flex-start;
  139. transform-style: preserve-3d;
  140. }
  141. .grid-floor {
  142. width: 200%;
  143. height: 400px;
  144. position: relative;
  145. transform: rotateX(60deg);
  146. transform-origin: center top;
  147. overflow: hidden;
  148. }
  149. .grid-lines {
  150. width: 100%;
  151. height: 200%;
  152. background-image:
  153. linear-gradient(rgba(22, 24, 75, 0.5) 1px, transparent 1px),
  154. linear-gradient(90deg, rgba(22, 24, 75, 0.5) 1px, transparent 1px);
  155. background-size: 50px 50px;
  156. animation: gridMove 4s linear infinite;
  157. }
  158. &::after {
  159. content: '';
  160. position: absolute;
  161. bottom: 0;
  162. left: 0;
  163. width: 100%;
  164. height: 100px;
  165. background: linear-gradient(to bottom, transparent 0%, #030014 100%);
  166. pointer-events: none;
  167. z-index: 1;
  168. }
  169. }
  170. @keyframes gridMove {
  171. 0% {
  172. transform: translateY(-50%);
  173. }
  174. 100% {
  175. transform: translateY(0);
  176. }
  177. }
  178. }
  179. </style>