header.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <template>
  2. <div class="header-container" :class="{'offset':isOffset||fixTop}">
  3. <div class="inner-container">
  4. <img class="brand" :src="isOffset?require('../assets/logo-rev.png'):require('../assets/mainLogo.png')"/>
  5. <ul class="header-tab">
  6. <li class="header-tab-item" :class="{'active':$route.path==='/index'}" @click="$router.push('/index')">首页</li>
  7. <li class="header-tab-item" :class="{'active':$route.path==='/proxy-apply'} " @click="$router.push('/proxy-apply')"><i class="badge">HOT</i>申请代理</li>
  8. </ul>
  9. <div class="log-box" v-if="!isLogin">
  10. <p class="register">注册</p>
  11. <p class="divider">|</p>
  12. <p class="login">登录</p>
  13. </div>
  14. <div class="logged-box" v-else>
  15. <div class="username"><i class="iconfont icon">&#xe61a;</i> {{loginAccount}} </div>
  16. <div class="logout"><i class="iconfont icon">&#xe620;</i>退出</div>
  17. </div>
  18. </div>
  19. </div>
  20. </template>
  21. <script>
  22. export default {
  23. name: "headerComponent",
  24. props:['fixTop','isLogin','loginAccount'],
  25. data(){
  26. return{
  27. isTopped:this.fixTop,
  28. isOffset:false,
  29. }
  30. },
  31. mounted(){
  32. this.isOffset=this.isTopped||false;
  33. if(this.isTopped){
  34. return;
  35. }
  36. window.addEventListener('scroll',this.scrollListener)
  37. },
  38. methods:{
  39. scrollListener(e){
  40. this.isOffset=!!window.pageYOffset;
  41. // console.log(window.pageYOffset);
  42. }
  43. }
  44. }
  45. </script>
  46. <style scoped lang="less">
  47. @import "../assets/less/_variable.less";
  48. .header-container{
  49. transition: all 0.25s ease;
  50. position: fixed;
  51. width: 100%;
  52. height: 80px;
  53. background-color: rgba(0, 0, 0, 0.2);
  54. z-index: 9;
  55. &.topped{
  56. position: relative!important;
  57. }
  58. }
  59. .badge{
  60. position: absolute;
  61. background-color: #ff4e00;
  62. color: #fff;
  63. display: block;
  64. width: 38px;
  65. height: 18px;
  66. line-height: 18px;
  67. font-size: 12px;
  68. border-radius: 2px;
  69. top: 8px;
  70. right: 0;
  71. &:after{
  72. content: "";
  73. width: 0;
  74. height: 0;
  75. position: absolute;
  76. /*z-index: -1;*/
  77. bottom: 0;
  78. left: 30%;
  79. border-left: 5px solid transparent;
  80. border-right: 5px solid transparent;
  81. border-top: 14px solid #ff4e00;
  82. margin-bottom: -8px;
  83. transform: rotate(30deg);
  84. }
  85. }
  86. .inner-container{
  87. position: relative;
  88. width: 1200px;
  89. margin: 0 auto;
  90. display: flex;
  91. flex-direction: row;
  92. & .logged-box{
  93. position: absolute;
  94. right: 0;
  95. top:0;
  96. /*float: right;*/
  97. color:white;
  98. display: flex;
  99. align-items: center;
  100. height: 80px;
  101. font-size: 14px;
  102. & .icon{
  103. font-size: 20px;
  104. color: #999;
  105. padding-right: 5px;
  106. }
  107. & .username{
  108. margin-right: 10px;
  109. }
  110. & .logout{
  111. cursor: pointer;
  112. }
  113. }
  114. & .log-box{
  115. position: absolute;
  116. right: 0;
  117. top:0;
  118. /*float: right;*/
  119. color:white;
  120. display: flex;
  121. width: 84px;
  122. align-items: center;
  123. height: 80px;
  124. font-size: 14px;
  125. & .register{
  126. color: #008be0;
  127. }
  128. & .divider{
  129. color:#3290cf;
  130. margin: 0 5px;
  131. }
  132. }
  133. & .brand{
  134. position: absolute;
  135. width: 100px;
  136. height: 33px;
  137. top: 50%;
  138. transform: translateY(-50%);
  139. }
  140. & .header-tab{
  141. margin-left: 135px;
  142. display: flex;
  143. flex-direction: row;
  144. & .header-tab-item{
  145. position: relative;
  146. font-size: 14px;
  147. width: 100px;
  148. height: 80px;
  149. line-height: 80px;
  150. cursor: pointer;
  151. color: white;
  152. &.active{
  153. color: @primaryBlue;
  154. background-color: white;
  155. }
  156. }
  157. }
  158. }
  159. .header-container.offset{
  160. & .logged-box{
  161. color:black;
  162. }
  163. background-color: white;
  164. & .header-tab .header-tab-item {
  165. color: black;
  166. &.active {
  167. background-color: @primaryBlue;
  168. color: white;
  169. }
  170. }
  171. }
  172. </style>