Geen omschrijving

Layout.vue 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div class="app-wrapper" :class="{hideSidebar:!sidebar.opened}">
  3. <div class="sidebar-wrapper">
  4. <sidebar class="sidebar-container"></sidebar>
  5. </div>
  6. <div class="main-container">
  7. <navbar></navbar>
  8. <app-main></app-main>
  9. </div>
  10. </div>
  11. </template>
  12. <script>
  13. import { Navbar, Sidebar, AppMain } from '@/views/layout'
  14. export default {
  15. name: 'layout',
  16. components: {
  17. Navbar,
  18. Sidebar,
  19. AppMain
  20. },
  21. computed: {
  22. sidebar() {
  23. return this.$store.state.app.sidebar
  24. }
  25. }
  26. }
  27. </script>
  28. <style rel="stylesheet/scss" lang="scss" scoped>
  29. @import "src/styles/mixin.scss";
  30. .app-wrapper {
  31. @include clearfix;
  32. position: relative;
  33. height: 100%;
  34. width: 100%;
  35. &.hideSidebar {
  36. .sidebar-wrapper {
  37. transform: translate(-140px, 0);
  38. .sidebar-container {
  39. transform: translate(132px, 0);
  40. }
  41. &:hover {
  42. transform: translate(0, 0);
  43. .sidebar-container {
  44. transform: translate(0, 0);
  45. }
  46. }
  47. }
  48. .main-container {
  49. margin-left: 40px;
  50. }
  51. }
  52. .sidebar-wrapper {
  53. width: 180px;
  54. position: fixed;
  55. top: 0;
  56. bottom: 0;
  57. left: 0;
  58. z-index: 1001;
  59. overflow: hidden;
  60. transition: all .28s ease-out;
  61. }
  62. .sidebar-container {
  63. transition: all .28s ease-out;
  64. position: absolute;
  65. top: 0;
  66. bottom: 0;
  67. left: 0;
  68. right: -17px;
  69. overflow-y: scroll;
  70. }
  71. .main-container {
  72. min-height: 100%;
  73. transition: all .28s ease-out;
  74. margin-left: 180px;
  75. }
  76. }
  77. </style>