style: added adaption to mobile & block animations

This commit is contained in:
Ignat Karelov
2026-04-23 18:01:48 +03:00
parent acb1eb5ec5
commit 64d8a24f58
7 changed files with 1476 additions and 663 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

58
assets/js/main.js Normal file
View File

@@ -0,0 +1,58 @@
(() => {
const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
const selectors = [
".section__head",
".info-card",
".feature-card",
".object-card",
".service-card",
".gallery__item",
".review-card",
".stats article",
".booking__form",
".contacts-card",
".hours-card",
".footer__col",
".footer__bottom"
];
const elements = Array.from(document.querySelectorAll(selectors.join(",")));
if (!elements.length) return;
const siblingCounters = new WeakMap();
elements.forEach((element) => {
element.classList.add("scroll-reveal");
const parent = element.parentElement;
let offsetIndex = 0;
if (parent) {
offsetIndex = siblingCounters.get(parent) ?? 0;
siblingCounters.set(parent, offsetIndex + 1);
}
element.style.setProperty("--reveal-delay", `${(offsetIndex % 4) * 80}ms`);
});
if (reduceMotion || !("IntersectionObserver" in window)) {
elements.forEach((element) => element.classList.add("is-visible"));
return;
}
const observer = new IntersectionObserver(
(entries, currentObserver) => {
entries.forEach((entry) => {
if (!entry.isIntersecting) return;
entry.target.classList.add("is-visible");
currentObserver.unobserve(entry.target);
});
},
{
threshold: 0.18,
rootMargin: "0px 0px -12% 0px"
}
);
elements.forEach((element) => observer.observe(element));
})();

File diff suppressed because it is too large Load Diff

View File

@@ -12,3 +12,9 @@
border-radius: $radius-md;
box-shadow: $shadow-card;
}
@mixin respond($breakpoint) {
@media only screen and (max-width: $breakpoint) {
@content;
}
}

View File

@@ -1,6 +1,12 @@
$container: 1400px;
$container-padding: 24px;
$bp-xxl: 1600px;
$bp-xl: 1280px;
$bp-lg: 1024px;
$bp-md: 768px;
$bp-sm: 520px;
$font-main: "Segoe UI", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif;
$color-bg: #121212;