{"id":36103,"date":"2025-12-08T10:40:44","date_gmt":"2025-12-08T07:40:44","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36103"},"modified":"2025-12-08T10:40:44","modified_gmt":"2025-12-08T07:40:44","slug":"javascriptte-css-siniflarini-nasil-degistirirsiniz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/","title":{"rendered":"JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?"},"content":{"rendered":"<h2>JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?<\/h2>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131nda, dinamik ve etkile\u015fimli kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak vazge\u00e7ilmez bir ihtiya\u00e7t\u0131r. Kullan\u0131c\u0131lar\u0131n bir d\u00fc\u011fmeye t\u0131klamas\u0131yla bir men\u00fcn\u00fcn a\u00e7\u0131lmas\u0131, bir formun g\u00f6nderilmesiyle hata mesajlar\u0131n\u0131n belirmesi veya bir sayfan\u0131n kayd\u0131r\u0131lmas\u0131yla \u00f6\u011felerin stilinin de\u011fi\u015fmesi gibi senaryolar, modern web sitelerinin temelini olu\u015fturur. Bu t\u00fcr dinamik de\u011fi\u015fikliklerin \u00e7o\u011fu, JavaScript&#8217;in CSS s\u0131n\u0131flar\u0131n\u0131 manip\u00fcle etme yetene\u011fi sayesinde m\u00fcmk\u00fcn olur. JavaScript, bir HTML \u00f6\u011fesinin CSS s\u0131n\u0131flar\u0131n\u0131 ekleyebilir, kald\u0131rabilir, de\u011fi\u015ftirebilir veya kontrol edebilir, b\u00f6ylece \u00f6\u011fenin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc ve davran\u0131\u015f\u0131n\u0131 an\u0131nda etkileyebilir.<\/p>\n<p>Bu makalede, JavaScript kullanarak CSS s\u0131n\u0131flar\u0131n\u0131 nas\u0131l etkili bir \u015fekilde y\u00f6netece\u011finizi detayl\u0131 bir \u015fekilde inceleyece\u011fiz. <code>className<\/code> \u00f6zelli\u011finden <code>classList<\/code> API&#8217;sine kadar farkl\u0131 y\u00f6ntemleri, bunlar\u0131n avantajlar\u0131n\u0131, dezavantajlar\u0131n\u0131 ve pratik kullan\u0131m senaryolar\u0131n\u0131 ele alaca\u011f\u0131z. Ayr\u0131ca, bu teknikleri uygularken dikkat etmeniz gereken en iyi uygulamalar\u0131 ve yayg\u0131n hatalar\u0131 da tart\u0131\u015faca\u011f\u0131z.<\/p>\n<h3>CSS S\u0131n\u0131flar\u0131 ve JavaScript \u0130li\u015fkisi<\/h3>\n<p>CSS s\u0131n\u0131flar\u0131, HTML \u00f6\u011felerine stil kurallar\u0131n\u0131 uygulamak i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir mekanizmad\u0131r. Bir \u00f6\u011feye birden fazla s\u0131n\u0131f atanabilir ve bu s\u0131n\u0131flar, \u00f6\u011fenin renginden boyutuna, konumundan animasyonuna kadar bir\u00e7ok g\u00f6rsel \u00f6zelli\u011fi tan\u0131mlayabilir. JavaScript&#8217;in devreye girdi\u011fi nokta ise, bu s\u0131n\u0131flar\u0131 \u00e7al\u0131\u015fma zaman\u0131nda (runtime) dinamik olarak de\u011fi\u015ftirebilme yetene\u011fidir.<\/p>\n<p>Neden JavaScript ile CSS s\u0131n\u0131flar\u0131n\u0131 de\u011fi\u015ftirmeye ihtiya\u00e7 duyar\u0131z?<br \/>\n*   <strong>Kullan\u0131c\u0131 Etkile\u015fimi:<\/strong> Bir butona t\u0131kland\u0131\u011f\u0131nda, bir men\u00fcn\u00fcn a\u00e7\u0131lmas\u0131 veya kapanmas\u0131 i\u00e7in <code>active<\/code> veya <code>hidden<\/code> gibi s\u0131n\u0131flar ekleyip kald\u0131rabiliriz.<br \/>\n*   <strong>Durum Y\u00f6netimi:<\/strong> Bir form alan\u0131n\u0131n ge\u00e7erli veya ge\u00e7ersiz durumunu belirtmek i\u00e7in <code>valid<\/code> veya <code>error<\/code> s\u0131n\u0131flar\u0131 atayabiliriz.<br \/>\n*   <strong>Animasyonlar ve Ge\u00e7i\u015fler:<\/strong> Bir \u00f6\u011fenin belirli bir animasyonu veya ge\u00e7i\u015fi tetiklemesi i\u00e7in uygun s\u0131n\u0131flar\u0131 ekleyebiliriz.<br \/>\n*   <strong>Tema De\u011fi\u015fiklikleri:<\/strong> Kullan\u0131c\u0131n\u0131n tercihine g\u00f6re a\u00e7\u0131k veya koyu tema gibi farkl\u0131 g\u00f6rsel temalar\u0131 uygulamak i\u00e7in <code>light-theme<\/code> veya <code>dark-theme<\/code> s\u0131n\u0131flar\u0131n\u0131 <code><body><\/code> etiketine ekleyebiliriz.<br \/>\n*   <strong>Duyarl\u0131 Tasar\u0131m:<\/strong> Belirli ekran boyutlar\u0131nda veya cihaz t\u00fcrlerinde \u00f6\u011felerin farkl\u0131 g\u00f6r\u00fcnmesini sa\u011flamak i\u00e7in s\u0131n\u0131flar\u0131 dinamik olarak de\u011fi\u015ftirebiliriz.<\/p>\n<p>Bu dinamiklik, kullan\u0131c\u0131 deneyimini zenginle\u015ftirir ve web uygulamalar\u0131n\u0131 daha etkile\u015fimli hale getirir. \u015eimdi, bu dinamikli\u011fi sa\u011flayan temel JavaScript y\u00f6ntemlerine ge\u00e7elim.<\/p>\n<h3>Temel Y\u00f6ntemler: className ve classList<\/h3>\n<p>JavaScript&#8217;te CSS s\u0131n\u0131flar\u0131n\u0131 manip\u00fcle etmek i\u00e7in iki ana y\u00f6ntem bulunur: <code>element.className<\/code> \u00f6zelli\u011fi ve <code>element.classList<\/code> API&#8217;si. Her ikisi de farkl\u0131 yakla\u015f\u0131mlar sunar ve kullan\u0131m senaryolar\u0131na g\u00f6re tercih edilebilir.<\/p>\n<h4>element.className ile S\u0131n\u0131f Y\u00f6netimi<\/h4>\n<p><code>element.className<\/code> \u00f6zelli\u011fi, bir HTML \u00f6\u011fesinin t\u00fcm CSS s\u0131n\u0131flar\u0131n\u0131 i\u00e7eren bir dize (string) temsilidir. Bu, en eski ve en basit s\u0131n\u0131f y\u00f6netim y\u00f6ntemlerinden biridir.<\/p>\n<h5>className Kullan\u0131m\u0131<\/h5>\n<p><code>className<\/code> \u00f6zelli\u011fini kullanarak bir \u00f6\u011fenin s\u0131n\u0131flar\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in, bu \u00f6zelli\u011fe do\u011frudan yeni bir dize atars\u0131n\u0131z. Bu dize, \u00f6\u011fenin sahip olmas\u0131n\u0131 istedi\u011finiz t\u00fcm s\u0131n\u0131flar\u0131 bo\u015fluklarla ay\u0131rarak i\u00e7ermelidir.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <div id=\"myElement\" class=\"box red\"><\/div>\nconst myElement = document.getElementById('myElement');\n\n\/\/ Mevcut s\u0131n\u0131flar\u0131 alma\nconsole.log(myElement.className); \/\/ \"box red\"\n\n\/\/ S\u0131n\u0131flar\u0131 tamamen de\u011fi\u015ftirme\nmyElement.className = 'highlighted';\nconsole.log(myElement.className); \/\/ \"highlighted\"\n\/\/ Art\u0131k 'box' ve 'red' s\u0131n\u0131flar\u0131 kald\u0131r\u0131ld\u0131.\n\n\/\/ Birden fazla s\u0131n\u0131f ekleme\nmyElement.className = 'highlighted large-text';\nconsole.log(myElement.className); \/\/ \"highlighted large-text\"\n\n\/\/ S\u0131n\u0131f kald\u0131rma (bir s\u0131n\u0131f\u0131 kald\u0131rmak i\u00e7in t\u00fcm dizeyi yeniden olu\u015fturman\u0131z gerekir)\nmyElement.className = 'large-text'; \/\/ 'highlighted' s\u0131n\u0131f\u0131 kald\u0131r\u0131ld\u0131\nconsole.log(myElement.className); \/\/ \"large-text\"\n\n\/\/ Mevcut s\u0131n\u0131flara yeni bir s\u0131n\u0131f eklemek i\u00e7in\nmyElement.className += ' new-class'; \/\/ Dikkat: Ba\u015f\u0131nda bo\u015fluk b\u0131rak\u0131n!\nconsole.log(myElement.className); \/\/ \"large-text new-class\"<\/code><\/pre>\n<h5>className&#8217;in Avantajlar\u0131<\/h5>\n<p>*   <strong>Basitlik:<\/strong> Tek bir dize atamas\u0131yla s\u0131n\u0131flar\u0131 tamamen de\u011fi\u015ftirmek kolayd\u0131r.<br \/>\n*   <strong>Uyumluluk:<\/strong> \u00c7ok eski taray\u0131c\u0131larda bile sorunsuz \u00e7al\u0131\u015f\u0131r.<\/p>\n<h5>className&#8217;in Dezavantajlar\u0131<\/h5>\n<p>*   <strong>Mevcut S\u0131n\u0131flar\u0131 Ezme Riski:<\/strong> <code>className<\/code> \u00f6zelli\u011fine yeni bir de\u011fer atad\u0131\u011f\u0131n\u0131zda, \u00f6\u011fenin mevcut t\u00fcm s\u0131n\u0131flar\u0131 silinir ve yeni de\u011ferle de\u011fi\u015ftirilir. Bu, yaln\u0131zca belirli bir s\u0131n\u0131f\u0131 eklemek veya kald\u0131rmak istedi\u011finizde sorun yarat\u0131r.<br \/>\n*   <strong>Manuel Y\u00f6netim:<\/strong> Mevcut s\u0131n\u0131flar\u0131 korurken yeni bir s\u0131n\u0131f eklemek veya kald\u0131rmak i\u00e7in, \u00f6nce <code>className<\/code> dizesini okuman\u0131z, manip\u00fcle etmeniz ve sonra geri yazman\u0131z gerekir. Bu, hata yapmaya a\u00e7\u0131k ve zahmetli bir s\u00fcre\u00e7tir. \u00d6rne\u011fin, <code>myElement.className = myElement.className + ' new-class';<\/code> gibi ifadelerde bo\u015fluk y\u00f6netimi \u00f6nemlidir.<br \/>\n*   <strong>Performans:<\/strong> S\u0131n\u0131f dizesini s\u00fcrekli okuyup yazmak, \u00f6zellikle karma\u015f\u0131k senaryolarda <code>classList<\/code>&#8216;e g\u00f6re daha az verimli olabilir.<\/p>\n<p>Genel olarak, <code>className<\/code> basit, tek seferlik tam s\u0131n\u0131f de\u011fi\u015fimi veya eski taray\u0131c\u0131 uyumlulu\u011funun kritik oldu\u011fu durumlar d\u0131\u015f\u0131nda modern web geli\u015ftirmede pek tercih edilmez.<\/p>\n<h4>element.classList ile S\u0131n\u0131f Y\u00f6netimi<\/h4>\n<p><code>element.classList<\/code> API&#8217;si, JavaScript&#8217;te CSS s\u0131n\u0131flar\u0131n\u0131 y\u00f6netmek i\u00e7in modern, esnek ve \u00f6nerilen y\u00f6ntemdir. Bu API, <code>DOMTokenList<\/code> ad\u0131 verilen bir nesne d\u00f6nd\u00fcr\u00fcr ve bu nesne, s\u0131n\u0131flar\u0131 tek tek eklemek, kald\u0131rmak, a\u00e7\u0131p kapamak ve kontrol etmek i\u00e7in bir dizi kullan\u0131\u015fl\u0131 y\u00f6ntem sunar. <code>classList<\/code> ile \u00e7al\u0131\u015fmak, <code>className<\/code> ile \u00e7al\u0131\u015fmaktan \u00e7ok daha g\u00fcvenli ve okunakl\u0131d\u0131r.<\/p>\n<h5>classList&#8217;in Temel Y\u00f6ntemleri<\/h5>\n<p><code>classList<\/code> nesnesi a\u015fa\u011f\u0131daki ana y\u00f6ntemleri sa\u011flar:<\/p>\n<p>1.  <strong><code>add(className1, className2, ...)<\/code>:<\/strong> Belirtilen bir veya daha fazla s\u0131n\u0131f\u0131 \u00f6\u011feye ekler. E\u011fer s\u0131n\u0131f zaten mevcutsa, herhangi bir \u015fey yapmaz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <div id=\"myElement\" class=\"box\"><\/div>\n    const myElement = document.getElementById('myElement');\n\n    myElement.classList.add('red'); \/\/ 'red' s\u0131n\u0131f\u0131n\u0131 ekler\n    console.log(myElement.className); \/\/ \"box red\"\n\n    myElement.classList.add('large-text', 'bold'); \/\/ Birden fazla s\u0131n\u0131f ekler\n    console.log(myElement.className); \/\/ \"box red large-text bold\"<\/code><\/pre>\n<p>2.  <strong><code>remove(className1, className2, ...)<\/code>:<\/strong> Belirtilen bir veya daha fazla s\u0131n\u0131f\u0131 \u00f6\u011feden kald\u0131r\u0131r. E\u011fer s\u0131n\u0131f mevcut de\u011filse, herhangi bir hata vermez.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <div id=\"myElement\" class=\"box red large-text bold\"><\/div>\n    const myElement = document.getElementById('myElement');\n\n    myElement.classList.remove('red'); \/\/ 'red' s\u0131n\u0131f\u0131n\u0131 kald\u0131r\u0131r\n    console.log(myElement.className); \/\/ \"box large-text bold\"\n\n    myElement.classList.remove('large-text', 'bold'); \/\/ Birden fazla s\u0131n\u0131f\u0131 kald\u0131r\u0131r\n    console.log(myElement.className); \/\/ \"box\"<\/code><\/pre>\n<p>3.  <strong><code>toggle(className, force)<\/code>:<\/strong> Belirtilen s\u0131n\u0131f\u0131 \u00f6\u011feye ekler veya kald\u0131r\u0131r. E\u011fer s\u0131n\u0131f mevcutsa kald\u0131r\u0131r, mevcut de\u011filse ekler. \u0130ste\u011fe ba\u011fl\u0131 ikinci <code>force<\/code> parametresiyle bu davran\u0131\u015f\u0131 zorlayabilirsiniz:<br \/>\n    *   <code>true<\/code> ise s\u0131n\u0131f\u0131 ekler (varsa bile).<br \/>\n    *   <code>false<\/code> ise s\u0131n\u0131f\u0131 kald\u0131r\u0131r (yoksa bile).<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <div id=\"myElement\" class=\"box\"><\/div>\n    const myElement = document.getElementById('myElement');\n\n    myElement.classList.toggle('active'); \/\/ 'active' s\u0131n\u0131f\u0131 yoktu, ekledi\n    console.log(myElement.className); \/\/ \"box active\"\n\n    myElement.classList.toggle('active'); \/\/ 'active' s\u0131n\u0131f\u0131 vard\u0131, kald\u0131rd\u0131\n    console.log(myElement.className); \/\/ \"box\"\n\n    myElement.classList.toggle('active', true); \/\/ 'active' s\u0131n\u0131f\u0131 yoktu, ekledi (force: true)\n    console.log(myElement.className); \/\/ \"box active\"\n\n    myElement.classList.toggle('active', false); \/\/ 'active' s\u0131n\u0131f\u0131 vard\u0131, kald\u0131rd\u0131 (force: false)\n    console.log(myElement.className); \/\/ \"box\"<\/code><\/pre>\n<p>    <code>toggle<\/code> y\u00f6ntemi, bir \u00f6\u011fenin durumunu de\u011fi\u015ftiren (\u00f6rne\u011fin, bir men\u00fcy\u00fc a\u00e7ma\/kapama) d\u00fc\u011fmeler i\u00e7in son derece kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<p>4.  <strong><code>contains(className)<\/code>:<\/strong> Belirtilen s\u0131n\u0131f\u0131n \u00f6\u011fede mevcut olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. <code>true<\/code> veya <code>false<\/code> d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <div id=\"myElement\" class=\"box active\"><\/div>\n    const myElement = document.getElementById('myElement');\n\n    console.log(myElement.classList.contains('active')); \/\/ true\n    console.log(myElement.classList.contains('hidden')); \/\/ false<\/code><\/pre>\n<p>    Bu y\u00f6ntem, belirli bir ko\u015fula ba\u011fl\u0131 olarak i\u015flem yapmak istedi\u011finizde faydal\u0131d\u0131r.<\/p>\n<p>5.  <strong><code>replace(oldClass, newClass)<\/code>:<\/strong> Bir mevcut s\u0131n\u0131f\u0131 ba\u015fka bir s\u0131n\u0131fla de\u011fi\u015ftirir. E\u011fer <code>oldClass<\/code> mevcut de\u011filse, hi\u00e7bir \u015fey yapmaz.<\/p>\n<pre><code class=\"language-javascript\">\/\/ HTML: <div id=\"myElement\" class=\"theme-light\"><\/div>\n    const myElement = document.getElementById('myElement');\n\n    myElement.classList.replace('theme-light', 'theme-dark');\n    console.log(myElement.className); \/\/ \"theme-dark\"\n\n    myElement.classList.replace('non-existent', 'new-one'); \/\/ Hi\u00e7bir \u015fey yapmaz\n    console.log(myElement.className); \/\/ \"theme-dark\"<\/code><\/pre>\n<p>    Bu y\u00f6ntem, \u00f6zellikle tema de\u011fi\u015fiklikleri gibi durumlarda, bir s\u0131n\u0131f\u0131 di\u011ferine g\u00fcvenli bir \u015fekilde d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h5>classList&#8217;in Avantajlar\u0131<\/h5>\n<p>*   <strong>G\u00fcvenli ve Okunakl\u0131:<\/strong> Tek tek s\u0131n\u0131flar\u0131 hedefleyerek \u00e7al\u0131\u015f\u0131r, mevcut di\u011fer s\u0131n\u0131flar\u0131 etkilemez. Kodunuz daha anla\u015f\u0131l\u0131r olur.<br \/>\n*   <strong>Esneklik:<\/strong> <code>add<\/code>, <code>remove<\/code>, <code>toggle<\/code>, <code>contains<\/code>, <code>replace<\/code> gibi y\u00f6ntemler sayesinde farkl\u0131 senaryolar i\u00e7in kolayca uygulanabilir.<br \/>\n*   <strong>Performans:<\/strong> Taray\u0131c\u0131lar taraf\u0131ndan optimize edilmi\u015ftir ve s\u0131n\u0131f dizesini manuel olarak manip\u00fcle etmekten daha verimlidir.<br \/>\n*   <strong>Modern Standart:<\/strong> G\u00fcncel web geli\u015ftirme uygulamalar\u0131nda yayg\u0131n olarak kullan\u0131l\u0131r ve taray\u0131c\u0131 deste\u011fi m\u00fckemmeldir (IE9+).<\/p>\n<p><code>classList<\/code> API&#8217;si, modern web geli\u015ftirme i\u00e7in s\u0131n\u0131f y\u00f6netiminde tercih edilen y\u00f6ntemdir ve <code>className<\/code>&#8216;in s\u0131n\u0131rlamalar\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Senaryolar ve En \u0130yi Uygulamalar<\/h3>\n<p>CSS s\u0131n\u0131flar\u0131n\u0131 JavaScript ile y\u00f6netirken sadece temel y\u00f6ntemleri bilmek yeterli de\u011fildir. Daha karma\u015f\u0131k senaryolarda veya b\u00fcy\u00fck projelerde baz\u0131 en iyi uygulamalar\u0131 ve ek hususlar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir.<\/p>\n<h4>Birden Fazla S\u0131n\u0131f\u0131 Y\u00f6netme<\/h4>\n<p><code>classList<\/code> API&#8217;sinin <code>add<\/code> ve <code>remove<\/code> y\u00f6ntemleri, birden fazla s\u0131n\u0131f\u0131 tek bir \u00e7a\u011fr\u0131da i\u015flemeyi destekler. Bu, kodunuzu daha k\u0131sa ve okunakl\u0131 hale getirir.<\/p>\n<pre><code class=\"language-javascript\">const myElement = document.getElementById('myElement');\n\n\/\/ Birden fazla s\u0131n\u0131f ekleme\nmyElement.classList.add('error', 'invalid', 'shake');\n\n\/\/ Birden fazla s\u0131n\u0131f kald\u0131rma\nmyElement.classList.remove('error', 'shake');<\/code><\/pre>\n<p>Ko\u015fullu s\u0131n\u0131f ekleme\/kald\u0131rma da s\u0131k\u00e7a kar\u015f\u0131la\u015f\u0131lan bir durumdur. <code>toggle<\/code> y\u00f6nteminin ikinci parametresi veya basit <code>if<\/code> ifadeleriyle bu sa\u011flanabilir:<\/p>\n<pre><code class=\"language-javascript\">const isValid = false; \/\/ Form do\u011frulama sonucu\nconst inputElement = document.getElementById('myInput');\n\n\/\/ E\u011fer isValid false ise 'error' s\u0131n\u0131f\u0131n\u0131 ekle, true ise kald\u0131r\ninputElement.classList.toggle('error', !isValid);\n\n\/\/ Veya daha geleneksel bir yakla\u015f\u0131mla:\nif (!isValid) {\n    inputElement.classList.add('error');\n} else {\n    inputElement.classList.remove('error');\n}<\/code><\/pre>\n<h4>CSS De\u011fi\u015fikliklerini Tetikleme ile Animasyonlar ve Ge\u00e7i\u015fler<\/h4>\n<p>CSS s\u0131n\u0131flar\u0131, animasyonlar\u0131 ve ge\u00e7i\u015fleri tetiklemek i\u00e7in harika bir ara\u00e7t\u0131r. JavaScript ile bir s\u0131n\u0131f ekleyip kald\u0131rmak, CSS&#8217;te tan\u0131mlanm\u0131\u015f bir <code>transition<\/code> veya <code>animation<\/code> kural\u0131n\u0131 tetikleyebilir.<\/p>\n<p><strong>\u00d6rnek: A\u00e7\u0131l\u0131r Kapan\u0131r Men\u00fc Animasyonu<\/strong><\/p>\n<pre><code class=\"language-html\"><style>\n  .menu {\n    max-height: 0;\n    overflow: hidden;\n    transition: max-height 0.3s ease-out;\n  }\n  .menu.open {\n    max-height: 200px; \/<em> Men\u00fcn\u00fcn ger\u00e7ek y\u00fcksekli\u011finden biraz fazla olmal\u0131 <\/em>\/\n    transition: max-height 0.3s ease-in;\n  }\n<\/style>\n\n<button id=\"toggleMenuBtn\">Men\u00fcy\u00fc A\u00e7\/Kapat<\/button>\n<nav id=\"myMenu\" class=\"menu\">\n  <ul>\n    <li><a href=\"#\">Anasayfa<\/a><\/li>\n    <li><a href=\"#\">Hakk\u0131m\u0131zda<\/a><\/li>\n    <li><a href=\"#\">\u0130leti\u015fim<\/a><\/li>\n  <\/ul>\n<\/nav>\n\n<script>\n  const toggleMenuBtn = document.getElementById('toggleMenuBtn');\n  const myMenu = document.getElementById('myMenu');\n\n  toggleMenuBtn.addEventListener('click', () => {\n    myMenu.classList.toggle('open');\n    if (myMenu.classList.contains('open')) {\n      toggleMenuBtn.textContent = 'Men\u00fcy\u00fc Kapat';\n    } else {\n      toggleMenuBtn.textContent = 'Men\u00fcy\u00fc A\u00e7';\n    }\n  });\n<\/script><\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>open<\/code> s\u0131n\u0131f\u0131n\u0131n eklenip kald\u0131r\u0131lmas\u0131, men\u00fcn\u00fcn <code>max-height<\/code> \u00f6zelli\u011fini de\u011fi\u015ftirerek yumu\u015fak bir a\u00e7\u0131lma\/kapanma animasyonu tetikler.<\/p>\n<h4>Performans Hususlar\u0131<\/h4>\n<p>DOM manip\u00fclasyonlar\u0131, \u00f6zellikle s\u0131k ve b\u00fcy\u00fck \u00f6l\u00e7ekli oldu\u011funda performans\u0131 etkileyebilir. Ancak <code>classList<\/code> API&#8217;si genellikle olduk\u00e7a optimize edilmi\u015ftir. Yine de, binlerce \u00f6\u011fe \u00fczerinde ayn\u0131 anda s\u0131n\u0131f de\u011fi\u015fiklikleri yapmaktan ka\u00e7\u0131nmak veya bu t\u00fcr i\u015flemleri tek bir i\u015flemde gruplamak (\u00f6rne\u011fin, bir d\u00f6ng\u00fc i\u00e7inde <code>add<\/code> yerine, d\u00f6ng\u00fcden sonra toplu i\u015flem yapmak) performans\u0131 art\u0131rabilir. Genellikle, kullan\u0131c\u0131 aray\u00fcz\u00fcndeki tipik etkile\u015fimler i\u00e7in <code>classList<\/code>&#8216;in performans\u0131 yeterince iyidir.<\/p>\n<h4>Eri\u015filebilirlik (Accessibility)<\/h4>\n<p>S\u0131n\u0131f de\u011fi\u015fiklikleri, bir \u00f6\u011fenin g\u00f6rsel g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc de\u011fi\u015ftirdi\u011fi gibi, bazen eri\u015filebilirlik niteliklerini de etkilemelidir. \u00d6rne\u011fin, bir modal pencereyi a\u00e7t\u0131\u011f\u0131n\u0131zda, modal\u0131n kendisinin g\u00f6r\u00fcn\u00fcr olmas\u0131n\u0131n yan\u0131 s\u0131ra, ekran okuyucular i\u00e7in de do\u011fru bir \u015fekilde duyurulmas\u0131 gerekir. Bu durumda, sadece <code>hidden<\/code> s\u0131n\u0131f\u0131n\u0131 kald\u0131rmakla kalmay\u0131p, ayn\u0131 zamanda <code>aria-hidden=\"true\"<\/code> niteli\u011fini <code>false<\/code> olarak de\u011fi\u015ftirmek veya <code>aria-modal=\"true\"<\/code> gibi nitelikleri eklemek gerekebilir.<\/p>\n<pre><code class=\"language-javascript\">const modal = document.getElementById('myModal');\nconst openButton = document.getElementById('openModalBtn');\n\nopenButton.addEventListener('click', () => {\n  modal.classList.add('is-visible');\n  modal.setAttribute('aria-hidden', 'false');\n  modal.setAttribute('aria-modal', 'true'); \/\/ Modal\u0131n eri\u015filebilirli\u011fini art\u0131r\u0131r\n  modal.focus(); \/\/ Klavye oda\u011f\u0131n\u0131 modala ta\u015f\u0131r\n});\n\n\/\/ Kapatma i\u015flevi de benzer \u015fekilde aria niteliklerini geri almal\u0131<\/code><\/pre>\n<p>Eri\u015filebilirlik, web sitelerinin herkes taraf\u0131ndan kullan\u0131labilir olmas\u0131n\u0131 sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir. S\u0131n\u0131f de\u011fi\u015fikliklerinizin eri\u015filebilirlik \u00fczerindeki potansiyel etkilerini her zaman g\u00f6z \u00f6n\u00fcnde bulundurun.<\/p>\n<h4>Framework&#8217;lerde S\u0131n\u0131f Y\u00f6netimi<\/h4>\n<p>React, Vue, Angular gibi modern JavaScript framework&#8217;leri, DOM manip\u00fclasyonlar\u0131n\u0131 soyutlayarak s\u0131n\u0131f y\u00f6netimini daha kolay ve reaktif hale getirir. Bu framework&#8217;lerde genellikle <code>classList<\/code>&#8216;i do\u011frudan kullanmak yerine, framework&#8217;\u00fcn kendi mekanizmalar\u0131n\u0131 kullan\u0131rs\u0131n\u0131z:<br \/>\n*   <strong>React:<\/strong> JSX i\u00e7inde <code>className<\/code> prop&#8217;unu kullan\u0131r ve ko\u015fullu ifadelerle s\u0131n\u0131f dizesini dinamik olarak olu\u015fturabilirsiniz. \u00d6rne\u011fin: <code><\/p>\n<div className={isActive ? &#039;item active&#039; : &#039;item&#039;}>...<\/div>\n<p><\/code><br \/>\n*   <strong>Vue:<\/strong> <code>v-bind:class<\/code> veya <code>:class<\/code> direktifini kullanarak nesneler veya diziler arac\u0131l\u0131\u011f\u0131yla s\u0131n\u0131flar\u0131 ko\u015fullu olarak atayabilirsiniz. \u00d6rne\u011fin: <code><\/p>\n<div :class=\"{ active: isActive, &#039;text-red&#039;: hasError }\">...<\/div>\n<p><\/code><br \/>\n*   <strong>Angular:<\/strong> <code>[ngClass]<\/code> direktifi veya do\u011frudan <code>class.my-class<\/code> binding&#8217;i ile s\u0131n\u0131flar\u0131 y\u00f6netir. \u00d6rne\u011fin: <code><\/p>\n<div [ngClass]=\"{&#039;active&#039;: isActive}\">...<\/div>\n<p><\/code><\/p>\n<p>Bu framework&#8217;ler, s\u0131n\u0131f y\u00f6netimini altta yatan <code>classList<\/code> API&#8217;si \u00fczerinden ger\u00e7ekle\u015ftirse de, geli\u015ftiricilere daha deklaratif ve reaktif bir aray\u00fcz sunar.<\/p>\n<h3>Pratik Uygulama \u00d6rnekleri<\/h3>\n<p>\u015eimdiye kadar \u00f6\u011frendiklerimizi peki\u015ftirmek i\u00e7in birka\u00e7 pratik \u00f6rnek \u00fczerinden gidelim.<\/p>\n<h4>\u00d6rnek 1: Akordiyon (Accordion) Men\u00fc<\/h4>\n<p>Bir akordiyon, t\u0131kland\u0131\u011f\u0131nda i\u00e7eri\u011fini g\u00f6steren veya gizleyen bir UI \u00f6\u011fesidir.<\/p>\n<pre><code class=\"language-html\"><style>\n  .accordion-header { cursor: pointer; padding: 10px; background-color: #f0f0f0; border-bottom: 1px solid #ccc; }\n  .accordion-header.active { background-color: #e0e0e0; }\n  .accordion-content { max-height: 0; overflow: hidden; transition: max-height 0.3s ease-out; padding: 0 10px; }\n  .accordion-content.open { max-height: 150px; \/<em> \u0130\u00e7eri\u011fin max y\u00fcksekli\u011fi <\/em>\/ transition: max-height 0.3s ease-in; }\n<\/style>\n\n<div class=\"accordion-item\">\n  <div class=\"accordion-header\">B\u00f6l\u00fcm 1<\/div>\n  <div class=\"accordion-content\">\n    <p>Bu, B\u00f6l\u00fcm 1'in i\u00e7eri\u011fidir. Daha fazla bilgi burada yer almaktad\u0131r.<\/p>\n  <\/div>\n<\/div>\n\n<div class=\"accordion-item\">\n  <div class=\"accordion-header\">B\u00f6l\u00fcm 2<\/div>\n  <div class=\"accordion-content\">\n    <p>B\u00f6l\u00fcm 2 i\u00e7in i\u00e7erik. Bu k\u0131s\u0131m dinamik olarak a\u00e7\u0131l\u0131p kapanacakt\u0131r.<\/p>\n  <\/div>\n<\/div>\n\n<script>\n  document.querySelectorAll('.accordion-header').forEach(header => {\n    header.addEventListener('click', () => {\n      \/\/ T\u0131klanan ba\u015fl\u0131\u011f\u0131n 'active' s\u0131n\u0131f\u0131n\u0131 toggle et\n      header.classList.toggle('active');\n\n      \/\/ \u0130\u00e7erik elementini se\u00e7 ve 'open' s\u0131n\u0131f\u0131n\u0131 toggle et\n      const content = header.nextElementSibling;\n      if (content) {\n        content.classList.toggle('open');\n      }\n    });\n  });\n<\/script><\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>accordion-header<\/code>&#8216;a t\u0131kland\u0131\u011f\u0131nda hem ba\u015fl\u0131\u011fa <code>active<\/code> s\u0131n\u0131f\u0131 eklenir\/kald\u0131r\u0131l\u0131r hem de ilgili <code>accordion-content<\/code>&#8216;e <code>open<\/code> s\u0131n\u0131f\u0131 eklenir\/kald\u0131r\u0131l\u0131r, bu da CSS ge\u00e7i\u015fleri arac\u0131l\u0131\u011f\u0131yla i\u00e7eri\u011fin yumu\u015fak bir \u015fekilde g\u00f6r\u00fcnmesini\/gizlenmesini sa\u011flar.<\/p>\n<h4>\u00d6rnek 2: Modal Pencere A\u00e7ma\/Kapatma<\/h4>\n<p>Bir modal pencere, sayfan\u0131n geri kalan\u0131n\u0131 karartarak kullan\u0131c\u0131n\u0131n dikkatini belirli bir i\u00e7eri\u011fe \u00e7ekmek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-html\"><style>\n  .modal-overlay {\n    position: fixed; top: 0; left: 0; width: 100%; height: 100%;\n    background-color: rgba(0, 0, 0, 0.5);\n    display: flex; justify-content: center; align-items: center;\n    visibility: hidden; opacity: 0; transition: opacity 0.3s, visibility 0.3s;\n  }\n  .modal-overlay.visible {\n    visibility: visible; opacity: 1;\n  }\n  .modal-content {\n    background-color: white; padding: 20px; border-radius: 5px;\n    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n    transform: translateY(-20px); opacity: 0; transition: transform 0.3s, opacity 0.3s;\n  }\n  .modal-overlay.visible .modal-content {\n    transform: translateY(0); opacity: 1;\n  }\n  .close-button { float: right; cursor: pointer; font-size: 1.2em; }\n<\/style>\n\n<button id=\"openModalBtn\">Modal\u0131 A\u00e7<\/button>\n\n<div id=\"myModal\" class=\"modal-overlay\" aria-hidden=\"true\" role=\"dialog\">\n  <div class=\"modal-content\">\n    <span class=\"close-button\">&times;<\/span>\n    <h3>Bu bir Modal Ba\u015fl\u0131\u011f\u0131d\u0131r<\/h3>\n    <p>Modal penceresi i\u00e7eri\u011fi burada yer almaktad\u0131r. Kullan\u0131c\u0131 bu pencereyi kapatana kadar etkile\u015fimde bulunabilir.<\/p>\n    <button>Tamam<\/button>\n  <\/div>\n<\/div>\n\n<script>\n  const openModalBtn = document.getElementById('openModalBtn');\n  const myModal = document.getElementById('myModal');\n  const closeButton = myModal.querySelector('.close-button');\n\n  openModalBtn.addEventListener('click', () => {\n    myModal.classList.add('visible');\n    myModal.setAttribute('aria-hidden', 'false');\n  });\n\n  closeButton.addEventListener('click', () => {\n    myModal.classList.remove('visible');\n    myModal.setAttribute('aria-hidden', 'true');\n  });\n\n  \/\/ Modal d\u0131\u015f\u0131na t\u0131klay\u0131nca kapatma\n  myModal.addEventListener('click', (event) => {\n    if (event.target === myModal) {\n      myModal.classList.remove('visible');\n      myModal.setAttribute('aria-hidden', 'true');\n    }\n  });\n<\/script><\/code><\/pre>\n<p>Burada <code>visible<\/code> s\u0131n\u0131f\u0131n\u0131n eklenip kald\u0131r\u0131lmas\u0131, modal penceresinin g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc ve opakl\u0131\u011f\u0131n\u0131 de\u011fi\u015ftirir. Ayr\u0131ca eri\u015filebilirlik i\u00e7in <code>aria-hidden<\/code> niteli\u011fi de g\u00fcncellenir.<\/p>\n<h4>\u00d6rnek 3: Tema De\u011fi\u015ftirme<\/h4>\n<p>Kullan\u0131c\u0131n\u0131n tercihine g\u00f6re sayfan\u0131n temas\u0131n\u0131 de\u011fi\u015ftirmek.<\/p>\n<pre><code class=\"language-html\"><style>\n  body { transition: background-color 0.3s, color 0.3s; }\n  .light-theme { background-color: #f0f0f0; color: #333; }\n  .dark-theme { background-color: #333; color: #f0f0f0; }\n  .light-theme button { background-color: #eee; color: #333; border: 1px solid #ccc; }\n  .dark-theme button { background-color: #555; color: #f0f0f0; border: 1px solid #888; }\n<\/style>\n\n<button id=\"toggleThemeBtn\">Temay\u0131 De\u011fi\u015ftir<\/button>\n<p>Bu bir \u00f6rnek metindir.<\/p>\n<button>\u00d6rnek Buton<\/button>\n\n<script>\n  const toggleThemeBtn = document.getElementById('toggleThemeBtn');\n  const body = document.body;\n\n  \/\/ Ba\u015flang\u0131\u00e7 temas\u0131 ayar\u0131 (iste\u011fe ba\u011fl\u0131)\n  if (!body.classList.contains('light-theme') && !body.classList.contains('dark-theme')) {\n      body.classList.add('light-theme');\n  }\n\n  toggleThemeBtn.addEventListener('click', () => {\n    if (body.classList.contains('light-theme')) {\n      body.classList.replace('light-theme', 'dark-theme');\n      toggleThemeBtn.textContent = 'A\u00e7\u0131k Temaya Ge\u00e7';\n    } else {\n      body.classList.replace('dark-theme', 'light-theme');\n      toggleThemeBtn.textContent = 'Koyu Temaya Ge\u00e7';\n    }\n  });\n<\/script><\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>body<\/code> etiketine <code>light-theme<\/code> veya <code>dark-theme<\/code> s\u0131n\u0131flar\u0131n\u0131 ekleyip kald\u0131rarak t\u00fcm sayfan\u0131n stilini de\u011fi\u015ftiriyoruz. <code>classList.replace()<\/code> burada olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>Dikkat Edilmesi Gerekenler ve Yayg\u0131n Hatalar<\/h3>\n<p>CSS s\u0131n\u0131flar\u0131n\u0131 JavaScript ile manip\u00fcle ederken baz\u0131 noktalara dikkat etmek, potansiyel hatalar\u0131 \u00f6nleyebilir ve daha sa\u011flam kod yazman\u0131z\u0131 sa\u011flayabilir.<\/p>\n<p>*   <strong>S\u0131n\u0131f Adlar\u0131n\u0131n Do\u011fru Yaz\u0131lmas\u0131:<\/strong> JavaScript&#8217;te s\u0131n\u0131f adlar\u0131n\u0131 yazarken b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131l\u0131\u011f\u0131na dikkat edin. CSS&#8217;te tan\u0131mlad\u0131\u011f\u0131n\u0131z s\u0131n\u0131f adlar\u0131yla tam olarak e\u015fle\u015fmelidir. Yanl\u0131\u015f yaz\u0131lan bir s\u0131n\u0131f ad\u0131, beklenen stilin uygulanmamas\u0131na neden olur.<br \/>\n*   <strong>Yanl\u0131\u015f Elementin Se\u00e7ilmesi:<\/strong> <code>document.getElementById()<\/code>, <code>document.querySelector()<\/code>, <code>document.querySelectorAll()<\/code> gibi y\u00f6ntemlerle do\u011fru HTML elementini se\u00e7ti\u011finizden emin olun. Yanl\u0131\u015f elementi se\u00e7mek, stil de\u011fi\u015fikliklerinin yanl\u0131\u015f yere uygulanmas\u0131na veya hi\u00e7 uygulanmamas\u0131na yol a\u00e7ar.<br \/>\n*   <strong>CSS \u00d6nceli\u011fi (Specificity):<\/strong> JavaScript ile ekledi\u011finiz s\u0131n\u0131flar\u0131n CSS kurallar\u0131n\u0131zdaki di\u011fer se\u00e7icilere g\u00f6re \u00f6nceli\u011fi \u00f6nemlidir. Bazen bir s\u0131n\u0131f eklemenize ra\u011fmen stilin de\u011fi\u015fmedi\u011fini g\u00f6rebilirsiniz. Bu genellikle, daha y\u00fcksek \u00f6nceli\u011fe sahip ba\u015fka bir CSS kural\u0131n\u0131n (\u00f6rne\u011fin, bir ID se\u00e7ici veya daha spesifik bir kombinasyon) stilinizi ge\u00e7ersiz k\u0131lmas\u0131yla ilgilidir. Gerekmedik\u00e7e <code>!important<\/code> kullanmaktan ka\u00e7\u0131n\u0131n ve CSS \u00f6nceli\u011fini anlay\u0131n.<br \/>\n*   <strong>JavaScript ve CSS Sorumluluklar\u0131n\u0131n Ayr\u0131m\u0131:<\/strong> JavaScript, UI&#8217;\u0131n davran\u0131\u015f\u0131n\u0131 y\u00f6netmeli, CSS ise UI&#8217;\u0131n g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc tan\u0131mlamal\u0131d\u0131r. JavaScript ile do\u011frudan <code>element.style.color = 'red'<\/code> gibi inline stiller atamak yerine, bir s\u0131n\u0131f ekleyip bu s\u0131n\u0131f\u0131n CSS&#8217;te tan\u0131mlanm\u0131\u015f stilleri tetiklemesini sa\u011flamak genellikle daha iyi bir uygulamad\u0131r. Bu, kodun bak\u0131m\u0131n\u0131 kolayla\u015ft\u0131r\u0131r ve sorumluluklar\u0131n ayr\u0131m\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Taray\u0131c\u0131 Uyumlulu\u011fu:<\/strong> <code>classList<\/code> API&#8217;si modern taray\u0131c\u0131larda geni\u015f deste\u011fe sahiptir (IE9 ve \u00fczeri). Ancak, \u00e7ok eski taray\u0131c\u0131lar\u0131 desteklemeniz gerekiyorsa, bir polyfill kullanman\u0131z veya <code>className<\/code> y\u00f6ntemine geri d\u00f6nmeniz gerekebilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>JavaScript ile CSS s\u0131n\u0131flar\u0131n\u0131 de\u011fi\u015ftirmek, dinamik ve etkile\u015fimli web uygulamalar\u0131 geli\u015ftirmenin temel bir par\u00e7as\u0131d\u0131r. <code>element.className<\/code> \u00f6zelli\u011fi basit dize manip\u00fclasyonu sunarken, modern ve \u00f6nerilen y\u00f6ntem olan <code>element.classList<\/code> API&#8217;si, <code>add<\/code>, <code>remove<\/code>, <code>toggle<\/code>, <code>contains<\/code> ve <code>replace<\/code> gibi g\u00fc\u00e7l\u00fc y\u00f6ntemleriyle \u00e7ok daha esnek, g\u00fcvenli ve okunakl\u0131 bir s\u0131n\u0131f y\u00f6netimi sa\u011flar.<\/p>\n<p>Bu makalede ele ald\u0131\u011f\u0131m\u0131z y\u00f6ntemler ve en iyi uygulamalar sayesinde, kullan\u0131c\u0131 etkile\u015fimlerine yan\u0131t veren, durum bazl\u0131 stil de\u011fi\u015fiklikleri yapan ve animasyonlar\u0131 tetikleyen web aray\u00fczleri olu\u015fturabilirsiniz. Eri\u015filebilirlik ve performans gibi hususlar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak, daha sa\u011flam ve kullan\u0131c\u0131 dostu uygulamalar geli\u015ftirebilirsiniz. Modern framework&#8217;ler bu s\u00fcre\u00e7leri daha da soyutlasa da, altta yatan <code>classList<\/code> API&#8217;sini anlamak, her web geli\u015ftiricisinin ara\u00e7 kutusunda bulunmas\u0131 gereken temel bir beceridir.<\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?\nWeb geli\u015ftirme d\u00fcnyas\u0131nda, dinamik ve etkile\u015fimli kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak","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":[129],"tags":[],"class_list":{"0":"post-36103","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","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>JavaScript&#039;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz? - 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\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript&#039;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?\" \/>\n<meta property=\"og:description\" content=\"JavaScript&#039;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz? Web geli\u015ftirme d\u00fcnyas\u0131nda, dinamik ve etkile\u015fimli kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-08T07:40:44+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=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?\",\"datePublished\":\"2025-12-08T07:40:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\"},\"wordCount\":2379,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\",\"name\":\"JavaScript'te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-08T07:40:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?\"}]},{\"@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":"JavaScript'te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz? - 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\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript'te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?","og_description":"JavaScript'te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz? Web geli\u015ftirme d\u00fcnyas\u0131nda, dinamik ve etkile\u015fimli kullan\u0131c\u0131 aray\u00fczleri olu\u015fturmak","og_url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-08T07:40:44+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?","datePublished":"2025-12-08T07:40:44+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/"},"wordCount":2379,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/","url":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/","name":"JavaScript'te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-08T07:40:44+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascriptte-css-siniflarini-nasil-degistirirsiniz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript&#8217;te CSS S\u0131n\u0131flar\u0131n\u0131 Nas\u0131l De\u011fi\u015ftirirsiniz?"}]},{"@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\/36103","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=36103"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36103\/revisions"}],"predecessor-version":[{"id":36104,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36103\/revisions\/36104"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}