8
8
</div >
9
9
<el-row >
10
10
<el-col :span =" 24" >
11
- <el-menu
11
+ <el-menu
12
12
:default-active =" active"
13
13
class =" el-menu-vertical-demo"
14
14
background-color =" #30333c"
15
15
text-color =" #6b7386"
16
16
active-text-color =" #fff"
17
17
>
18
- <el-menu-item
19
- :index =" index"
20
- v-for =" (item,index) in data"
21
- :key =" item._id"
22
- @click =" jump(index)"
23
- >
24
- <i :class =" item.icon" ></i >
25
- <span slot =" title" >{{item.classify}}</span >
26
- </el-menu-item >
18
+ <el-submenu :index =" item.name" v-for =" (item,index) in newDataList" :key =" item.name" >
19
+ <template slot="title">
20
+ <i :class =" item.icon" ></i >
21
+ <span slot =" title" >{{item.name}}</span >
22
+ </template >
23
+ <el-menu-item :index =" nav._id" v-for =" (nav,idx) in item.data" :key =" nav._id" >
24
+ <a :href =" `#${nav.classify}`" >
25
+ <i :class =" nav.icon" ></i >
26
+ <span slot =" title" >{{nav.classify}}</span >
27
+ </a >
28
+ </el-menu-item >
29
+ </el-submenu >
27
30
</el-menu >
28
31
</el-col >
29
32
</el-row >
42
45
</div >
43
46
</div >
44
47
<!-- 开发社区 -->
45
- <div class =" box" v-for =" (item,index) in data" :key =" index" :ref = " `box-${index}` " >
46
- <a href = " # " :name =" item.classify" ></a >
48
+ <div class =" box" v-for =" (item,index) in data" :key =" index" >
49
+ <a :id = " `#${item.classify}` " :name =" item.classify" ></a >
47
50
<div class =" sub-category" >
48
51
<div >
49
52
<i :class =" item.icon" class =" icon" ></i >
57
60
<div class =" copyright" >
58
61
<div >
59
62
Copyright © 2019- 2050
60
- <a href =" https://github.com/geekape/blog" > 钟储兵博客</a >
61
- <a href =" https://github.com/geekape/geek-navigation" > 导航源码下载</a >
63
+ <a href =" https://github.com/geekape/blog" >钟储兵博客</a >
64
+ <a href =" https://github.com/geekape/geek-navigation" >导航源码下载</a >
62
65
</div >
63
66
</div >
64
67
</footer >
@@ -77,7 +80,6 @@ export default {
77
80
return {
78
81
active: " 0" ,
79
82
data: [],
80
- scroll: 0 ,
81
83
selfIndex: 0 ,
82
84
isLeftbar: true
83
85
};
@@ -87,39 +89,45 @@ export default {
87
89
AddNavBtn,
88
90
NavItem
89
91
},
90
- watch: {
91
- active () {
92
- const leftBarTop = document .querySelector (' .left-bar' ).scrollTop
93
- const num = this .active
94
- const length = this .data .length
95
- if (num >= 10 && num <= length) {
96
- document .querySelector (' .left-bar' ).scrollTop = leftBarTop + 60
97
- }
98
- if (num < 10 && num >= 0 ) {
99
- document .querySelector (' .left-bar' ).scrollTop = leftBarTop - 60
100
- }
92
+ computed: {
93
+ newDataList () {
94
+ const arr = [];
95
+ let product = {};
96
+ let operation = {};
97
+ let design = {};
98
+ let web = {};
99
+ // 产品
100
+ product .name = " 产品" ;
101
+ product .icon = " csz czs-circle" ;
102
+ product .data = this .data .filter (
103
+ item => item .classify .indexOf (" [产品]" ) != - 1
104
+ );
105
+ arr .push (product);
106
+ // 运营
107
+ operation .name = " 运营" ;
108
+ operation .icon = " csz czs-square" ;
109
+ operation .data = this .data .filter (
110
+ item => item .classify .indexOf (" [运营]" ) != - 1
111
+ );
112
+ arr .push (operation);
113
+ // 设计
114
+ design .name = " 设计" ;
115
+ design .icon = " csz czs-triangle" ;
116
+ design .data = this .data .filter (
117
+ item => item .classify .indexOf (" [设计]" ) != - 1
118
+ );
119
+ arr .push (design);
120
+ // 前端
121
+ web .name = " 前端" ;
122
+ web .icon = " csz czs-camber" ;
123
+ web .data = this .data .filter (
124
+ item => item .classify .indexOf (" [前端]" ) != - 1
125
+ );
126
+ arr .push (web);
127
+ return arr;
101
128
}
102
129
},
103
130
methods: {
104
- jump (idx ) {
105
- this .selfIndex = idx;
106
-
107
- // 跳转
108
- let allSite = document .querySelectorAll (" .box" );
109
- let selfOffsetTop = allSite[idx].offsetTop - 10 ;
110
- // 判断是否是在手机上
111
- window .screenWidth = document .body .clientWidth ;
112
- if (window .screenWidth < 481 ) {
113
- selfOffsetTop -= 50 ;
114
- }
115
- // Chrome
116
- document .body .scrollTop = selfOffsetTop;
117
- // Firefox
118
- document .documentElement .scrollTop = selfOffsetTop;
119
- // Safari
120
- window .pageYOffset = selfOffsetTop;
121
- },
122
-
123
131
async getData () {
124
132
const res = await this .$api .getHome ();
125
133
this .data = res .data ;
@@ -134,23 +142,8 @@ export default {
134
142
that .selfIndex = i;
135
143
}
136
144
}
137
- },
138
- handleScroll () {
139
- const that = this
140
- const length = that .data .length
141
- const content = document .querySelectorAll (' .box' )
142
- const top = document .body .scrollTop || document .documentElement .scrollTop
143
- for (let i= length- 1 ; i>= 0 ; i-- ) {
144
- if (top >= content[i].offsetTop - 20 ) {
145
- that .active = i .toString ()
146
- break
147
- }
148
- }
149
145
}
150
146
},
151
- mounted (){
152
- window .addEventListener (' scroll' , this .handleScroll );
153
- },
154
147
created () {
155
148
const that = this ;
156
149
this .getData ();
@@ -175,5 +168,19 @@ export default {
175
168
.el-dialog {
176
169
min-width: 320px;
177
170
}
178
-
171
+ .el-submenu .el-menu-item {
172
+ padding: 0;
173
+ }
174
+ .el-menu-item > a {
175
+ color: rgb(107, 115, 134);
176
+ display: block;
177
+ width:100%;
178
+ height: 100%;
179
+ }
180
+ .el-menu-item.is-active > a {
181
+ color:#fff;
182
+ }
183
+ .csz {
184
+ margin-right: 5px;
185
+ }
179
186
</style>
0 commit comments