-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathscript.js
More file actions
311 lines (269 loc) · 11.7 KB
/
Copy pathscript.js
File metadata and controls
311 lines (269 loc) · 11.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
116
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
// script.js (已升级)
document.addEventListener('DOMContentLoaded', function() {
// --- 数据定义区 ---
const departments = [
{ id: 'lead', name: '指导老师 & 负责人', icon: 'fas fa-star', description: '指导和管理中心的核心团队。', pageUrl: 'index4cov.html' },
{ id: 'wx', name: '文宣部', icon: 'fas fa-bullhorn', description: 'TBD。', pageUrl: 'departments/wx/dep_home.html' },
{ id: 'qy', name: '前研探索部', icon: 'fas fa-flask', description: 'TBD。', pageUrl: 'departments/qy/department_intro.html' },
{ id: 'jt', name: '技术推广部', icon: 'fas fa-code', description: 'TBD。', pageUrl: 'departments/jt/dep_home.html' },
{ id: 'cj', name: '创新实践部', icon: 'fas fa-lightbulb', description: 'TBD。', pageUrl: 'departments/cj/dep_home.html' }
];
// [MODIFIED] 成员数据:为每个成员增加了 'year' 属性
const members = [
// --- 2025-26级 ---
{
name:'YY',
role:'指导老师',
bio:'期待科创中心越来越好!',
imageUrl:'image/3_zdls.jpeg',
departmentId:'lead',
year:'2025-2026届',
contact:''
},
{
name:'xk',
role:'中心负责人',
bio:'让科技有温度,让科技有力量!希望和科创一起,变得越来越好!',
imageUrl:'image/3_fzr.png',
departmentId:'lead',
year:'2025-2026届',
contact:''
},
{
name:'太阳镜',
role:'文宣部部长',
bio:'天天开心,开心就好,大家都要幸福呀🥰 ps:来文宣来文宣',
imageUrl:'image/3_wx.jpeg',
departmentId:'wx',
year:'2025-2026届',
contact:'3346875120@qq.com'
},
{
name:'夏白轩',
role:'技术推广部部长',
bio:'找到几件热爱的事情,然后做下去就好了੭ ᐕ)੭ 希望每一位加入科创的小朋友都能找到自己愿意为之投入的事情!',
imageUrl:'image/3_jt.gif',
departmentId:'jt',
year:'2025-2026届',
contact:'3493947396@qq.com'
},
{
name:'JJ',
role:'创新实践部部长',
bio:'明天一定会是更好的一天,不论对你,对我们,对科创大家庭',
imageUrl:'image/3_cj.jpg',
departmentId:'cj',
year:'2025-2026届',
contact:'2176342971@qq.com'
},
{
name:'邪恶涵宝猎手',
role:'前研探索部长',
bio:'科创的故事,永远有下一章 —— 而我们,都是执笔人',
imageUrl:'image/3_qy.jpg',
departmentId:'qy',
year:'2025-2026届',
contact:''
},
// --- 2024-25级 ---
{
name: 'CT',
role: 'Leader',
bio: '',
imageUrl: 'image/2_zdls.jpg',
departmentId: 'lead',
year: "2024-2025届",
contact:''
},
{
name: '无尘丨溯荒',
role: '中心负责人',
bio: '莫负相逢人海间 <br>\
——用一点点时间,和全部的爱。',
imageUrl: 'image/2_fzr.jpg',
departmentId: 'lead',
year: "2024-2025届",
contact:'abilitywuchen@qq.com'
},
{
name: '蓝淇',
role: '文宣部部长',
bio: '科创科创我们喜欢你…在这个温暖的大家庭里大家一起共事,一起学习,一起玩耍,一起搞抽象,收获了无限的温馨回忆。作为文宣部的部长,我目睹着小朋友们和那时的我一样从懵懂无知到老奸巨猾(?),变成了一颗颗可以托举科创bigger family的大树,非常感谢大家能来到这里,能与我相遇❤️',
imageUrl: 'image/emm_2_wx.jpg',
departmentId: 'wx',
year: "2024-2025届",
contact:'3304485155@qq.com(lihanqizzz@gmail.com)'
},
{
name: 'TK',
role: '技术推广部部长',
bio: '不要急,没有⼀朵花,从⼀开始就是花。也不要嚣张,没有⼀朵花,到最后还是花。',
imageUrl: 'image/2_jt.jpg',
departmentId: 'jt',
year: "2024-2025届",
contact:'1243564090@qq.com'
},
{
name: 'Crazy_Bear',
role: '创新实践部部长',
bio: '创剑我们走,去追寻所爱!',
imageUrl: 'image/2_cj.jpg',
departmentId: 'cj',
year: "2024-2025届",
contact:'2373485985@qq.com'
},
{
name: 'Lemonoscar',
role: '前研探索部长',
bio: '玲珑骰子安红豆,入骨相思知不知。爱来自前研!衷心祝愿科创的未来一帆风顺,继往开来!!!',
imageUrl: 'image/2_qy.jpg',
departmentId: 'qy',
year: "2024-2025届",
contact:'3467057703@qq.com'
},
// 2023-2024届
{
name:'斯威特·铁',
role:'指导老师',
bio:'To be pure, decent and brave.',
imageUrl:'image/1_zdls.jpeg',
departmentId:'lead',
year:'2023-2024届',
contact:''
},
{
name:'SH',
role:'中心负责人',
bio:'敢想、敢错、敢创造;保持好奇,保持天真,科技永远为浪漫的理想主义者敞开大门✨',
imageUrl:'image/1_fzr.jpeg',
departmentId:'lead',
year:'2023-2024届',
contact:'smooth_lsh@zju.edu.cn'
},
{
name:'XX',
role:'文宣部部长',
bio:'希望大家在科创拥有特别好的每一年~',
imageUrl:'image/1_wx.jpeg',
departmentId:'wx',
year:'2023-2024届',
contact:''
},
{
name:'Lil Dino$aur',
role:'技术推广部部长',
bio:'Tech或许是这个时代最容易获得的生产力😋<br>\
所以想到什么就去做做看,和AI聊一聊想法和设计。<br>\
如果有什么好东西也要记得推广给身边人哦,毕竟任何技术的发展都需要依靠社区的力量😋',
imageUrl:'image/1_jt.jpg',
departmentId:'jt',
year:'2023-2024届',
contact:'lildinosaurni@outlook.com'
},
{
name:'SH',
role:'创新实践部部长',
bio:'',
imageUrl:'image/1_cj.jpg',
departmentId:'cj',
year:'2023-2024届',
contact:''
},
{
name:'李峥',
role:'前研探索部长',
bio:'仰望前空,追研星辰;心怀热爱,启智求真。作为第一任前研探索部部长,我见证了无数想法在这里萌芽、生长,最终化为实践。那份从零到一的激情与坚持,是云峰科创精神最真实的注脚。愿未来的科创人始终保持热爱与好奇,在青春的年华里敢想敢做,把探索的脚步延伸到更远的地方。',
imageUrl:'image/1_qy.jpg',
departmentId:'qy',
year:'2023-2024届',
contact:'realleechung@foxmail.com'
},
// 初创
{
name:'HZ',
role:'指导老师',
bio:'循此苦旅,以达天际,<br>\
祝大家在科创有所得有所获',
imageUrl:'image/0_zdls.jpeg',
departmentId:'lead',
year:'初创',
contact:''
},
{
name:'BW',
role:'负责人',
bio:'能和志同道合的伙伴共创云峰科创中心,我深感幸运。在这里的每段经历都让我受益匪浅:既结识了行业前辈与优秀同窗,也让心中的科研种子随年级增长愈发茁壮,更陪伴我斩获竺奖、收获全奖Offer。<br>\
愿科创中心的大家都能在此找到热爱,用好平台资源,让这份热爱发光发热。如有需要,请联系我13857822356~',
imageUrl:'image/0_fzr.JPG',
departmentId:'lead',
year:'初创',
contact:'qiubowendddd@gmail.com'
},
];
// --- 功能函数区 ---
function displayMembersByYear() {
const container = document.getElementById('member-groups-container');
if (!container) return;
// 1. 按年份对成员进行分组
const groupedByYear = {};
members.forEach(member => {
if (!groupedByYear[member.year]) {
groupedByYear[member.year] = []; // 如果这个年份的分组不存在,就创建一个空数组
}
groupedByYear[member.year].push(member); // 将成员添加到对应年份的数组中
});
// 2. 获取所有年份并降序排序 (让最新的年份在最上面)
const sortedYears = Object.keys(groupedByYear).sort((a, b) => b - a);
// 3. 遍历排序后的年份,为每一年生成 HTML 结构
sortedYears.forEach(year => {
// 创建年份分组的容器
const yearGroup = document.createElement('div');
yearGroup.className = 'year-group';
// 创建该年份下的成员卡片网格
let memberCardsHTML = '';
const yearMembers = groupedByYear[year];
yearMembers.forEach(member => {
const departmentInfo = departments.find(d => d.id === member.departmentId);
const departmentLink = departmentInfo ? `${departmentInfo.pageUrl}?dep=${departmentInfo.id}` : '#';
// 拼接每个成员卡片的 HTML
memberCardsHTML += `
<div class="member-card">
<img src="${member.imageUrl}" alt="成员 ${member.name} 的头像">
<h3>${member.name}</h3>
<a class="role" href="${departmentLink}">${member.role}</a>
<p class="bio">${member.bio}</p>
<p class="contact">${member.contact}</p>
</div>
`;
});
// 将年份标题和成员网格组合成完整的年份分组 HTML
yearGroup.innerHTML = `
<h3 class="year-title">${year}</h3>
<div class="member-grid">
${memberCardsHTML}
</div>
`;
// 将生成的年份分组添加到主容器中
container.appendChild(yearGroup);
});
}
function setupCommonFeatures() {
const mobileMenuButton = document.getElementById('mobile-menu-button');
const navMenu = document.querySelector('.nav-menu'); // querySelector() 方法返回文档中与指定选择器或选择器组匹配的第一个元素。
if (mobileMenuButton && navMenu) {
mobileMenuButton.addEventListener('click', () => {
navMenu.classList.toggle('active');
});
}
const header = document.getElementById('main-header');
if (header) {
window.addEventListener('scroll', () => {
header.classList.toggle('scrolled', window.scrollY > 50);
});
}
}
setupCommonFeatures(); // 首先调用通用功能设置函数,确保所有页面共享的交互功能(如导航菜单和页眉滚动效果)被初始化。
if (document.getElementById('member-groups-container')) {
displayMembersByYear();
}
});