Show sourcecode
The following files exists in this folder. Click to view.
config.php
footer.php
header.php
footer.php
62 lines UTF-8 Windows (CRLF)
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
<!-- footer -->
<footer id="bottom">
<p>Verktyg:
<a href="http://validator.w3.org/check/referer">HTML5</a>
<a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a>
<a href="http://validator.w3.org/unicorn/check?ucn_uri=referer&ucn_task=conformance">Unicorn</a>
<a href="viewsource.php">Källkod</a>
</p>
<?php if(isset($pageTimeGeneration)) { ?>
<p>Sidan skapades på <?php echo round(microtime(true)-$pageTimeGeneration, 5); ?> sekunder</p>
<?php } ?>
</footer>
<script>
const revealItems = document.querySelectorAll('.reveal');
if (revealItems.length) {
const revealObserver = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
}
});
}, {
threshold: 0.18,
rootMargin: '0px 0px -8% 0px'
});
revealItems.forEach((item) => revealObserver.observe(item));
}
const orbs = document.querySelectorAll('.orb');
function updateOrbEffects() {
const vh = window.innerHeight;
const scrollY = window.scrollY;
orbs.forEach((orb, index) => {
const rect = orb.getBoundingClientRect();
const center = rect.top + rect.height / 2;
const distanceFromCenter = Math.abs(center - (vh / 2));
const fadeStrength = Math.max(0, 1 - (distanceFromCenter / (vh * 0.9)));
const alpha = (0.08 + fadeStrength * 0.7).toFixed(3);
const drift = scrollY * (0.04 + index * 0.015) * (index % 2 === 0 ? 1 : -1);
const yShift = scrollY * (0.08 + index * 0.02);
const xWave = Math.sin((scrollY + index * 120) * 0.01) * (14 + index * 6);
orb.style.opacity = alpha;
orb.style.transform = `translate3d(${drift + xWave}px, ${yShift}px, 0) scale(${1 + fadeStrength * 0.18})`;
orb.style.filter = `blur(${10 + (1 - fadeStrength) * 12}px)`;
});
}
updateOrbEffects();
window.addEventListener('scroll', updateOrbEffects, { passive: true });
window.addEventListener('resize', updateOrbEffects);
// Intro removed: no startup overlay behavior to avoid blocking access.
// Page transition behavior removed so navigation is immediate.
</script>
</body>
</html>