Footer.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <template>
  2. <footer class="mb-mobile-footer">
  3. <div class="mb-mobile-footer-container">
  4. <div class="mb-footer-brand">
  5. <h2 class="mb-brand-title">DDAC</h2>
  6. </div>
  7. <nav class="mb-footer-nav">
  8. <div v-for="(section, index) in sections" :key="section.title" class="mb-nav-column">
  9. <div class="mb-nav-title-row" @click="toggleSection(index)">
  10. <h3 class="mb-nav-title">{{ section.title }}</h3>
  11. <Icon name="line-md:chevron-down" class="mb-nav-item-icon" :class="{ 'mb-icon-rotated': openSections[index] }" />
  12. </div>
  13. <Transition name="mb-nav-expand">
  14. <div v-show="openSections[index]" class="mb-nav-list">
  15. <div v-for="item in section.items" :key="item" class="mb-nav-link">{{ item }}</div>
  16. </div>
  17. </Transition>
  18. </div>
  19. </nav>
  20. <div class="mb-footer-section">
  21. <span class="mb-section-link">行业解决方案</span>
  22. </div>
  23. <div class="mb-footer-contact">
  24. <span class="mb-contact-label">联系我们</span>
  25. <p class="mb-contact-email">企业邮箱:support@yundun.com</p>
  26. </div>
  27. <div class="mb-footer-bottom">
  28. <span class="mb-report-link">举报中心</span>
  29. <p class="mb-copyright">Copyright@2025 SUYUN,All Rights Reserved</p>
  30. </div>
  31. </div>
  32. </footer>
  33. </template>
  34. <script setup>
  35. const sections = [
  36. {
  37. title: '安全产品',
  38. items: [
  39. 'SDK 安全加速(游戏 DDoS、CC、WAF 防护)',
  40. 'Web 安全加速(网站 DDoS、CC、WAF 防护)',
  41. 'TCP 安全加速(DDoS 防护)',
  42. 'DNS 安全加速(域名解析)'
  43. ]
  44. },
  45. {
  46. title: '安全服务',
  47. items: [
  48. '互联网暴露面检测服务',
  49. '渗透测试服务',
  50. '安全巡检和加固服务',
  51. '重保服务',
  52. '其他安全专家服务'
  53. ]
  54. },
  55. {
  56. title: '热搜榜单',
  57. items: [
  58. '零信任安全访问',
  59. '出海云主机',
  60. 'Web 网站安全加速',
  61. 'APP 安全加速'
  62. ]
  63. },
  64. {
  65. title: '文档中心',
  66. items: [
  67. '入门指导',
  68. '问答专区',
  69. '主题',
  70. '资讯列表',
  71. '关键词'
  72. ]
  73. },
  74. {
  75. title: '关于我们',
  76. items: [
  77. '企业简介',
  78. '资质认证',
  79. '法律条款',
  80. '大事记'
  81. ]
  82. }
  83. ]
  84. const openSections = ref(sections.map(() => false))
  85. const toggleSection = (index) => {
  86. openSections.value[index] = !openSections.value[index]
  87. }
  88. </script>
  89. <style scoped lang="scss">
  90. .mb-mobile-footer {
  91. width: 100%;
  92. background-color: #030014;
  93. border-top: 1px solid rgba(255, 255, 255, 0.1);
  94. padding: 16px;
  95. margin-top: auto;
  96. box-sizing: border-box;
  97. }
  98. .mb-mobile-footer-container {
  99. margin: 0 auto;
  100. }
  101. .mb-footer-brand {
  102. padding-bottom: 16px;
  103. position: relative;
  104. .mb-brand-title {
  105. color: #FFF;
  106. font-size: 24px;
  107. font-weight: 900;
  108. }
  109. &::before {
  110. position: absolute;
  111. bottom: 0;
  112. left: 0;
  113. content: '';
  114. width: 100%;
  115. height: 1PX;
  116. background-color: rgba(255, 255, 255, 0.06);
  117. }
  118. }
  119. .mb-footer-nav {
  120. display: flex;
  121. flex-direction: column;
  122. }
  123. .mb-nav-column {
  124. border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  125. }
  126. .mb-nav-title-row {
  127. display: flex;
  128. align-items: center;
  129. justify-content: space-between;
  130. padding: 12px 0;
  131. cursor: pointer;
  132. }
  133. .mb-nav-title {
  134. color: #DDD;
  135. font-size: 18px;
  136. font-weight: 400;
  137. }
  138. .mb-nav-item-icon {
  139. width: 18px;
  140. height: 18px;
  141. color: #fff;
  142. transition: transform 0.3s ease;
  143. }
  144. .mb-icon-rotated {
  145. transform: rotate(180deg);
  146. }
  147. .mb-nav-list {
  148. padding-bottom: 12px;
  149. }
  150. .mb-nav-link {
  151. font-size: 14px;
  152. color: #bdbdbd;
  153. margin-bottom: 12px;
  154. cursor: pointer;
  155. &:last-child {
  156. margin-bottom: 0;
  157. }
  158. &:hover {
  159. color: #ffffff;
  160. }
  161. }
  162. .mb-nav-expand-enter-active,
  163. .mb-nav-expand-leave-active {
  164. overflow: hidden;
  165. transition: max-height 0.3s ease-out;
  166. }
  167. .mb-nav-expand-enter-from,
  168. .mb-nav-expand-leave-to {
  169. max-height: 0 !important;
  170. }
  171. .mb-nav-expand-enter-to,
  172. .mb-nav-expand-leave-from {
  173. max-height: 500px !important;
  174. }
  175. .mb-footer-section {
  176. .mb-section-link {
  177. color: #DDD;
  178. font-size: 14px;
  179. font-weight: 400;
  180. }
  181. }
  182. .mb-footer-contact {
  183. display: flex;
  184. gap: 44px;
  185. color: #DDD;
  186. font-size: 14px;
  187. font-style: normal;
  188. font-weight: 400;
  189. }
  190. .mb-footer-bottom {
  191. padding: 36px 0 50px 0;
  192. display: flex;
  193. flex-direction: column;
  194. gap: 12px;
  195. color: #DDD;
  196. font-size: 14px;
  197. font-weight: 400;
  198. .mb-copyright {
  199. color: #fff;
  200. }
  201. }
  202. </style>