Flowchart.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <section class="about-flow">
  3. <div class="flow-title">
  4. <div class="flow-title-text">
  5. 全线产品自主研发
  6. </div>
  7. <div class="flow-title-subtext">
  8. 全线产品自主研发,从高防IP、CDN到游戏盾SDK,核心技术完全自控,安全能力不受制于人,防护效果快人一步。
  9. </div>
  10. </div>
  11. <div class="flow-content">
  12. <div class="flow-content-left">
  13. <div class="left-user">
  14. <NuxtImg class="flow-icon" src="/images/about/icon-user.png" alt="icon" />
  15. <div class="flow-text">用户</div>
  16. </div>
  17. <div class="left-sdk">
  18. <NuxtImg class="flow-icon" src="/images/about/icon-sdk.png" alt="icon" />
  19. <div class="flow-text">终端设备/SDK</div>
  20. </div>
  21. </div>
  22. </div>
  23. </section>
  24. </template>
  25. <script setup>
  26. </script>
  27. <style lang="scss" scoped>
  28. .about-flow {
  29. width: 1200px;
  30. margin: 0 auto;
  31. box-sizing: border-box;
  32. height: 500px;
  33. .flow-title {
  34. position: relative;
  35. border-radius: 10px;
  36. border: 2px solid #8B74FF;
  37. background: rgba(63, 51, 125, 0.30);
  38. color: #FFF;
  39. margin-bottom: 77px;
  40. .flow-title-text {
  41. display: flex;
  42. align-items: center;
  43. justify-content: center;
  44. width: 100%;
  45. height: 70px;
  46. font-size: 30px;
  47. font-weight: 400;
  48. background: rgba(128, 119, 255, .5);
  49. }
  50. .flow-title-subtext {
  51. padding: 16px 36px 22px;
  52. font-size: 24px;
  53. font-weight: 400;
  54. }
  55. &::before {
  56. content: '';
  57. position: absolute;
  58. bottom: -75px;
  59. left: 50%;
  60. transform: translateX(-50%);
  61. width: 2px;
  62. height: 75px;
  63. background: #8B74FF;
  64. }
  65. &::after {
  66. content: '';
  67. position: absolute;
  68. bottom: -77px;
  69. left: 50%;
  70. transform: translateX(-50%);
  71. width: 0;
  72. height: 0;
  73. border-left: 10px solid transparent;
  74. border-right: 10px solid transparent;
  75. border-top: 12px solid #8B74FF;
  76. }
  77. }
  78. .flow-content {
  79. width: 100%;
  80. box-sizing: border-box;
  81. display: flex;
  82. align-items: center;
  83. justify-content: space-between;
  84. .flow-content-left {
  85. display: flex;
  86. gap: 30px;
  87. }
  88. .left-user,
  89. .left-sdk {
  90. display: flex;
  91. flex-direction: column;
  92. align-items: center;
  93. justify-content: center;
  94. color: #FFF;
  95. .flow-text {
  96. position: relative;
  97. box-sizing: border-box;
  98. width: 162px;
  99. height: 55px;
  100. display: flex;
  101. justify-content: center;
  102. align-items: center;
  103. border-radius: 8px;
  104. border: 1px solid #A39DFF;
  105. background: #3F337D;
  106. &::before {
  107. content: '';
  108. position: absolute;
  109. right: -30px;
  110. top: 50%;
  111. transform: translateY(-50%);
  112. width: 30px;
  113. height: 1px;
  114. background: #8B74FF;
  115. }
  116. &::after {
  117. content: '';
  118. position: absolute;
  119. right: -32px;
  120. top: 50%;
  121. transform: translateY(-50%);
  122. width: 0;
  123. height: 0;
  124. border-top: 8px solid transparent;
  125. border-bottom: 8px solid transparent;
  126. border-left: 12px solid #8B74FF;
  127. }
  128. }
  129. }
  130. }
  131. }
  132. </style>