diff --git a/JAVASCRIPT/1.js b/JAVASCRIPT/1.js deleted file mode 100644 index 381a8cd..0000000 --- a/JAVASCRIPT/1.js +++ /dev/null @@ -1,513 +0,0 @@ -/*LOCATION SAVER*/ -let clickCount = 0; -const container = document.getElementById("container_4"); - -// Fontu yükle ve bildirimi göster -function loadFontAndShowNotification() { - const font = new FontFace('Monomakh', 'url("/FONTS/Monomakh.woff2") format("woff2")'); - - font.load().then((loadedFont) => { - document.fonts.add(loadedFont); - showNotification(); - }).catch((err) => { - console.error("Font yüklenirken hata oluştu:", err); - showNotification(); // Font yüklenmese bile bildirim gösterilsin - }); -} - -// Tıklama event'i -container.addEventListener("click", () => { - clickCount++; - - if (clickCount === 4) { - navigator.clipboard.writeText("https://maps.app.goo.gl/Q6bYtTBoNX1c5YrTA").then(() => { - loadFontAndShowNotification(); - }); - - clickCount = 0; // Sayaç sıfırla - } -}); - -// Bildirim fonksiyonu -function showNotification() { - const notification = document.createElement("div"); - notification.innerText = "Copied to Clipboard"; - notification.style.position = "fixed"; - notification.style.bottom = "-60px"; // İlk başta aşağıda - notification.style.left = "50%"; - notification.style.transform = "translateX(-50%)"; - notification.style.background = "#333"; - notification.style.color = "#fff"; - notification.style.padding = "12px 24px"; - notification.style.borderRadius = "20px"; // Kenarları oval - notification.style.boxShadow = "0 4px 6px rgba(0, 0, 0, 0.1)"; - notification.style.transition = "bottom 0.4s ease-in-out"; - notification.style.zIndex = "9999"; - notification.style.fontFamily = '"Monomakh", serif'; - notification.style.fontSize = "1.3rem"; - - document.body.appendChild(notification); - - // Bildirimi yukarı kaydır - setTimeout(() => { - notification.style.bottom = "20px"; - }, 100); - - // 2 saniye sonra aşağı kaydır ve sil - setTimeout(() => { - notification.style.bottom = "-60px"; - setTimeout(() => { - notification.remove(); - }, 500); - }, 2000); -} - - -/*CHANGE THEME*/ -const observer = new MutationObserver(() => { -const isDark = document.body.classList.contains("darkmode--activated"); -// Meta tag'in rengi -const themeColorMeta = document.querySelector('meta[name="theme-color"]'); -themeColorMeta.setAttribute("content", isDark ? "#100f2c" : "#F8F6E3"); -// Apple status bar rengi -const appleStatusBarMeta = document.querySelector('meta[name="apple-mobile-web-app-status-bar-style"]'); -appleStatusBarMeta.setAttribute("content", isDark ? "black" : "default"); -}); -observer.observe(document.body, { - attributes: true, - attributeFilter: ["class"], -}); - - -/*ONKEYDOWN*/ -function handleKey(event) { -if (event.key === "Enter" || event.key === " "){event.preventDefault();switchPhoto();}} - - -/*SERVICES VISIBILITY*/ -const boxes = document.querySelectorAll('.services_id'); - -// Görünürlük kontrol fonksiyonu -function checkVisibility() { - const triggerBottom = window.innerHeight * 0.8; - - boxes.forEach((box) => { - const boxTop = box.getBoundingClientRect().top; - - if (boxTop < triggerBottom) { - box.classList.add('visible'); - box.classList.remove('hidden'); - } else { - // Aksi halde kutuyu gizle - box.classList.remove('visible'); - box.classList.add('hidden'); - } - }); -} - -window.addEventListener('scroll', checkVisibility); -window.addEventListener('load', checkVisibility); - - -/*IMAGE CHANGER*/ -let currentIndex = 0; -const images = document.querySelectorAll('#photo img'); - -function switchPhoto() { - // Hide the current image by removing 'visible' - images[currentIndex].classList.remove('visible'); - - // Increment the index and loop back to the first image after the last one - currentIndex = (currentIndex + 1) % images.length; - - // Show the next image by adding 'visible' - images[currentIndex].classList.add('visible'); -} - -// Initially set the first image as visible -images[currentIndex].classList.add('visible'); - - -/*GET TIME*/ -async function getCurrentYear() { - const now = new Date(); - const currentYear = now.getFullYear(); - const currentMonth = now.getMonth() + 1; - let age = currentYear - 2006; - - if(currentMonth < 3){age -= 1;} - return age; -} - -getCurrentYear().then(age => { - const text1 = `an ${age} years old`; - const text2 = `I am ${text1} university student studying Computer Engineering. Since 2020, I focus on embedded systems, mobile app development, debugging, and IoT. I have participated in Teknofest, TUBITAK projects, and Game Jams. I enjoy brainstorming new ideas in areas where help is needed and exploring innovative solutions. In my free time, I love doing sports and making music.`; - - -/*SCROLL REVEALING*/ - document.addEventListener('DOMContentLoaded', () => { - const textContainer = document.getElementById('animatedTextContainer'); - if (!textContainer) return; - - // Split text into words and wrap each word in a span - const words = text2.split(' ').map(word => { - const span = document.createElement('span'); - span.textContent = word; - span.className = 'word'; - return span; - }); - - // Append words to the text container - words.forEach(word => textContainer.appendChild(word)); - }); -}); - - -/*SCROLL EFFECT*/ -document.addEventListener('scroll', () => { - const words = document.querySelectorAll('.word'); - const scrollPosition = window.scrollY; - const windowHeight = window.innerHeight; - const totalHeight = document.body.scrollHeight; - - const scrollPercent = (scrollPosition * 4.7) / (totalHeight - windowHeight); - - words.forEach((word, index) => { - const wordOffset = index / words.length; - const opacity = Math.min(Math.max((scrollPercent - wordOffset) * 2, 0), 1); - word.style.color = `rgba(0, 0, 0, ${opacity})`; - }); -}); - - -/*LAZY LOADING*/ -document.addEventListener("DOMContentLoaded", function() { - const lazyLoadImages = document.querySelectorAll("img.lazy-load"); - - if ("IntersectionObserver" in window) { - const imageObserver = new IntersectionObserver((entries, observer) => { - entries.forEach(entry => { - if (entry.isIntersecting) { - const img = entry.target; - img.src = img.getAttribute("data-src"); - img.removeAttribute("data-src"); - img.classList.remove("lazy-load"); - observer.unobserve(img); - } - }); - }); - - lazyLoadImages.forEach(img => { - imageObserver.observe(img); - }); - } else { - // Fallback for browsers that do not support IntersectionObserver - const loadImages = () => { - lazyLoadImages.forEach(img => { - if (img.getBoundingClientRect().top < window.innerHeight && img.getBoundingClientRect().bottom > 0 && getComputedStyle(img).display !== "none") { - img.src = img.getAttribute("data-src"); - img.removeAttribute("data-src"); - img.classList.remove("lazy-load"); - } - }); - }; - - loadImages(); - window.addEventListener("scroll", loadImages); - window.addEventListener("resize", loadImages); - } -}); - - -/*ECHO EFFECT*/ -document.addEventListener("scroll", function () { - let scrollY = window.scrollY; - let windowHeight = window.innerHeight; // Pencere yüksekliği - - // Her intro-echo öğesi için kontrol et - document.querySelectorAll(".intro-echo").forEach((el, index) => { - let depth = parseInt(el.getAttribute("data-depth")); - let rect = el.getBoundingClientRect(); // öğenin konumunu al - - // Eğer öğe ekranın alt kısmına doğru geliyorsa - if (rect.bottom <= windowHeight) { - let opacity = Math.max(1 - (depth * 0.110), 0); - let translateY = depth * 1; // Sabit boşluk sağlama - let scale = 1 - (depth * 0.05); - el.style.opacity = opacity; - el.style.transform = `translate(-50%, ${translateY * 9.98}px) scale(${scale})`; - } else { - // Eğer öğe ekranın alt kısmına gelmediyse, eski haline dön - el.style.opacity = 0; - el.style.transform = `translate(-50%, 0) scale(1)`; - } - }); - }); - - -/*SAVE DATA AND RUN OFFLINE*/ -if ("serviceWorker" in navigator) { - navigator.serviceWorker - .register("/service-worker.js") - .then(() => console.log("Service Worker başarıyla yüklendi.")) - .catch((err) => console.log("Service Worker yüklenemedi:", err)); - } - - -/*TO-TOP BUTTON REVEALING*/ -const toTop = document.querySelector(".to-top"); -const trandingSlideContent = document.querySelector(".tranding-slide-content"); - -window.addEventListener("scroll", () => { - const trandingSlideRect = trandingSlideContent.getBoundingClientRect(); - - // Divin ortasını hesapla - const trandingSlideMiddle = trandingSlideRect.top + (trandingSlideRect.height / 2); - - // Sayfanın kaydırma yüksekliği - const scrollPosition = window.scrollY + window.innerHeight; - - // Eğer scroll pozisyonu divin ortasını geçerse butonu göster - if (scrollPosition > trandingSlideMiddle + window.scrollY) { - toTop.classList.add("active"); - } else { - toTop.classList.remove("active"); - } -}); - -/*when the window is reloading or loading*/ -window.addEventListener('load', function() { - setTimeout(() => { - window.scrollTo({ top: 0, behavior: 'smooth' }); - }, 50); - - const sidebarCheckbox = document.getElementById('sidebar-active'); - if (sidebarCheckbox && sidebarCheckbox.checked) { - sidebarCheckbox.checked = false; - } -}); - - -/*LOADING SCREEN*/ -gsap.fromTo( - ".loading_page", - { opacity: 1 }, - { - opacity: 0, - display: "none", - duration: 1.5, - delay: 3.5, - } -); - -gsap.fromTo( - ".logo_name", - { - y: 50, - opacity: 0, - }, - { - y: 0, - opacity: 1, - duration: 2, - delay: 0.5, - } -); - - -/*DARK MODE*/ -const options = { - bottom: '32px', // default: '32px' - right: 'unset', // default: '32px' - left: '15px', // default: 'unset' - time: '0.5s', // default: '0.3s' - mixColor: '#fff', // default: '#fff' - backgroundColor: '', // default: '#fff' - buttonColorDark: '#100f2c', // default: '#100f2c' - buttonColorLight: '#fff', // default: '#fff' - saveInCookies: true, // default: true, - label: '◐', // default: '' - autoMatchOsTheme: true // default: true -} - - -/*GALLERY IMAGES*/ -var TrandingSlider = new Swiper('.tranding-slider', { - effect: 'coverflow', - grabCursor: true, - centeredSlides: true, - loop: true, - slidesPerView: 'auto', - coverflowEffect: { - rotate: 0, - stretch: 0, - depth: 100, - modifier: 2.5, - }, - pagination: { - el: '.swiper-pagination', - clickable: true, - }, - navigation: { - nextEl: '.swiper-button-next', - prevEl: '.swiper-button-prev', - } -}); - - -/*SMOOTH SCROLL FUNCTION*/ -document.addEventListener("DOMContentLoaded", function() { - // Tüm anchor linklerini seç - const links = document.querySelectorAll('a[href^="#"]'); - - // Tıklama olaylarını dinle - links.forEach(link => { - link.addEventListener('click', function(event) { - event.preventDefault(); // Varsayılan davranışı engelle (URL değişimi) - - // Hedef elementi seç - const targetId = this.getAttribute('href').substring(1); - const targetElement = document.getElementById(targetId); - - if (targetElement) { - // Smooth scroll işlemini gerçekleştir - window.scrollTo({ - top: targetElement.offsetTop, - behavior: 'smooth' - }); - } - }); - }); -}); - - -/*ANIMATED TEXT*/ -const dynamicText = document.querySelector(".h1 span"); -const words = ["Developer", "Athlete", "Musician"]; - -// Variables to track the position and deletion status of the word -let wordIndex = 0; -let charIndex = 0; -let isDeleting = false; - -const typeEffect = () => { - const currentWord = words[wordIndex]; - const currentChar = currentWord.substring(0, charIndex); - dynamicText.textContent = currentChar; - dynamicText.classList.add("stop-blinking"); - - if (!isDeleting && charIndex < currentWord.length) { - // If condition is true, type the next character - charIndex++; - setTimeout(typeEffect, 200); - } else if (isDeleting && charIndex > 0) { - // If condition is true, remove the previous character - charIndex--; - setTimeout(typeEffect, 100); - } else { - // If word is deleted then switch to the next word - isDeleting = !isDeleting; - dynamicText.classList.remove("stop-blinking"); - wordIndex = !isDeleting ? (wordIndex + 1) % words.length : wordIndex; - setTimeout(typeEffect, 1200); - } -} - -typeEffect(); - -const coords = { x: 0, y: 0 }; -const circles = document.querySelectorAll(".circle"); - -window.addEventListener("mouseout", function (e) { - if (!document.body.contains(e.relatedTarget)) { - // Daireleri gizle - circles.forEach((circle) => { - circle.style.visibility = "hidden"; // veya display: none - }); - } -}); - -//When the cursor came in the page make visible the circles -window.addEventListener("mouseover", function (e) { - circles.forEach((circle) => { - circle.style.visibility = "visible"; // veya display: block - }); -}); - - -/*CURSOR*/ -const colors = [ - "#DCFFB7", - "#CBFFA9", - "#D0F5BE", - "#C3EDC0", - "#C8E4B2", - "#D9EDBF", - "#CDF2CA", - "#CDF2CA", - "#C3E5AE", - "#C7E9B0", - "#CCD6A6", - "#B3C99C", - "#A4BC92", - "#99B080", - "#789461", - "#527853", - "#4F6F52", - "#436850", - "#4F6F52", - "#294B29", - "#1A4D2E", - "#114232" -]; - -circles.forEach(function (circle, index) { - circle.x = 0; - circle.y = 0; - circle.style.backgroundColor = colors[index % colors.length]; -}); - -window.addEventListener("mousemove", function(e){ - coords.x = e.clientX; - coords.y = e.clientY; -}); - -function animateCircles() { - - let x = coords.x; - let y = coords.y; - - circles.forEach(function (circle, index) { - circle.style.left = x - 9 + "px"; - circle.style.top = y - 9 + "px"; - - circle.style.scale = (circles.length - index) / circles.length; - - circle.x = x; - circle.y = y; - - const nextCircle = circles[index + 1] || circles[0]; - x += (nextCircle.x - x) * 0.3; - y += (nextCircle.y - y) * 0.3; - }); - requestAnimationFrame(animateCircles); -} - -animateCircles(); - - -/*DISABLE COPY-PASTE*/ -const disabledKeys = ["c", "C", "x", "J", "u", "I"]; // keys that will be disabled - const showAlert = e => { - e.preventDefault(); // preventing its default behaviour - return alert("Sorry, you can't view or copy source codes this way!"); - } - document.addEventListener("contextmenu", e => { - showAlert(e); // calling showAlert() function on mouse right click - }); - document.addEventListener("keydown", e => { - // calling showAlert() function, if the pressed key matched to disabled keys - if((e.ctrlKey && disabledKeys.includes(e.key)) || e.key === "F12") { - showAlert(e); - } - });