Blame view

ant-design-vue-jeecg/src/components/menu/SideMenu.vue 4.18 KB
1
2
3
<template>
  <a-layout-sider
    :class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
4
    width="208px"
5
    :collapsible="collapsible"
6
    v-model="collapsed"
7
8
9
10
11
12
13
    :trigger="null">
    <logo />
    <s-menu
      :collapsed="collapsed"
      :menu="menus"
      :theme="theme"
      @select="onSelect"
14
      @updateMenuTitle="onUpdateMenuTitle"
15
      :mode="mode"
16
17
      :style="smenuStyle">
    </s-menu>
18
19
20
21
22
  </a-layout-sider>

</template>

<script>
23
  import ALayoutSider from 'ant-design-vue/es/layout/Sider'
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  import Logo from '../tools/Logo'
  import SMenu from './index'
  import { mixin, mixinDevice } from '@/utils/mixin.js'

  export default {
    name: "SideMenu",
    components: { ALayoutSider, Logo, SMenu },
    mixins: [mixin, mixinDevice],
    props: {
      mode: {
        type: String,
        required: false,
        default: 'inline'
      },
      theme: {
        type: String,
        required: false,
        default: 'dark'
      },
      collapsible: {
        type: Boolean,
        required: false,
        default: false
      },
      collapsed: {
        type: Boolean,
        required: false,
        default: false
      },
      menus: {
        type: Array,
        required: true
      }
    },
58
59
60
61
62
63
64
65
66
67
68
    computed:{
      smenuStyle() {
        let style = { 'padding': '0' }
        if (this.fixSiderbar) {
          style['height'] = 'calc(100% - 59px)'
          style['overflow'] = 'auto'
          style['overflow-x'] = 'hidden'
        }
        return style
      }
    },
69
70
71
    methods: {
      onSelect (obj) {
        this.$emit('menuSelect', obj)
72
73
74
      },
      onUpdateMenuTitle (obj) {
        this.$emit('updateMenuTitle', obj)
75
76
77
      }
    }
  }
78
</script>
79
<style lang="less" scoped>
80
81
82

  /* update_begin author:sunjianlei date:20190509 for: 修改侧边导航栏滚动条的样式 */
  .sider {
83
    @scrollBarSize: 10px;
84
85
86
87
88

    ul.ant-menu {

      /* 定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
      &::-webkit-scrollbar {
89
90
        width: @scrollBarSize;
        height: @scrollBarSize;
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
        background-color: transparent;
        display: none;
      }

      & .-o-scrollbar {
        display: none;
      }

      /* 兼容IE */
      -ms-overflow-style: none;
      -ms-scroll-chaining: chained;
      -ms-content-zooming: zoom;
      -ms-scroll-rails: none;
      -ms-content-zoom-limit-min: 100%;
      -ms-content-zoom-limit-max: 500%;
      -ms-scroll-snap-type: proximity;
      -ms-scroll-snap-points-x: snapList(100%, 200%, 300%, 400%, 500%);

      /* 定义滚动条轨道 */
      &::-webkit-scrollbar-track {
        background-color: transparent;
      }

      /* 定义滑块 */
      &::-webkit-scrollbar-thumb {
116
        border-radius: @scrollBarSize;
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
        background-color: #eee;
        box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1);

        &:hover {
          background-color: #dddddd;
        }

        &:active {
          background-color: #bbbbbb;
        }
      }
    }

    /** 暗色系滚动条样式 */
    &.dark ul.ant-menu {
      &::-webkit-scrollbar-thumb {
        background-color: #666666;

        &:hover {
          background-color: #808080;
        }

        &:active {
          background-color: #999999;
        }
      }
    }
144
145
146
147
  }

  /* update_end author:sunjianlei date:20190509 for: 修改侧边导航栏滚动条的样式 */
148
149
150
</style>

<!-- update_begin author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->
151
<style lang="less">
152
153
   // 选中首页的时候不显示背景颜色,只应用于左侧菜单
  .sider .ant-menu.ant-menu-root {
154
    & > .ant-menu-item:first-child {
155
      background-color: transparent;
156
157
158

      & > a, & > a:hover {
        color: rgba(0, 0, 0, 0.65);
159
160
161
162
      }

      &.ant-menu-item-selected {
        & > a, & > a:hover {
163
          color: @primary-color;
164
165
166
        }
      }
    }
167
168
169
170
171
172
173
174
175
176
    &.ant-menu-dark > .ant-menu-item:first-child {
      & > a, & > a:hover {
        color: rgba(255, 255, 255, 0.65);
      }

      &.ant-menu-item-selected {
        & > a, & > a:hover {
          color: rgba(255, 255, 255, 1);
        }
177
178
179
180
      }
    }
  }
</style>
181
<!-- update_end author:sunjianlei date:20190530 for: 选中首页的时候不显示背景颜色 -->