-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
55 lines (48 loc) · 1.37 KB
/
Copy pathscript.js
File metadata and controls
55 lines (48 loc) · 1.37 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
/**
* Reevu Adakroy - Portfolio
* Content positioning & interactions
*/
document.addEventListener('DOMContentLoaded', () => {
positionOverlay();
initSmoothScroll();
initEntrance();
});
/**
* Position the content overlay to match the forbidden zone
*/
function positionOverlay() {
const rect = window.__forbiddenZoneRect;
const overlay = document.getElementById('content-overlay');
if (!rect) return;
overlay.style.marginLeft = rect.x + 'px';
overlay.style.marginRight = (window.innerWidth - rect.x - rect.width) + 'px';
overlay.style.marginTop = rect.y + 'px';
}
/**
* Smooth scroll for anchor links within the page
*/
function initSmoothScroll() {
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
const href = this.getAttribute('href');
if (href === '#') return;
e.preventDefault();
const target = document.querySelector(href);
if (target) {
const targetTop = target.getBoundingClientRect().top + window.scrollY;
window.scrollTo({ top: targetTop - 40, behavior: 'smooth' });
}
});
});
}
/**
* Staggered entrance fade-in on load
*/
function initEntrance() {
const elements = document.querySelectorAll('.fade-in');
elements.forEach((el, i) => {
setTimeout(() => {
el.classList.add('visible');
}, 200 + i * 150);
});
}