App.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div id="app">
  3. <div class="big-nav">
  4. <iheader>
  5. <inavs slot-scope="{cp, split}" :cp="cp" :split="split"/>
  6. </iheader>
  7. </div>
  8. <div class="mask" :class="{active: showMask}" :style="{zIndex: maskZIndex}"></div>
  9. <!-- <ichat /> -->
  10. <router-view/>
  11. <ifooter v-if="$route.name!=='about'" />
  12. </div>
  13. </template>
  14. <script>
  15. import '@/assets/style/reset.scss'
  16. import '@/assets/style/public.scss'
  17. import '@/assets/imgfont/iconfont.css'
  18. import '@/assets/font/iconfont.css'
  19. import header from '@/page/layout/header'
  20. import footer from '@/page/layout/footer'
  21. import login from '@/page/layout/login'
  22. import navs from '@/page/navs'
  23. import chat from '@/page/chat'
  24. export default {
  25. name: 'App',
  26. data () {
  27. return {
  28. maskZIndex: -1,
  29. showMask: false
  30. }
  31. },
  32. components: {
  33. iheader: header,
  34. ifooter: footer,
  35. ilogin: login,
  36. inavs: navs,
  37. ichat: chat
  38. },
  39. mounted () {
  40. this.$bus.$on('showMask', () => {
  41. clearTimeout(this.timeout)
  42. this.maskZIndex = 3
  43. this.showMask = true
  44. })
  45. this.$bus.$on('hideMask', () => {
  46. clearTimeout(this.timeout)
  47. this.showMask = false
  48. this.timeout = setTimeout(() => {
  49. this.maskZIndex = -1
  50. }, 700)
  51. })
  52. }
  53. }
  54. </script>
  55. <style lang="scss" scoped>
  56. #app {
  57. padding-top: 68px;
  58. }
  59. .big-nav {
  60. position: fixed;
  61. left: 0;
  62. top: 0;
  63. width: 100%;
  64. z-index: 999;
  65. }
  66. .mask {
  67. z-index: -1;
  68. display: block;
  69. background-color: rgba(0,0,0,0);
  70. transition: background-color .7s cubic-bezier(.77,0,.175,1);
  71. }
  72. .mask.active {
  73. background-color: rgba(0,0,0,0.4);
  74. }
  75. </style>