From 30c9b97f1ca61d6a9a0f6e19f3e29205a5f6f0cd Mon Sep 17 00:00:00 2001 From: HouTeng Chan <ht-chen21@mails.tsinghua.edu.cn> Date: Mon, 30 Sep 2024 04:18:47 +0000 Subject: [PATCH] Update file home.html --- wiki/pages/home.html | 133 +++++++++++++++++++++---------------------- 1 file changed, 65 insertions(+), 68 deletions(-) diff --git a/wiki/pages/home.html b/wiki/pages/home.html index 0408ecbd..c14b193d 100644 --- a/wiki/pages/home.html +++ b/wiki/pages/home.html @@ -149,7 +149,7 @@ margin: 20px; } } - + .loader-container { position: fixed; top: 0; @@ -168,7 +168,8 @@ width: 150px; height: 150px; } - .line-container { + + .line-container { position: absolute; top: 0; left: 0; @@ -205,15 +206,15 @@ <div class="line-container"> <svg width="100%" height="100%" preserveAspectRatio="none"> - <path class="line" id="line1" d="M0 0 Q 0 0, 0 0"/> - <path class="line" id="line2" d="M0 0 Q 0 0, 0 0"/> - <path class="line" id="line3" d="M0 0 Q 0 0, 0 0"/> + <path class="line" id="line1" d=""/> + <path class="line" id="line2" d=""/> + <path class="line" id="line3" d=""/> </svg> </div> <img id="sachet" src="https://static.igem.wiki/teams/5187/art/icon.png" alt="Sachet"> - +<!-- Existing content --> <div id="menu"> {% include 'menu.html' %} </div> @@ -363,75 +364,71 @@ </footer> </body> -<script> - window.addEventListener('load', function() { - const loaderContainer = document.querySelector('.loader-container'); - setTimeout(function() { - loaderContainer.style.opacity = '0'; - loaderContainer.style.transition = 'opacity 0.5s ease'; - setTimeout(() => { - loaderContainer.style.display = 'none'; - }, 500); - }, 2000); // Hide after 2 seconds (adjust as needed) -}); -// Animated lines -const lines = document.querySelectorAll('.line'); - const sachet = document.getElementById('sachet'); - let mouseX = 0, mouseY = 0; +< <script> + // Animated lines with fixed paths + const lines = document.querySelectorAll('.line'); + const sachet = document.getElementById('sachet'); + let mouseX = 0, mouseY = 0; - function updateLines() { - const rect = sachet.getBoundingClientRect(); - const sachetX = rect.left + rect.width / 2; - const sachetY = rect.top + rect.height / 2; + // Define fixed paths for each line + const fixedPaths = [ + "M0,100 Q200,200 400,150 T800,300 T1200,200 T1600,250", + "M0,300 Q300,400 600,350 T1000,500 T1400,400 T1800,450", + "M0,500 Q400,600 800,550 T1200,700 T1600,600 T2000,650" + ]; - lines.forEach((line, index) => { - const startX = Math.random() * window.innerWidth; - const startY = Math.random() * window.innerHeight; - const midX = (startX + sachetX) / 2 + (Math.random() - 0.5) * 200; - const midY = (startY + sachetY) / 2 + (Math.random() - 0.5) * 200; + function updateLines() { + const rect = sachet.getBoundingClientRect(); + const sachetX = rect.left + rect.width / 2; + const sachetY = rect.top + rect.height / 2; - const path = `M${startX} ${startY} Q ${midX} ${midY}, ${sachetX} ${sachetY}`; - line.setAttribute('d', path); - }); - } + lines.forEach((line, index) => { + let path = fixedPaths[index]; + // Add a curve to the sachet at the end of each path + path += ` T${sachetX},${sachetY}`; + line.setAttribute('d', path); + }); + } - function animateLines() { - updateLines(); - requestAnimationFrame(animateLines); - } + function animateLines() { + updateLines(); + requestAnimationFrame(animateLines); + } - animateLines(); + window.addEventListener('resize', updateLines); + animateLines(); - document.addEventListener('mousemove', (e) => { - mouseX = e.clientX; - mouseY = e.clientY; - - lines.forEach((line) => { - const distanceX = mouseX - line.getBoundingClientRect().left; - const distanceY = mouseY - line.getBoundingClientRect().top; - const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY); - - if (distance < 100) { - line.style.strokeWidth = 4; - line.style.opacity = 1; - } else { - line.style.strokeWidth = 2; - line.style.opacity = 0.7; - } - }); - }); + document.addEventListener('mousemove', (e) => { + mouseX = e.clientX; + mouseY = e.clientY; + + lines.forEach((line) => { + const lineRect = line.getBoundingClientRect(); + const distanceX = mouseX - (lineRect.left + lineRect.width / 2); + const distanceY = mouseY - (lineRect.top + lineRect.height / 2); + const distance = Math.sqrt(distanceX * distanceX + distanceY * distanceY); + + if (distance < 100) { + line.style.strokeWidth = 4; + line.style.opacity = 1; + } else { + line.style.strokeWidth = 2; + line.style.opacity = 0.7; + } + }); + }); - // Existing scripts - window.addEventListener('load', function() { - const loaderContainer = document.querySelector('.loader-container'); - setTimeout(function() { - loaderContainer.style.opacity = '0'; - loaderContainer.style.transition = 'opacity 0.5s ease'; - setTimeout(() => { - loaderContainer.style.display = 'none'; - }, 500); - }, 2000); - }); + // Existing scripts + window.addEventListener('load', function() { + const loaderContainer = document.querySelector('.loader-container'); + setTimeout(function() { + loaderContainer.style.opacity = '0'; + loaderContainer.style.transition = 'opacity 0.5s ease'; + setTimeout(() => { + loaderContainer.style.display = 'none'; + }, 500); + }, 2000); + }); </script> </html> -- GitLab