Repository navigation
Expand file tree
/
Copy pathscript.js
More file actions
123 lines (110 loc) · 3.38 KB
/
Copy pathscript.js
File metadata and controls
123 lines (110 loc) · 3.38 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
// Datos de los miembros del clan
const members = [
{
name: "Jorge",
gameName: "Know Jorge",
age: 17,
role: "Líder",
photo: "jorge.jpg"
},
{
name: "Thiago",
gameName: "Mz8 Ale",
age: 14,
role: "Decano",
photo: "thiago.jpg"
},
{
name: "Alvaro",
gameName: "Ghost Boy",
age: 16,
role: "Miembro",
photo: "alvaro.jpg"
},
{
name: "Gabriel",
gameName: "50 Cent",
age: 15,
role: "Miembro",
photo: "gabi.jpg"
}
];
// Función para crear una tarjeta de miembro
function createMemberCard(member) {
const card = document.createElement('div');
card.className = 'member-card';
card.innerHTML = `
<img src="${member.photo}" alt="${member.name}" loading="lazy">
<h3>${member.gameName}</h3>
<p>Nombre real: ${member.name}</p>
<p>Edad: ${member.age}</p>
<p>Rol: ${member.role}</p>
`;
return card;
}
// Función para mostrar los miembros en la cuadrícula
function displayMembers(filteredMembers) {
const membersGrid = document.getElementById('membersGrid');
membersGrid.innerHTML = '';
const fragment = document.createDocumentFragment();
filteredMembers.forEach(member => {
fragment.appendChild(createMemberCard(member));
});
membersGrid.appendChild(fragment);
}
// Función para filtrar miembros por rol
function filterMembers(role) {
let filteredMembers;
if (role === 'all') {
filteredMembers = members;
} else {
filteredMembers = members.filter(member => member.role === role);
}
displayMembers(filteredMembers);
}
// Función para configurar el desplazamiento suave
function setupSmoothScrolling() {
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault();
const targetId = this.getAttribute('href').substring(1);
const targetElement = document.getElementById(targetId);
if (targetElement) {
window.scrollTo({
top: targetElement.offsetTop - 80, // Ajusta este valor según el tamaño de tu header
behavior: 'smooth'
});
}
});
});
}
// Función para animar la aparición de secciones al hacer scroll
function animateSections() {
const sections = document.querySelectorAll('.section');
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('active');
}
});
}, { threshold: 0.1 });
sections.forEach(section => {
observer.observe(section);
});
}
// Event Listeners y inicialización
document.addEventListener('DOMContentLoaded', () => {
// Mostrar todos los miembros al cargar la página
filterMembers('all');
// Configurar el desplazamiento suave
setupSmoothScrolling();
// Iniciar las animaciones de las secciones
animateSections();
// Agregar event listeners a los botones de filtro
document.querySelectorAll('.filter-button').forEach(button => {
button.addEventListener('click', (e) => {
const role = e.target.dataset.role;
filterMembers(role);
});
});
});