55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
/**
|
|
* Страница "Преподаватели" — фильтр карточек + reveal-анимации.
|
|
* Фильтры читаются из кнопок .teachers-filter__btn[data-filter],
|
|
* карточки фильтруются по .teachers-card[data-category].
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
|
|
// ── Reveal-анимации (как на главной/школе) ──
|
|
var sections = document.querySelectorAll('.page-teachers .reveal');
|
|
if (sections.length && 'IntersectionObserver' in window) {
|
|
var observer = new IntersectionObserver(function (entries) {
|
|
entries.forEach(function (entry) {
|
|
if (entry.isIntersecting) {
|
|
entry.target.classList.add('is-visible');
|
|
observer.unobserve(entry.target);
|
|
}
|
|
});
|
|
}, { threshold: 0.12 });
|
|
|
|
sections.forEach(function (el) {
|
|
observer.observe(el);
|
|
});
|
|
}
|
|
|
|
// ── Фильтр карточек ──
|
|
var filterWrap = document.querySelector('.teachers-filter');
|
|
var grid = document.getElementById('teachers-grid');
|
|
if (!filterWrap || !grid) {
|
|
return;
|
|
}
|
|
|
|
var buttons = filterWrap.querySelectorAll('.teachers-filter__btn');
|
|
var cards = grid.querySelectorAll('.teachers-card');
|
|
|
|
function applyFilter(slug) {
|
|
buttons.forEach(function (btn) {
|
|
var isActive = btn.getAttribute('data-filter') === slug;
|
|
btn.classList.toggle('is-active', isActive);
|
|
btn.setAttribute('aria-pressed', isActive ? 'true' : 'false');
|
|
});
|
|
|
|
cards.forEach(function (card) {
|
|
var cat = card.getAttribute('data-category') || 'all';
|
|
var visible = (slug === 'all' || cat === slug || cat === 'all');
|
|
card.classList.toggle('is-hidden', !visible);
|
|
});
|
|
}
|
|
|
|
buttons.forEach(function (btn) {
|
|
btn.addEventListener('click', function () {
|
|
applyFilter(btn.getAttribute('data-filter') || 'all');
|
|
});
|
|
});
|
|
})(); |