{"id":36484,"date":"2025-12-18T20:31:23","date_gmt":"2025-12-18T17:31:23","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/"},"modified":"2025-12-18T20:31:23","modified_gmt":"2025-12-18T17:31:23","slug":"uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/","title":{"rendered":"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme"},"content":{"rendered":"<h2>Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme<\/h2>\n<p>Kullan\u0131c\u0131 deneyimini zenginle\u015ftirmek ve uygulaman\u0131za mevsimsel bir dokunu\u015f katmak ister misiniz? K\u0131\u015f aylar\u0131nda veya \u00f6zel g\u00fcnlerde uygulaman\u0131za ekleyece\u011finiz basit bir kar efekti, kullan\u0131c\u0131lar\u0131n\u0131zda ho\u015f bir s\u00fcrpriz etkisi yaratabilir. Bu teknik makalede, modern JavaScript framework&#8217;lerinin karma\u015f\u0131kl\u0131\u011f\u0131na girmeden, Stimulus.js&#8217;in sadeli\u011fi ve g\u00fcc\u00fcyle uygulaman\u0131za nas\u0131l dinamik bir kar efekti ekleyebilece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h3>Neden Uygulaman\u0131za Kar Efekti Eklemelisiniz?<\/h3>\n<p>Uygulaman\u0131za g\u00f6rsel efektler eklemek, sadece estetik bir tercih olman\u0131n \u00f6tesinde, kullan\u0131c\u0131 etkile\u015fimini ve marka alg\u0131s\u0131n\u0131 g\u00fc\u00e7lendiren \u00f6nemli bir stratejidir. Kar efekti gibi mevsimsel dokunu\u015flar, \u00f6zellikle belirli d\u00f6nemlerde uygulaman\u0131z\u0131n ruhunu yans\u0131tarak kullan\u0131c\u0131lar\u0131n\u0131zla daha derin bir ba\u011f kurman\u0131za yard\u0131mc\u0131 olabilir.<\/p>\n<h4>Kullan\u0131c\u0131 Deneyimini Zenginle\u015ftirme<\/h4>\n<p>G\u00f6rsel olarak \u00e7ekici ve dinamik bir aray\u00fcz, kullan\u0131c\u0131lar\u0131n uygulaman\u0131zda daha fazla zaman ge\u00e7irmesini sa\u011flar. Kar efekti, monoton bir aray\u00fcze ne\u015fe ve canl\u0131l\u0131k katarak kullan\u0131c\u0131lar\u0131n uygulaman\u0131zla etkile\u015fimini art\u0131rabilir. Bu t\u00fcr k\u00fc\u00e7\u00fck detaylar, kullan\u0131c\u0131lar\u0131n uygulaman\u0131z\u0131 &#8220;sevimli&#8221; veya &#8220;\u00f6zenli&#8221; bulmas\u0131na yol a\u00e7ar.<\/p>\n<h4>Mevsimsel Temay\u0131 Yakalama<\/h4>\n<p>\u00d6zellikle k\u0131\u015f tatilleri d\u00f6neminde, uygulaman\u0131zda kar efekti kullanmak, mevsimin ruhunu yakalayarak kullan\u0131c\u0131lar\u0131n\u0131za s\u0131cak bir kar\u015f\u0131lama sunar. Bu, e-ticaret siteleri i\u00e7in sat\u0131\u015flar\u0131 art\u0131rabilir, sosyal medya uygulamalar\u0131 i\u00e7in etkile\u015fimi g\u00fc\u00e7lendirebilir veya sadece bir blog sitesi i\u00e7in ho\u015f bir atmosfer yaratabilir. Mevsimsel temalar, g\u00fcncel olaylarla uyum sa\u011flayarak uygulaman\u0131z\u0131n &#8220;ya\u015fayan&#8221; bir yap\u0131ya sahip oldu\u011funu g\u00f6sterir.<\/p>\n<h4>Marka Ba\u011fl\u0131l\u0131\u011f\u0131n\u0131 Art\u0131rma<\/h4>\n<p>Uygulaman\u0131za g\u00f6sterdi\u011finiz \u00f6zen ve detaylara verdi\u011finiz \u00f6nem, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n markan\u0131za olan ba\u011fl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Kullan\u0131c\u0131lar, kendilerini \u00f6zel hissettiren ve beklentilerinin \u00f6tesine ge\u00e7en deneyimler sunan markalar\u0131 tercih etme e\u011filimindedir. Basit ama etkili bir kar efekti, markan\u0131z\u0131n kullan\u0131c\u0131 deneyimine ne kadar de\u011fer verdi\u011fini g\u00f6steren k\u00fc\u00e7\u00fck ama g\u00fc\u00e7l\u00fc bir mesaj olabilir.<\/p>\n<h3>Stimulus Nedir ve Neden Kar Efekti \u0130\u00e7in \u0130dealdir?<\/h3>\n<p>Stimulus, HTML&#8217;inize davran\u0131\u015f eklemek i\u00e7in tasarlanm\u0131\u015f hafif bir JavaScript framework&#8217;\u00fcd\u00fcr. Modern web uygulamalar\u0131nda s\u0131kl\u0131kla kar\u015f\u0131la\u015f\u0131lan karma\u015f\u0131k JavaScript k\u00fct\u00fcphanelerinin aksine, Stimulus mevcut HTML&#8217;inizi g\u00fc\u00e7lendirmeye odaklan\u0131r ve &#8220;HTML&#8217;iniz zaten oradad\u0131r&#8221; felsefesini benimser.<\/p>\n<h4>Stimulus&#8217;un Temel Prensipleri<\/h4>\n<p>Stimulus, \u00fc\u00e7 temel kavram \u00fczerine kuruludur: <strong>Controllers (Kontrolc\u00fcler)<\/strong>, <strong>Targets (Hedefler)<\/strong> ve <strong>Actions (Eylemler)<\/strong>. Kontrolc\u00fcler, belirli bir HTML b\u00f6l\u00fcm\u00fcn\u00fc y\u00f6neten JavaScript s\u0131n\u0131flar\u0131d\u0131r. Hedefler, kontrolc\u00fcn\u00fcn i\u00e7inde eri\u015fmek istedi\u011finiz HTML elementleridir. Eylemler ise, kullan\u0131c\u0131 etkile\u015fimlerine (t\u0131klama, fare \u00fczerinde gezme vb.) yan\u0131t veren metotlard\u0131r. Bu basit yap\u0131, Stimulus&#8217;u \u00f6\u011frenmesi ve kullanmas\u0131 son derece kolay hale getirir.<\/p>\n<h4>Performans ve Hafiflik<\/h4>\n<p>Stimulus, minimal boyutlu ve h\u0131zl\u0131 bir k\u00fct\u00fcphanedir. Bu sayede, uygulaman\u0131z\u0131n y\u00fcklenme s\u00fcresini veya \u00e7al\u0131\u015fma performans\u0131n\u0131 olumsuz etkilemez. Kar efekti gibi g\u00f6rsel a\u00e7\u0131dan yo\u011fun olabilecek bir \u00f6zellik eklerken, performans\u0131n korunmas\u0131 kritik \u00f6neme sahiptir. Stimulus&#8217;un hafif yap\u0131s\u0131, bu t\u00fcr dinamik efektleri uygulaman\u0131za sorunsuz bir \u015fekilde entegre etmenizi sa\u011flar.<\/p>\n<h4>Mevcut Projelere Kolay Entegrasyon<\/h4>\n<p>Stimulus, mevcut bir projeye eklemek i\u00e7in tasarlanm\u0131\u015ft\u0131r. \u00c7o\u011fu modern web projesi (\u00f6zellikle Rails projeleri), Stimulus&#8217;u varsay\u0131lan olarak destekler veya kolayca entegre edilebilir bir yap\u0131ya sahiptir. Bu, uygulaman\u0131z\u0131n mevcut mimarisini de\u011fi\u015ftirmeden, h\u0131zl\u0131ca kar efekti gibi yeni \u00f6zellikler ekleyebilece\u011finiz anlam\u0131na gelir.<\/p>\n<h3>Kar Efekti \u0130\u00e7in Temel HTML Yap\u0131s\u0131 ve CSS Haz\u0131rl\u0131\u011f\u0131<\/h3>\n<p>Kar efektini uygulamak i\u00e7in \u00f6ncelikle basit bir HTML yap\u0131s\u0131na ve bu yap\u0131ya can verecek temel CSS stillerine ihtiyac\u0131m\u0131z var. Amac\u0131m\u0131z, her bir kar tanesini temsil eden k\u00fc\u00e7\u00fck HTML elementleri olu\u015fturmak ve bunlar\u0131 CSS ile hareketlendirmektir.<\/p>\n<h4>Kar Tanesi Elementleri \u0130\u00e7in Kapsay\u0131c\u0131<\/h4>\n<p>T\u00fcm kar tanelerinin i\u00e7inde yer alaca\u011f\u0131 bir kapsay\u0131c\u0131 elemente ihtiyac\u0131m\u0131z var. Bu kapsay\u0131c\u0131, kar efektinin uygulaman\u0131z\u0131n hangi b\u00f6l\u00fcm\u00fcnde g\u00f6r\u00fcnece\u011fini kontrol etmemizi sa\u011flayacak ve Stimulus kontrolc\u00fcm\u00fcz i\u00e7in ana hedef olacakt\u0131r.<\/p>\n<pre><code class=\"language-html\"><div data-controller=\"snow\" data-snow-max-flakes-value=\"50\" data-snow-speed-value=\"1\">\n  <!-- Kar taneleri buraya JavaScript taraf\u0131ndan eklenecek -->\n<\/div><\/pre>\n<p><\/code><br \/>\nBurada <code>data-controller=\"snow\"<\/code> ile Stimulus kontrolc\u00fcm\u00fcz\u00fc ba\u011fl\u0131yoruz. <code>data-snow-max-flakes-value<\/code> ve <code>data-snow-speed-value<\/code> gibi <code>data-<\/code> nitelikleri, kontrolc\u00fcm\u00fcze dinamik parametreler ge\u00e7irmemizi sa\u011flar.<\/p>\n<h4>Kar Taneleri \u0130\u00e7in Temel CSS Stilleri<\/h4>\n<p>Her bir kar tanesinin nas\u0131l g\u00f6r\u00fcnece\u011fini ve nerede duraca\u011f\u0131n\u0131 belirlemek i\u00e7in temel CSS stilleri tan\u0131mlayaca\u011f\u0131z. Kar taneleri genellikle k\u00fc\u00e7\u00fck, beyaz ve yuvarlak veya kare \u015fekilli olurlar.<\/p>\n<pre><code class=\"language-css\">.snow-container {\n  position: fixed; \/* Ekran\u0131n tamam\u0131n\u0131 kaplamas\u0131 i\u00e7in *\/\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  pointer-events: none; \/* Kar taneleri t\u0131klanabilir olmamal\u0131 *\/\n  overflow: hidden; \/* Kar tanelerinin d\u0131\u015far\u0131 ta\u015fmas\u0131n\u0131 engelle *\/\n  z-index: 9999; \/* Di\u011fer elementlerin \u00fczerinde g\u00f6r\u00fcnmesi i\u00e7in *\/\n}\n\n.snowflake {\n  position: absolute;\n  background: #fff;\n  border-radius: 50%; \/* Yuvarlak kar taneleri i\u00e7in *\/\n  opacity: 0.8;\n  animation-name: fall;\n  animation-timing-function: linear;\n  animation-iteration-count: infinite;\n  pointer-events: none;\n  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.5)); \/* Hafif parlama efekti *\/\n}<\/pre>\n<p><\/code><br \/>\n<code>position: fixed<\/code> ve <code>pointer-events: none<\/code> gibi \u00f6zellikler, kar efektinin uygulaman\u0131n di\u011fer elementleriyle \u00e7ak\u0131\u015fmadan sorunsuz bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>Animasyon \u0130\u00e7in CSS Keyframes<\/h4>\n<p>Kar tanelerinin yukar\u0131dan a\u015fa\u011f\u0131ya do\u011fru d\u00fc\u015fmesini sa\u011flamak i\u00e7in CSS <code>@keyframes<\/code> kural\u0131n\u0131 kullanaca\u011f\u0131z. Bu, her bir kar tanesinin kendi animasyon d\u00f6ng\u00fcs\u00fcne sahip olmas\u0131n\u0131 sa\u011flayacak ve Stimulus'un sadece elementleri olu\u015fturup konumland\u0131rmas\u0131 yeterli olacakt\u0131r.<\/p>\n<pre><code class=\"language-css\">@keyframes fall {\n  0% {\n    transform: translateY(-100%) translateX(0);\n    opacity: 0;\n  }\n  5% {\n    opacity: 0.8;\n  }\n  95% {\n    opacity: 0.8;\n  }\n  100% {\n    transform: translateY(100vh) translateX(var(--end-x, 0)); \/* 100vh ekran y\u00fcksekli\u011fi *\/\n    opacity: 0;\n  }\n}<\/pre>\n<p><\/code><br \/>\n<code>--end-x<\/code> gibi CSS de\u011fi\u015fkenleri kullanarak her kar tanesi i\u00e7in hafif yatay hareket varyasyonlar\u0131 ekleyebiliriz, bu da efekti daha do\u011fal g\u00f6sterir. <code>100vh<\/code> de\u011feri, kar tanesinin ekran\u0131n en \u00fcst\u00fcnden en alt\u0131na d\u00fc\u015fmesini sa\u011flar.<\/p>\n<h3>Stimulus Controller Olu\u015fturma: Kar Efekti Mant\u0131\u011f\u0131<\/h3>\n<p>Stimulus kontrolc\u00fcm\u00fcz, kar tanelerini dinamik olarak olu\u015fturacak, konumland\u0131racak ve animasyonlar\u0131n\u0131 y\u00f6netecek JavaScript mant\u0131\u011f\u0131n\u0131 i\u00e7erecektir.<\/p>\n<h4>Controller Dosyas\u0131n\u0131n Yap\u0131s\u0131<\/h4>\n<p>\u00d6ncelikle <code>snow_controller.js<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-javascript\">\/\/ app\/javascript\/controllers\/snow_controller.js\nimport { Controller } from \"@hotwired\/stimulus\";\n\nexport default class extends Controller {\n  static values = {\n    maxFlakes: { type: Number, default: 50 },\n    speed: { type: Number, default: 1 }, \/\/ H\u0131z \u00e7arpan\u0131\n  };\n\n  connect() {\n    this.flakes = [];\n    this.createSnowContainer();\n    this.startSnowfall();\n    window.addEventListener(\"resize\", this.handleResize.bind(this));\n  }\n\n  disconnect() {\n    this.stopSnowfall();\n    this.snowContainer.remove();\n    window.removeEventListener(\"resize\", this.handleResize.bind(this));\n  }\n\n  createSnowContainer() {\n    this.snowContainer = document.createElement(\"div\");\n    this.snowContainer.classList.add(\"snow-container\");\n    this.element.appendChild(this.snowContainer);\n  }\n\n  startSnowfall() {\n    this.interval = setInterval(() => {\n      if (this.flakes.length < this.maxFlakesValue) {\n        this.createSnowflake();\n      }\n      this.cleanUpFlakes();\n    }, 200); \/\/ Her 200ms'de bir yeni kar tanesi olu\u015fturmaya \u00e7al\u0131\u015f\n  }\n\n  stopSnowfall() {\n    clearInterval(this.interval);\n  }\n\n  createSnowflake() {\n    const snowflake = document.createElement(\"div\");\n    snowflake.classList.add(\"snowflake\");\n\n    const size = Math.random() * 5 + 5; \/\/ 5px ile 10px aras\u0131 boyut\n    snowflake.style.width = <code>${size}px<\/code>;\n    snowflake.style.height = <code>${size}px<\/code>;\n\n    const startX = Math.random() * window.innerWidth;\n    snowflake.style.left = <code>${startX}px<\/code>;\n\n    const duration = (Math.random() * 10 + 5) \/ this.speedValue; \/\/ 5-15 saniye aras\u0131 d\u00fc\u015f\u00fc\u015f s\u00fcresi, h\u0131z \u00e7arpan\u0131yla ayarla\n    snowflake.style.animationDuration = <code>${duration}s<\/code>;\n    snowflake.style.animationDelay = <code>-${Math.random() * duration}s<\/code>; \/\/ Rastgele ba\u015flang\u0131\u00e7 gecikmesi\n\n    \/\/ Hafif yatay hareket i\u00e7in CSS de\u011fi\u015fkeni\n    const endXOffset = (Math.random() - 0.5) * 200; \/\/ -100px ile 100px aras\u0131 yatay kayma\n    snowflake.style.setProperty('--end-x', <code>${endXOffset}px<\/code>);\n\n    this.snowContainer.appendChild(snowflake);\n    this.flakes.push(snowflake);\n  }\n\n  cleanUpFlakes() {\n    this.flakes = this.flakes.filter(flake => {\n      const rect = flake.getBoundingClientRect();\n      if (rect.top > window.innerHeight) {\n        flake.remove();\n        return false;\n      }\n      return true;\n    });\n  }\n\n  handleResize() {\n    \/\/ Ekran boyutu de\u011fi\u015fti\u011finde kar tanelerini yeniden konumland\u0131rmak veya temizlemek gerekebilir.\n    \/\/ Basit bir \u00e7\u00f6z\u00fcm olarak, t\u00fcm kar tanelerini temizleyip yeniden ba\u015flatabiliriz.\n    this.stopSnowfall();\n    this.flakes.forEach(flake => flake.remove());\n    this.flakes = [];\n    this.startSnowfall();\n  }\n}<\/pre>\n<p><\/code><\/p>\n<h4>Kar Tanesi Olu\u015fturma Fonksiyonu (<code>createSnowflake<\/code>)<\/h4>\n<p>Bu fonksiyon, her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda yeni bir <code>div<\/code> elementi olu\u015fturacak, ona <code>snowflake<\/code> s\u0131n\u0131f\u0131n\u0131 atayacak ve rastgele boyut, ba\u015flang\u0131\u00e7 konumu ve animasyon s\u00fcresi belirleyecektir. Bu rastgelelik, kar efektinin daha do\u011fal g\u00f6r\u00fcnmesini sa\u011flar.<\/p>\n<h4>Kar Tanesi Animasyonunu Y\u00f6netme (<code>startSnowfall<\/code>, <code>cleanUpFlakes<\/code>)<\/h4>\n<p><code>startSnowfall<\/code> metodu, <code>setInterval<\/code> kullanarak d\u00fczenli aral\u0131klarla yeni kar taneleri olu\u015fturur ve eski, ekran d\u0131\u015f\u0131na \u00e7\u0131kan kar tanelerini temizler. <code>cleanUpFlakes<\/code> ise, g\u00f6r\u00fcn\u00fcr alandan \u00e7\u0131kan kar tanelerini DOM'dan kald\u0131rarak performans\u0131 korur ve bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nler.<\/p>\n<h4>Dinamik Kar Yo\u011funlu\u011fu ve H\u0131z\u0131<\/h4>\n<p><code>static values<\/code> \u00f6zelli\u011fi sayesinde <code>maxFlakes<\/code> ve <code>speed<\/code> gibi parametreleri HTML \u00fczerinden kontrol edebiliriz. Bu, uygulaman\u0131n farkl\u0131 b\u00f6l\u00fcmlerinde veya farkl\u0131 mevsimlerde kar efektinin yo\u011funlu\u011funu ve h\u0131z\u0131n\u0131 kolayca ayarlamam\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Stimulus Controller'\u0131 HTML'e Entegre Etme<\/h3>\n<p>Stimulus kontrolc\u00fcs\u00fcn\u00fc olu\u015fturduktan sonra, onu HTML'e ba\u011flamak olduk\u00e7a basittir.<\/p>\n<h4><code>data-controller<\/code> ve <code>data-target<\/code> Kullan\u0131m\u0131<\/h4>\n<p>Kar efektinin g\u00f6r\u00fcnmesini istedi\u011finiz ana kapsay\u0131c\u0131ya <code>data-controller=\"snow\"<\/code> niteli\u011fini eklemeniz yeterlidir. Kontrolc\u00fcm\u00fcz, bu elementin i\u00e7indeki <code>snow-container<\/code> div'ini otomatik olarak olu\u015fturacakt\u0131r.<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html lang=\"tr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Kar Efekti Uygulamas\u0131<\/title>\n    <style>\n        \/* Yukar\u0131daki CSS kodlar\u0131n\u0131 buraya yap\u0131\u015ft\u0131r\u0131n *\/\n        body {\n            font-family: sans-serif;\n            margin: 0;\n            padding: 0;\n            min-height: 100vh;\n            background-color: #2c3e50; \/* Koyu arka plan kar\u0131 daha belirgin yapar *\/\n            color: #ecf0f1;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n        }\n        h1 {\n            z-index: 10000; \/* Ba\u015fl\u0131\u011f\u0131n kar\u0131n \u00fczerinde g\u00f6r\u00fcnmesi i\u00e7in *\/\n        }\n    <\/style>\n    <!-- Stimulus ve kontrolc\u00fcy\u00fc y\u00fckleyin -->\n    <!-- Bu k\u0131s\u0131m projenizin kurulumuna g\u00f6re de\u011fi\u015febilir (\u00f6rne\u011fin Webpacker\/Vite) -->\n    <script type=\"module\">\n        import { Application, Controller } from \"@hotwired\/stimulus\";\n        window.Stimulus = Application.start();\n\n        \/\/ snow_controller.js i\u00e7eri\u011fini buraya yap\u0131\u015ft\u0131r\u0131n veya import edin\n        \/\/ \u00d6rnek olarak do\u011frudan yap\u0131\u015ft\u0131ral\u0131m:\n        class SnowController extends Controller {\n          static values = {\n            maxFlakes: { type: Number, default: 50 },\n            speed: { type: Number, default: 1 },\n          };\n\n          connect() {\n            this.flakes = [];\n            this.createSnowContainer();\n            this.startSnowfall();\n            window.addEventListener(\"resize\", this.handleResize.bind(this));\n          }\n\n          disconnect() {\n            this.stopSnowfall();\n            if (this.snowContainer && this.snowContainer.parentNode) {\n                this.snowContainer.remove();\n            }\n            window.removeEventListener(\"resize\", this.handleResize.bind(this));\n          }\n\n          createSnowContainer() {\n            this.snowContainer = document.createElement(\"div\");\n            this.snowContainer.classList.add(\"snow-container\");\n            this.element.appendChild(this.snowContainer);\n          }\n\n          startSnowfall() {\n            this.interval = setInterval(() => {\n              if (this.flakes.length < this.maxFlakesValue) {\n                this.createSnowflake();\n              }\n              this.cleanUpFlakes();\n            }, 200);\n          }\n\n          stopSnowfall() {\n            clearInterval(this.interval);\n          }\n\n          createSnowflake() {\n            const snowflake = document.createElement(\"div\");\n            snowflake.classList.add(\"snowflake\");\n\n            const size = Math.random() * 5 + 5;\n            snowflake.style.width = <code>${size}px<\/code>;\n            snowflake.style.height = <code>${size}px<\/code>;\n\n            const startX = Math.random() * window.innerWidth;\n            snowflake.style.left = <code>${startX}px<\/code>;\n\n            const duration = (Math.random() * 10 + 5) \/ this.speedValue;\n            snowflake.style.animationDuration = <code>${duration}s<\/code>;\n            snowflake.style.animationDelay = <code>-${Math.random() * duration}s<\/code>;\n\n            const endXOffset = (Math.random() - 0.5) * 200;\n            snowflake.style.setProperty('--end-x', <code>${endXOffset}px<\/code>);\n\n            this.snowContainer.appendChild(snowflake);\n            this.flakes.push(snowflake);\n          }\n\n          cleanUpFlakes() {\n            this.flakes = this.flakes.filter(flake => {\n              const rect = flake.getBoundingClientRect();\n              if (rect.top > window.innerHeight) {\n                flake.remove();\n                return false;\n              }\n              return true;\n            });\n          }\n\n          handleResize() {\n            this.stopSnowfall();\n            this.flakes.forEach(flake => flake.remove());\n            this.flakes = [];\n            this.startSnowfall();\n          }\n        }\n        Stimulus.register(\"snow\", SnowController);\n    <\/script>\n<\/head>\n<body>\n    <div data-controller=\"snow\" data-snow-max-flakes-value=\"70\" data-snow-speed-value=\"1.2\">\n        <h1>Uygulaman\u0131za Ho\u015f Geldiniz!<\/h1>\n        <p>Stimulus ile eklenen kar efektini ke\u015ffedin.<\/p>\n    <\/div>\n<\/body>\n<\/html><\/pre>\n<p><\/code><\/p>\n<h4>Dinamik Parametrelerin Ge\u00e7irilmesi<\/h4>\n<p>Yukar\u0131daki \u00f6rnekte g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>data-snow-max-flakes-value<\/code> ve <code>data-snow-speed-value<\/code> nitelikleri ile kar tanesi say\u0131s\u0131n\u0131 ve d\u00fc\u015f\u00fc\u015f h\u0131z\u0131n\u0131 do\u011frudan HTML \u00fczerinden ayarlayabilirsiniz. Bu, farkl\u0131 sayfalarda veya farkl\u0131 kullan\u0131c\u0131 segmentleri i\u00e7in farkl\u0131 efektler sunman\u0131za olanak tan\u0131r.<\/p>\n<h4>Uygulamay\u0131 \u00c7al\u0131\u015ft\u0131rma ve Test Etme<\/h4>\n<p>HTML dosyan\u0131z\u0131 bir taray\u0131c\u0131da a\u00e7t\u0131\u011f\u0131n\u0131zda veya projenizi \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, uygulaman\u0131z\u0131n \u00fczerinde kar tanelerinin nazik\u00e7e d\u00fc\u015ft\u00fc\u011f\u00fcn\u00fc g\u00f6rmelisiniz. Farkl\u0131 <code>max-flakes<\/code> ve <code>speed<\/code> de\u011ferleriyle oynayarak efektin nas\u0131l de\u011fi\u015fti\u011fini g\u00f6zlemleyebilirsiniz.<\/p>\n<h3>Geli\u015fmi\u015f \u00d6zellikler ve Optimizasyonlar<\/h3>\n<p>Temel kar efektini uygulad\u0131ktan sonra, kullan\u0131c\u0131 deneyimini daha da iyile\u015ftirmek ve performans\u0131 optimize etmek i\u00e7in baz\u0131 geli\u015fmi\u015f \u00f6zellikler ekleyebiliriz.<\/p>\n<h4>Performans \u0130yile\u015ftirmeleri (Debounce, Throttle)<\/h4>\n<p><code>handleResize<\/code> gibi s\u0131k tetiklenebilecek olaylarda, performans\u0131 art\u0131rmak i\u00e7in <code>debounce<\/code> veya <code>throttle<\/code> tekniklerini kullanmak faydal\u0131 olabilir. Bu, fonksiyonun belirli bir zaman aral\u0131\u011f\u0131nda sadece bir kez \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayarak gereksiz yeniden \u00e7izimleri veya hesaplamalar\u0131 \u00f6nler.<\/p>\n<h4>Kullan\u0131c\u0131 Tercihlerine G\u00f6re Kar Efekti<\/h4>\n<p>Kullan\u0131c\u0131lar\u0131n kar efektini a\u00e7\u0131p kapatabilmesi i\u00e7in bir ayar sunmak, eri\u015filebilirlik ve kullan\u0131c\u0131 kontrol\u00fc a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Bu, <code>localStorage<\/code> kullanarak kullan\u0131c\u0131n\u0131n tercihini kaydetmenizi ve sayfa y\u00fcklendi\u011finde bu tercihe g\u00f6re efekti ba\u015flat\u0131p ba\u015flatmaman\u0131z\u0131 sa\u011flayabilir.<\/p>\n<h4>Farkl\u0131 Kar Tanesi Boyutlar\u0131 ve \u015eekilleri<\/h4>\n<p>Daha ger\u00e7ek\u00e7i bir etki i\u00e7in, kar tanelerinin boyutlar\u0131n\u0131 ve hatta \u015fekillerini \u00e7e\u015fitlendirebilirsiniz. \u00d6rne\u011fin, baz\u0131 kar taneleri daha b\u00fcy\u00fck ve daha yava\u015f d\u00fc\u015ferken, di\u011ferleri daha k\u00fc\u00e7\u00fck ve h\u0131zl\u0131 olabilir. Farkl\u0131 <code>border-radius<\/code> de\u011ferleri veya hatta SVG ikonlar\u0131 kullanarak farkl\u0131 \u015fekillerde kar taneleri olu\u015fturabilirsiniz.<\/p>\n<h4>Efekti Durdurma\/Ba\u015flatma Butonu<\/h4>\n<p>Uygulaman\u0131za bir buton ekleyerek kullan\u0131c\u0131lar\u0131n kar efektini istedikleri zaman durdurup ba\u015flatmalar\u0131na olanak tan\u0131yabilirsiniz. Bu, Stimulus'un <code>data-action<\/code> \u00f6zelli\u011fi ile kolayca yap\u0131labilir:<\/p>\n<pre><code class=\"language-html\"><button data-action=\"snow#toggleSnowfall\">Kar Efektini A\u00e7\/Kapat<\/button><\/pre>\n<p><\/code><br \/>\nVe kontrolc\u00fcn\u00fcze <code>toggleSnowfall<\/code> metodunu eklemeniz yeterlidir.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Kar efekti gibi dinamik g\u00f6rsel \u00f6\u011feler eklerken baz\u0131 yayg\u0131n sorunlarla kar\u015f\u0131la\u015fabilirsiniz. \u0130\u015fte bunlardan baz\u0131lar\u0131 ve olas\u0131 \u00e7\u00f6z\u00fcmleri:<\/p>\n<h4>Performans Sorunlar\u0131<\/h4>\n<p>*   <strong>\u00c7ok Fazla Kar Tanesi:<\/strong> <code>maxFlakesValue<\/code> de\u011ferini \u00e7ok y\u00fcksek ayarlamak, \u00f6zellikle daha eski veya d\u00fc\u015f\u00fck performansl\u0131 cihazlarda taray\u0131c\u0131n\u0131n yava\u015flamas\u0131na neden olabilir. Optimum bir denge bulmak i\u00e7in farkl\u0131 de\u011ferleri test edin.<br \/>\n*   <strong>Karma\u015f\u0131k CSS Animasyonlar\u0131:<\/strong> <code>filter<\/code> veya <code>box-shadow<\/code> gibi performans maliyeti y\u00fcksek CSS \u00f6zellikleri a\u015f\u0131r\u0131 kullan\u0131ld\u0131\u011f\u0131nda yava\u015flamaya neden olabilir. Gerekmedik\u00e7e bu t\u00fcr \u00f6zellikleri s\u0131n\u0131rl\u0131 tutun.<br \/>\n*   <strong>Gereksiz DOM Manip\u00fclasyonu:<\/strong> <code>cleanUpFlakes<\/code> gibi fonksiyonlarla ekran d\u0131\u015f\u0131na \u00e7\u0131kan elementleri d\u00fczenli olarak DOM'dan kald\u0131rd\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<h4>Kar Tanelerinin G\u00f6r\u00fcnmeme Problemi<\/h4>\n<p>*   <strong>Z-index \u00c7ak\u0131\u015fmalar\u0131:<\/strong> Kar tanelerinin <code>z-index<\/code> de\u011ferinin (<code>9999<\/code> gibi y\u00fcksek bir de\u011fer) di\u011fer t\u00fcm sayfa elementlerinden daha y\u00fcksek oldu\u011fundan emin olun.<br \/>\n*   <strong>CSS Konumland\u0131rma:<\/strong> <code>position: fixed<\/code> veya <code>position: absolute<\/code> do\u011fru ayarlanmam\u0131\u015fsa kar taneleri beklenen yerde g\u00f6r\u00fcnmeyebilir. <code>top: 0; left: 0; width: 100%; height: 100%;<\/code> ayarlar\u0131n\u0131n <code>snow-container<\/code> \u00fczerinde oldu\u011fundan emin olun.<br \/>\n*   <strong>Renk \u00c7ak\u0131\u015fmas\u0131:<\/strong> Kar tanelerinin rengi (genellikle beyaz) arka plan rengiyle ayn\u0131ysa g\u00f6r\u00fcnmeyebilir. Kontrast\u0131 y\u00fcksek bir arka plan kullan\u0131n veya kar tanelerinin rengini de\u011fi\u015ftirin.<\/p>\n<h4>Mobil Cihaz Uyumlulu\u011fu<\/h4>\n<p>*   <strong>Performans:<\/strong> Mobil cihazlar genellikle daha s\u0131n\u0131rl\u0131 i\u015flem g\u00fcc\u00fcne sahiptir. <code>maxFlakesValue<\/code> ve <code>speedValue<\/code> de\u011ferlerini mobil cihazlar i\u00e7in daha d\u00fc\u015f\u00fck ayarlamay\u0131 d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   <strong>Dokunmatik Etkile\u015fim:<\/strong> <code>pointer-events: none<\/code> \u00f6zelli\u011finin <code>snow-container<\/code> \u00fczerinde oldu\u011fundan emin olun, aksi takdirde kar taneleri dokunmatik olaylar\u0131 engelleyebilir.<br \/>\n*   <strong>Viewport Boyutlar\u0131:<\/strong> <code>window.innerWidth<\/code> ve <code>window.innerHeight<\/code> gibi de\u011ferler mobil cihazlarda farkl\u0131 davranabilir. <code>vh<\/code> ve <code>vw<\/code> birimlerini kullan\u0131rken dikkatli olun ve farkl\u0131 cihazlarda test edin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Stimulus ile uygulaman\u0131za kar efekti eklemek, g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi olduk\u00e7a basit ve etkili bir s\u00fcre\u00e7tir. Hafif yap\u0131s\u0131, kolay entegrasyonu ve mevcut HTML'inizi g\u00fc\u00e7lendirme felsefesi sayesinde, Stimulus bu t\u00fcr g\u00f6rsel efektleri performans kayg\u0131s\u0131 olmadan uygulaman\u0131za dahil etmek i\u00e7in m\u00fckemmel bir ara\u00e7t\u0131r. Bu makaledeki ad\u0131mlar\u0131 takip ederek, uygulaman\u0131za mevsimsel bir dokunu\u015f katabilir, kullan\u0131c\u0131 deneyimini zenginle\u015ftirebilir ve markan\u0131z\u0131n detaylara verdi\u011fi \u00f6nemi sergileyebilirsiniz. Unutmay\u0131n, k\u00fc\u00e7\u00fck dokunu\u015flar b\u00fcy\u00fck farklar yaratabilir!<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<dl>\n<dt>Kar efekti uygulamam\u0131n performans\u0131n\u0131 olumsuz etkiler mi?<\/dt>\n<dd>E\u011fer <code>maxFlakesValue<\/code> \u00e7ok y\u00fcksek ayarlanmazsa ve kar taneleri ekran d\u0131\u015f\u0131na \u00e7\u0131kt\u0131\u011f\u0131nda d\u00fczenli olarak temizlenirse, Stimulus ve CSS tabanl\u0131 bu kar efekti genellikle performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde etkilemez. Ancak, her zaman farkl\u0131 cihazlarda test etmek en iyisidir.<\/dd>\n<dt>Mobil cihazlarda kar efekti d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131r m\u0131?<\/dt>\n<dd>Evet, modern mobil taray\u0131c\u0131lar CSS animasyonlar\u0131n\u0131 ve JavaScript'i destekler. Ancak, mobil cihazlar\u0131n i\u015flem g\u00fcc\u00fc s\u0131n\u0131rl\u0131 olabilece\u011fi i\u00e7in <code>maxFlakesValue<\/code> ve <code>speedValue<\/code> gibi parametreleri mobil uyumlulu\u011fu g\u00f6z \u00f6n\u00fcnde bulundurarak ayarlaman\u0131z \u00f6nerilir. <code>pointer-events: none<\/code> \u00f6zelli\u011finin kullan\u0131lmas\u0131 da mobil cihazlarda dokunmatik etkile\u015fim sorunlar\u0131n\u0131 \u00f6nler.<\/dd>\n<dt>Stimulus yerine ba\u015fka bir JavaScript k\u00fct\u00fcphanesi kullanabilir miyim?<\/dt>\n<dd>Elbette. Bu t\u00fcr bir kar efekti, vanilla JavaScript, React, Vue veya ba\u015fka herhangi bir k\u00fct\u00fcphane ile de olu\u015fturulabilir. Stimulus, \u00f6zellikle mevcut HTML'inizi art\u0131ml\u0131 olarak geli\u015ftirmek ve basit, do\u011frudan etkile\u015fimler eklemek i\u00e7in idealdir.<\/dd>\n<dt>Kar efekti ne kadar s\u00fcreyle aktif kalmal\u0131?<\/dt>\n<dd>Bu, uygulaman\u0131z\u0131n do\u011fas\u0131na ve mevsimsel ba\u011flama ba\u011fl\u0131d\u0131r. Genellikle k\u0131\u015f aylar\u0131nda veya tatil d\u00f6nemlerinde aktif tutulur. Kullan\u0131c\u0131lara efekti a\u00e7ma\/kapatma se\u00e7ene\u011fi sunmak, en esnek ve kullan\u0131c\u0131 dostu yakla\u015f\u0131md\u0131r.<\/dd>\n<dt>Kar tanelerinin rengini veya \u015feklini de\u011fi\u015ftirebilir miyim?<\/dt>\n<dd>Evet, <code>snowflake<\/code> s\u0131n\u0131f\u0131n\u0131n CSS stillerini (<code>background<\/code>, <code>border-radius<\/code> vb.) de\u011fi\u015ftirerek kar tanelerinin rengini ve \u015feklini kolayca \u00f6zelle\u015ftirebilirsiniz. Hatta farkl\u0131 kar taneleri i\u00e7in farkl\u0131 s\u0131n\u0131flar veya inline stiller atayarak \u00e7e\u015fitlilik sa\u011flayabilirsiniz.<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"Stimulus ile eklenen kar efektini ke\u015ffedin.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-36484","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme\" \/>\n<meta property=\"og:description\" content=\"Stimulus ile eklenen kar efektini ke\u015ffedin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-18T17:31:23+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme\",\"datePublished\":\"2025-12-18T17:31:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\"},\"wordCount\":2134,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\",\"name\":\"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-18T17:31:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/","og_locale":"tr_TR","og_type":"article","og_title":"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme","og_description":"Stimulus ile eklenen kar efektini ke\u015ffedin.","og_url":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-18T17:31:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme","datePublished":"2025-12-18T17:31:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/"},"wordCount":2134,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/","url":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/","name":"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-18T17:31:23+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/uygulamaniza-kis-havasi-katin-stimulus-ile-kar-efekti-ekleme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Uygulaman\u0131za K\u0131\u015f Havas\u0131 Kat\u0131n: Stimulus ile Kar Efekti Ekleme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=36484"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36484\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}