TradeLayout.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <div class="market-layout">
  3. <div class="market-nav">
  4. <div class="nav-left">
  5. <div
  6. class="nav-item pf600"
  7. :class="isCurrent('TradeContract') ? 'fs18 fc121212' : 'fs14 fcA8A8A8'"
  8. @click="switchTab('TradeContract')"
  9. >
  10. 合约
  11. <div v-if="isCurrent('TradeContract')" class="active-line"></div>
  12. </div>
  13. <div
  14. class="nav-item pf600 sys-notifi"
  15. :class="isCurrent('TradeSeconds') ? 'fs18 fc121212' : 'fs14 fcA8A8A8'"
  16. @click="switchTab('TradeSeconds')"
  17. >
  18. 秒合约
  19. <div v-if="isCurrent('TradeSeconds')" class="active-line"></div>
  20. </div>
  21. <div
  22. class="nav-item pf600 sys-notifi"
  23. :class="isCurrent('TradeOptions') ? 'fs18 fc121212' : 'fs14 fcA8A8A8'"
  24. @click="switchTab('TradeOptions')"
  25. >
  26. 期权
  27. <div v-if="isCurrent('TradeOptions')" class="active-line"></div>
  28. </div>
  29. <div
  30. class="nav-item pf600 sys-notifi"
  31. :class="isCurrent('TradeMargin') ? 'fs18 fc121212' : 'fs14 fcA8A8A8'"
  32. @click="switchTab('TradeMargin')"
  33. >
  34. 杠杆
  35. <div v-if="isCurrent('TradeMargin')" class="active-line"></div>
  36. </div>
  37. </div>
  38. </div>
  39. <router-view></router-view>
  40. </div>
  41. </template>
  42. <script setup>
  43. import { useRouter, useRoute } from 'vue-router';
  44. const router = useRouter();
  45. const route = useRoute();
  46. const switchTab = (name) => {
  47. router.push({ name });
  48. };
  49. const isCurrent = (name) => {
  50. return route.name === name;
  51. };
  52. </script>
  53. <style lang="less" scoped>
  54. .market-layout {
  55. display: flex;
  56. flex-direction: column;
  57. justify-content: flex-start;
  58. align-items: center;
  59. width: 100%;
  60. /* 确保导航栏样式正常 */
  61. .market-nav {
  62. display: flex;
  63. flex-direction: row;
  64. justify-content: space-between;
  65. align-items: center;
  66. margin-top: 21px;
  67. width: 345px;
  68. height: 24px;
  69. /* 既然只放Tabs,可能需要一点底部间距,以免紧贴着下面的内容 */
  70. margin-bottom: 18px;
  71. .nav-left {
  72. display: flex;
  73. flex-direction: row;
  74. justify-content: flex-start;
  75. align-items: flex-end;
  76. width: 349px;
  77. height: 24px;
  78. .nav-item {
  79. position: relative;
  80. cursor: pointer;
  81. transition: all 0.2s;
  82. .active-line {
  83. position: absolute;
  84. bottom: -6px;
  85. left: 50%;
  86. transform: translateX(-50%);
  87. width: 20px;
  88. height: 3px;
  89. background-color: #323233;
  90. border-radius: 2px;
  91. }
  92. }
  93. .sys-notifi {
  94. margin-left: 35px;
  95. }
  96. }
  97. }
  98. }
  99. </style>