{"id":33077,"date":"2025-10-29T08:31:41","date_gmt":"2025-10-29T05:31:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/"},"modified":"2025-10-29T08:31:41","modified_gmt":"2025-10-29T05:31:41","slug":"css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/","title":{"rendered":"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri"},"content":{"rendered":"<p><body><\/p>\n<p>Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.<\/p>\n<p>Web geli\u015ftirmede kar\u015f\u0131la\u015f\u0131lan en b\u00fcy\u00fck zorluklardan biri, HTML yap\u0131s\u0131 de\u011fi\u015ftik\u00e7e CSS&#8217;in de buna uyum sa\u011flamas\u0131n\u0131 sa\u011flamakt\u0131r. Manuel olarak her de\u011fi\u015fikli\u011fi g\u00fcncellemek hem zaman al\u0131c\u0131 hem de hataya a\u00e7\u0131k bir s\u00fcre\u00e7tir. Bu nedenle, elementlerin \u00f6zelliklerine, konumlar\u0131na veya durumlar\u0131na g\u00f6re otomatik olarak stil uygulayabilen ak\u0131ll\u0131 se\u00e7iciler, geli\u015ftiriciler i\u00e7in vazge\u00e7ilmez bir hale gelmi\u015ftir. Ayn\u0131 \u015fekilde, HTML&#8217;de fiziksel olarak bulunmayan ancak g\u00f6rsel olarak sayfaya de\u011fer katacak \u00f6\u011feleri CSS \u00fczerinden yaratma yetene\u011fi sunan s\u00f6zde elementler de, aray\u00fcz tasar\u0131m\u0131nda yarat\u0131c\u0131l\u0131\u011f\u0131 ve verimlili\u011fi art\u0131r\u0131r. Bu teknoloji, sadece kod yazma \u015feklinizi de\u011fil, ayn\u0131 zamanda web sayfalar\u0131n\u0131z\u0131 nas\u0131l d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcn\u00fcz\u00fc ve tasarlad\u0131\u011f\u0131n\u0131z\u0131 da d\u00f6n\u00fc\u015ft\u00fcrecektir.<\/p>\n<p>Bu makalede, \u00f6ncelikle CSS se\u00e7icilerin temel prensiplerini ve neden bu kadar \u00f6nemli olduklar\u0131n\u0131 inceleyece\u011fiz. Ard\u0131ndan, elementlerin farkl\u0131 durumlar\u0131na veya konumlar\u0131na g\u00f6re stil uygulamam\u0131z\u0131 sa\u011flayan s\u00f6zde s\u0131n\u0131flar\u0131 ayr\u0131nt\u0131l\u0131 \u00f6rneklerle ele alaca\u011f\u0131z. \u00dc\u00e7\u00fcnc\u00fc b\u00f6l\u00fcmde ise, HTML yap\u0131m\u0131zda bulunmayan ancak g\u00f6rsel olarak sayfam\u0131za anlam katan s\u00f6zde elementlerin nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 ke\u015ffedece\u011fiz. \u0130leri d\u00fczey kombinasyonlar ve ger\u00e7ek d\u00fcnya senaryolar\u0131 ile bu ara\u00e7lar\u0131n projelerinizde ne gibi farklar yaratabilece\u011fini g\u00f6receksiniz. Son olarak, s\u0131k\u00e7a sorulan sorularla akl\u0131n\u0131zdaki t\u00fcm soru i\u015faretlerini giderece\u011fiz. Haz\u0131rsan\u0131z, modern web tasar\u0131m\u0131n\u0131n temellerini birlikte ke\u015ffetmeye ba\u015flayal\u0131m.<\/p>\n<h2>CSS Se\u00e7icilerin G\u00fcc\u00fc: Temel Kavramlara Giri\u015f ve Ak\u0131ll\u0131 Se\u00e7iciler Nedir?<\/h2>\n<p>CSS se\u00e7iciler, web sayfalar\u0131n\u0131zdaki belirli HTML elementlerini hedefleyerek onlara stil uygulaman\u0131z\u0131 sa\u011flayan temel yap\u0131 ta\u015flar\u0131d\u0131r. Geleneksel olarak, elementleri etiket adlar\u0131na (<code>p<\/code>, <code>div<\/code>), s\u0131n\u0131flar\u0131na (<code>.button<\/code>) veya ID&#8217;lerine (<code>#header<\/code>) g\u00f6re se\u00e7eriz. Ancak bu y\u00f6ntemler, \u00f6zellikle dinamik ve karma\u015f\u0131k aray\u00fczlerde yetersiz kalabilir. \u0130\u015fte bu noktada, &#8220;ak\u0131ll\u0131 se\u00e7iciler&#8221; olarak adland\u0131rd\u0131\u011f\u0131m\u0131z daha geli\u015fmi\u015f ve g\u00fc\u00e7l\u00fc se\u00e7iciler devreye girer. Bu se\u00e7iciler, sadece etiket, s\u0131n\u0131f veya ID&#8217;ye ba\u011fl\u0131 kalmay\u0131p, elementlerin di\u011fer \u00f6zelliklerini, konumlar\u0131n\u0131 veya ili\u015fkilerini de baz alarak \u00e7ok daha hassas ve esnek hedefleme yapmam\u0131z\u0131 sa\u011flar.<\/p>\n<p>Ak\u0131ll\u0131 se\u00e7icilerin ba\u015f\u0131nda <strong>Nitelik Se\u00e7iciler (Attribute Selectors)<\/strong> gelir. Bu se\u00e7iciler, HTML elementlerinin belirli niteliklerine (attribute) g\u00f6re stil uygulaman\u0131z\u0131 m\u00fcmk\u00fcn k\u0131lar. \u00d6rne\u011fin, bir input elementinin <code>type=\"text\"<\/code> niteli\u011fine sahip olup olmad\u0131\u011f\u0131na bakabilir, veya bir linkin <code>href<\/code> niteli\u011finde belirli bir kelime i\u00e7erip i\u00e7ermedi\u011fini kontrol edebilirsiniz. Bu sayede, ayn\u0131 etiketi veya s\u0131n\u0131f\u0131 payla\u015fan ancak farkl\u0131 niteliklere sahip elementlere \u00f6zel stiller atayabilirsiniz.<\/p>\n<pre><code>\n\/* type niteli\u011fi \"text\" olan t\u00fcm input'lara stil uygula *\/\ninput[type=\"text\"] {\n    border: 1px solid #ccc;\n    padding: 8px;\n}\n\n\/* href niteli\u011fi \"https\" ile ba\u015flayan t\u00fcm a etiketlerine stil uygula *\/\na[href^=\"https:\/\/\"] {\n    color: green;\n}\n\n\/* class niteli\u011fi \"button\" ile biten t\u00fcm elementlere stil uygula *\/\n[class$=\"button\"] {\n    cursor: pointer;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Nitelik se\u00e7icilerin yan\u0131 s\u0131ra, elementler aras\u0131ndaki ili\u015fkileri hedeflememizi sa\u011flayan <strong>Birle\u015ftirici Se\u00e7iciler (Combinators)<\/strong> de ak\u0131ll\u0131 se\u00e7iciler aras\u0131nda \u00f6nemli bir yer tutar. Bunlar, elementlerin DOM a\u011fac\u0131ndaki hiyerar\u015fik veya karde\u015f ili\u015fkilerine g\u00f6re se\u00e7ilmesini sa\u011flar:<\/p>\n<ul>\n<li><strong>Torun Se\u00e7ici (Descendant Combinator - bo\u015fluk):<\/strong> Bir elementin i\u00e7inde bulunan (herhangi bir derinlikte) di\u011fer elementleri se\u00e7er. \u00d6rnek: <code>div p<\/code>, <code>div<\/code> i\u00e7indeki t\u00fcm <code>p<\/code> elementlerini se\u00e7er.<\/li>\n<li><strong>\u00c7ocuk Se\u00e7ici (Child Combinator - >):<\/strong> Sadece do\u011frudan alt elementleri se\u00e7er. \u00d6rnek: <code>ul > li<\/code>, <code>ul<\/code>'nin do\u011frudan alt\u0131ndaki <code>li<\/code> elementlerini se\u00e7er.<\/li>\n<li><strong>Biti\u015fik Karde\u015f Se\u00e7ici (Adjacent Sibling Combinator - +):<\/strong> Ayn\u0131 seviyedeki bir elementin hemen ard\u0131ndan gelen karde\u015f elementini se\u00e7er. \u00d6rnek: <code>h2 + p<\/code>, bir <code>h2<\/code> elementinin hemen ard\u0131ndan gelen <code>p<\/code> elementini se\u00e7er.<\/li>\n<li><strong>Genel Karde\u015f Se\u00e7ici (General Sibling Combinator - ~):<\/strong> Ayn\u0131 seviyedeki bir elementin ard\u0131ndan gelen t\u00fcm karde\u015f elementlerini se\u00e7er. \u00d6rnek: <code>h2 ~ p<\/code>, bir <code>h2<\/code> elementinin ard\u0131ndan gelen t\u00fcm <code>p<\/code> elementlerini se\u00e7er.<\/li>\n<\/ul>\n<pre><code>\n\/* class'\u0131 \"container\" olan bir div'in i\u00e7indeki t\u00fcm p etiketlerini se\u00e7 *\/\n.container p {\n    line-height: 1.6;\n}\n\n\/* class'\u0131 \"nav\" olan ul'nin do\u011frudan alt\u0131ndaki li'leri se\u00e7 *\/\n.nav > li {\n    margin-right: 15px;\n}\n\n\/* Bir ba\u015fl\u0131\u011f\u0131n hemen alt\u0131ndaki ilk paragraf\u0131 stilize et *\/\nh3 + p {\n    font-weight: bold;\n}\n\n\/* Bir div'in alt\u0131ndaki t\u00fcm p etiketlerini (ayn\u0131 seviyede) stilize et *\/\ndiv ~ p {\n    margin-top: 1em;\n}\n    <\/pre>\n<p><\/code><\/p>\n<aside class=\"tip\">\n        Uzman \u0130pucu: Se\u00e7icilerin \u00f6zg\u00fcll\u00fck (specificity) de\u011ferlerini anlamak, CSS'inizin beklenmedik davran\u0131\u015flar\u0131n\u0131 \u00e7\u00f6zmede kritik \u00f6neme sahiptir. ID se\u00e7iciler s\u0131n\u0131f se\u00e7icilerden, s\u0131n\u0131f se\u00e7iciler de etiket se\u00e7icilerden daha y\u00fcksek \u00f6zg\u00fcll\u00fc\u011fe sahiptir. Ak\u0131ll\u0131 se\u00e7iciler bu \u00f6zg\u00fcll\u00fck hiyerar\u015fisine dahil olup, daha karma\u015f\u0131k ve \u00f6zelle\u015ftirilmi\u015f stil kurallar\u0131 olu\u015fturman\u0131za olanak tan\u0131r. Se\u00e7icilerinizi ne kadar ak\u0131ll\u0131ca kombinlerseniz, o kadar az <code>!important<\/code> kullanma ihtiyac\u0131 duyars\u0131n\u0131z.<br \/>\n    <\/aside>\n<p>Bu ak\u0131ll\u0131 se\u00e7iciler, HTML yap\u0131n\u0131z\u0131 de\u011fi\u015ftirmeden sadece CSS ile \u00e7ok spesifik elementlere ula\u015fman\u0131z\u0131 sa\u011flar. Bu da kod tekrar\u0131n\u0131 azalt\u0131r, stil sayfalar\u0131n\u0131z\u0131n daha mod\u00fcler olmas\u0131n\u0131 sa\u011flar ve uzun vadede projelerinizin bak\u0131m\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekli projelerde veya dinamik olarak olu\u015fturulan i\u00e7eriklerde, bu se\u00e7icilerin g\u00fcc\u00fc paha bi\u00e7ilmezdir. Bir sonraki b\u00f6l\u00fcmde, elementlerin farkl\u0131 durumlar\u0131n\u0131 hedeflememizi sa\u011flayan s\u00f6zde s\u0131n\u0131flar\u0131 inceleyece\u011fiz.<\/p>\n<h2>Pseudo-S\u0131n\u0131flar: Dinamik Durumlar\u0131 CSS ile Nas\u0131l Hedefleriz?<\/h2>\n<p>Web sayfalar\u0131 statik de\u011fildir; kullan\u0131c\u0131lar onlarla etkile\u015fimde bulunur. Bir butona t\u0131klar, bir ba\u011flant\u0131n\u0131n \u00fczerine gelir, bir form alan\u0131na odaklan\u0131r veya bir onay kutusunu i\u015faretlerler. Bu etkile\u015fimler s\u0131ras\u0131nda elementlerin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc de\u011fi\u015ftirmek, kullan\u0131c\u0131 deneyimini zenginle\u015ftirmenin ve aray\u00fcz\u00fc daha anla\u015f\u0131l\u0131r hale getirmenin \u00f6nemli bir yoludur. \u0130\u015fte tam bu noktada, CSS'in <strong>Pseudo-S\u0131n\u0131flar\u0131 (Pseudo-Classes)<\/strong> devreye girer. Pseudo-s\u0131n\u0131flar, elementlerin HTML a\u011fac\u0131ndaki konumlar\u0131na veya dinamik durumlar\u0131na (\u00f6rne\u011fin, \u00fczerine gelindi\u011finde, t\u0131kland\u0131\u011f\u0131nda, odakland\u0131\u011f\u0131nda) g\u00f6re stil uygulaman\u0131z\u0131 sa\u011flar.<\/p>\n<p>Pseudo-s\u0131n\u0131flar\u0131, asl\u0131nda HTML'de var olmayan, ancak belirli bir ko\u015ful alt\u0131nda elemanlara atanan \"s\u0131n\u0131flar\" gibi d\u00fc\u015f\u00fcnebiliriz. En yayg\u0131n kullan\u0131lan ve muhtemelen herkesin bildi\u011fi pseudo-s\u0131n\u0131flar, ba\u011flant\u0131 durumlar\u0131 i\u00e7in kullan\u0131lanlard\u0131r:<\/p>\n<ul>\n<li><code>:link<\/code>: Ziyaret edilmemi\u015f ba\u011flant\u0131lar.<\/li>\n<li><code>:visited<\/code>: Ziyaret edilmi\u015f ba\u011flant\u0131lar.<\/li>\n<li><code>:hover<\/code>: Fare imleci elementin \u00fczerindeyken.<\/li>\n<li><code>:active<\/code>: Element t\u0131kland\u0131\u011f\u0131nda veya etkinle\u015ftirildi\u011finde.<\/li>\n<li><code>:focus<\/code>: Element odakland\u0131\u011f\u0131nda (genellikle form elemanlar\u0131 veya t\u0131klanabilir \u00f6\u011feler).<\/li>\n<\/ul>\n<pre><code>\na:link {\n    color: #007bff;\n}\n\na:visited {\n    color: #663399;\n}\n\nbutton:hover {\n    background-color: #0056b3;\n    transform: translateY(-2px); \/* Hafif bir yukar\u0131 hareket efekti *\/\n}\n\ninput:focus {\n    border-color: #007bff;\n    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Ancak pseudo-s\u0131n\u0131flar\u0131n g\u00fcc\u00fc sadece bu temel etkile\u015fimlerle s\u0131n\u0131rl\u0131 de\u011fildir. Daha geli\u015fmi\u015f pseudo-s\u0131n\u0131flar, elementlerin DOM i\u00e7indeki yap\u0131sal konumlar\u0131na veya UI durumlar\u0131na g\u00f6re se\u00e7ilmesini sa\u011flar:<\/p>\n<ul>\n<li><strong>Yap\u0131sal Pseudo-S\u0131n\u0131flar:<\/strong>\n<ul>\n<li><code>:first-child<\/code>: Ebeveyninin ilk \u00e7ocu\u011fu olan elementleri se\u00e7er.<\/li>\n<li><code>:last-child<\/code>: Ebeveyninin son \u00e7ocu\u011fu olan elementleri se\u00e7er.<\/li>\n<li><code>:nth-child(n)<\/code>: Ebeveyninin n. \u00e7ocu\u011fu olan elementleri se\u00e7er. (<code>n<\/code> yerine <code>odd<\/code>, <code>even<\/code>, <code>2n+1<\/code> gibi ifadeler de kullan\u0131labilir).<\/li>\n<li><code>:nth-of-type(n)<\/code>: Belirli bir t\u00fcrdeki (\u00f6rne\u011fin <code>p<\/code> etiketi) ebeveyninin n. \u00e7ocu\u011fu olan elementleri se\u00e7er.<\/li>\n<li><code>:only-child<\/code>: Ebeveyninin tek \u00e7ocu\u011fu olan elementleri se\u00e7er.<\/li>\n<li><code>:empty<\/code>: \u0130\u00e7eri\u011fi olmayan elementleri se\u00e7er (bo\u015fluklar dahil).<\/li>\n<\/ul>\n<\/li>\n<li><strong>UI Durum Pseudo-S\u0131n\u0131flar\u0131:<\/strong>\n<ul>\n<li><code>:checked<\/code>: Se\u00e7ili durumdaki radyo butonlar\u0131 veya onay kutular\u0131.<\/li>\n<li><code>:disabled<\/code>: Devre d\u0131\u015f\u0131 b\u0131rak\u0131lm\u0131\u015f form elementleri.<\/li>\n<li><code>:enabled<\/code>: Etkin form elementleri.<\/li>\n<li><code>:read-only<\/code>: Salt okunur form elementleri.<\/li>\n<li><code>:valid<\/code> \/ <code>:invalid<\/code>: Form do\u011frulama durumuna g\u00f6re input elementleri.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Olumsuzlama Pseudo-S\u0131n\u0131f\u0131:<\/strong>\n<ul>\n<li><code>:not(selector)<\/code>: Belirtilen se\u00e7iciye uymayan t\u00fcm elementleri se\u00e7er. Bu, CSS se\u00e7icilerinde bir \"hari\u00e7 tutma\" mekanizmas\u0131 sunar ve \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code>\n\/* Her liste \u00f6\u011fesinin sadece ilk \u00e7ocu\u011funa \u00f6zel stil *\/\nli:first-child {\n    font-weight: bold;\n}\n\n\/* Her ikinci paragraf\u0131 farkl\u0131 renklendir *\/\np:nth-child(2n) {\n    background-color: #f0f0f0;\n}\n\n\/* Sadece input[type=\"text\"] olmayan elementlere margin ekle *\/\ninput:not([type=\"text\"]) {\n    margin-bottom: 10px;\n}\n\n\/* \u0130\u015faretlenmi\u015f onay kutular\u0131n\u0131n karde\u015f label'lar\u0131n\u0131 stilize et *\/\ninput[type=\"checkbox\"]:checked + label {\n    text-decoration: line-through;\n    color: #888;\n}\n\n\/* Ge\u00e7ersiz bir input alan\u0131 i\u00e7in k\u0131rm\u0131z\u0131 kenarl\u0131k *\/\ninput:invalid {\n    border-color: red;\n}\n    <\/pre>\n<p><\/code><\/p>\n<aside class=\"tip\">\n        Uzman \u0130pucu: <code>:focus-visible<\/code> pseudo-s\u0131n\u0131f\u0131n\u0131 kullanarak, klavye navigasyonu kullanan kullan\u0131c\u0131lar i\u00e7in eri\u015filebilirlik odak g\u00f6stergelerini optimize edebilirsiniz. Bu, fare veya dokunmatik ekran kullan\u0131c\u0131lar\u0131 i\u00e7in dikkat da\u011f\u0131t\u0131c\u0131 olabilecek varsay\u0131lan odak g\u00f6stergelerini gizlerken, klavye kullan\u0131c\u0131lar\u0131 i\u00e7in net bir g\u00f6rsel geri bildirim sa\u011flar.<br \/>\n    <\/aside>\n<p><strong>Vaka Analizi: Dinamik Bir Men\u00fc Olu\u015fturma<\/strong><br \/>\n    Bir navigasyon men\u00fcn\u00fcz oldu\u011funu ve sadece belirli bir linkin \u00fczerine gelindi\u011finde, o linke ait alt men\u00fcy\u00fc g\u00f6stermek istedi\u011finizi varsayal\u0131m. Ayr\u0131ca, son liste \u00f6\u011fesinin \u00f6zel bir kenarl\u0131\u011f\u0131 olmas\u0131n\u0131 istiyoruz:<\/p>\n<pre><code>\n<!-- HTML Yap\u0131s\u0131 -->\n<nav>\n    <ul>\n        <li><a href=\"#\">Anasayfa<\/a><\/li>\n        <li class=\"has-submenu\">\n            <a href=\"#\">Hizmetler<\/a>\n            <ul class=\"submenu\">\n                <li><a href=\"#\">Web Geli\u015ftirme<\/a><\/li>\n                <li><a href=\"#\">SEO Dan\u0131\u015fmanl\u0131\u011f\u0131<\/a><\/li>\n            <\/ul>\n        <\/li>\n        <li><a href=\"#\">Hakk\u0131m\u0131zda<\/a><\/li>\n        <li><a href=\"#\">\u0130leti\u015fim<\/a><\/li>\n    <\/ul>\n<\/nav>\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/* Men\u00fc genel stilleri *\/\nnav ul {\n    list-style: none;\n    padding: 0;\n    margin: 0;\n    display: flex;\n}\n\nnav li {\n    position: relative;\n    padding: 10px 15px;\n    background-color: #f4f4f4;\n    border-right: 1px solid #ddd;\n}\n\n\/* Son men\u00fc \u00f6\u011fesine \u00f6zel kenarl\u0131k *\/\nnav li:last-child {\n    border-right: none;\n    border-bottom: 2px solid #007bff;\n}\n\n\/* Alt men\u00fcy\u00fc ba\u015flang\u0131\u00e7ta gizle *\/\n.submenu {\n    display: none;\n    position: absolute;\n    top: 100%;\n    left: 0;\n    background-color: #fff;\n    border: 1px solid #eee;\n    min-width: 180px;\n    z-index: 10;\n    list-style: none;\n    padding: 0;\n    margin: 0;\n}\n\n.submenu li {\n    padding: 8px 15px;\n    border-bottom: 1px solid #eee;\n    white-space: nowrap;\n}\n\n.submenu li:last-child {\n    border-bottom: none;\n}\n\n\/* Alt men\u00fcy\u00fc sadece ebeveyn li'nin \u00fczerine gelindi\u011finde g\u00f6ster *\/\n.has-submenu:hover > .submenu {\n    display: block;\n}\n\n\/* Alt men\u00fc linkleri hover oldu\u011funda stil *\/\n.submenu a:hover {\n    color: #007bff;\n    text-decoration: underline;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>:last-child<\/code> ile son men\u00fc \u00f6\u011fesine \u00f6zel bir stil verdik ve <code>:hover<\/code> pseudo-s\u0131n\u0131f\u0131n\u0131 kullanarak alt men\u00fcy\u00fc dinamik olarak g\u00f6r\u00fcn\u00fcr hale getirdik. Bu sayede, JavaScript kullanmadan sadece CSS ile interaktif bir men\u00fc olu\u015fturmu\u015f olduk. Pseudo-s\u0131n\u0131flar, aray\u00fcz\u00fcn\u00fcz\u00fc daha dinamik, eri\u015filebilir ve kullan\u0131c\u0131 dostu hale getirmenin anahtar\u0131d\u0131r.<\/p>\n<h2>Pseudo-Elementler: HTML'de Olmayan \u00d6\u011feleri CSS ile Nas\u0131l Ekleriz?<\/h2>\n<p>HTML belgelerimizde her zaman g\u00f6rsel olarak ihtiya\u00e7 duydu\u011fumuz her \u00f6\u011feyi do\u011frudan i\u015faretlemek istemeyiz. Bazen, metinlerin veya bloklar\u0131n etraf\u0131na dekoratif \u00f6\u011feler eklemek, ilk harfi b\u00fcy\u00fctmek veya belirli bir b\u00f6l\u00fcm\u00fcn ba\u015f\u0131na \u00f6zel bir simge koymak isteyebiliriz. Bu t\u00fcr durumlar i\u00e7in HTML'i gereksiz yere \u015fi\u015firmek yerine, CSS'in g\u00fc\u00e7l\u00fc bir \u00f6zelli\u011fi olan <strong>Pseudo-Elementler (Pseudo-Elements)<\/strong> imdad\u0131m\u0131za yeti\u015fir. Pseudo-elementler, HTML'de fiziksel olarak var olmayan, ancak CSS arac\u0131l\u0131\u011f\u0131yla g\u00f6rsel olarak olu\u015fturulabilen elementlerdir.<\/p>\n<p>Pseudo-elementler, se\u00e7ilen bir elementin belirli bir k\u0131sm\u0131n\u0131 stilize etmek veya o elementin i\u00e7eri\u011fine yeni bir \u00f6\u011fe eklemek i\u00e7in kullan\u0131l\u0131r. Genellikle \u00e7ift iki nokta \u00fcst \u00fcste (<code>::<\/code>) ile belirtilirler, bu da onlar\u0131 pseudo-s\u0131n\u0131flardan (tek iki nokta \u00fcst \u00fcste - <code>:<\/code>) ay\u0131r\u0131r. Ancak, eski taray\u0131c\u0131larla uyumluluk i\u00e7in tek iki nokta \u00fcst \u00fcste kullan\u0131m\u0131 da hala ge\u00e7erlidir. En yayg\u0131n kullan\u0131lan pseudo-elementler \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>::before<\/code>: Se\u00e7ilen elementin i\u00e7eri\u011finden hemen \u00f6nce yeni bir \u00f6\u011fe ekler.<\/li>\n<li><code>::after<\/code>: Se\u00e7ilen elementin i\u00e7eri\u011finden hemen sonra yeni bir \u00f6\u011fe ekler.<\/li>\n<li><code>::first-line<\/code>: Bir metin blo\u011funun sadece ilk sat\u0131r\u0131n\u0131 stilize eder.<\/li>\n<li><code>::first-letter<\/code>: Bir metin blo\u011funun sadece ilk harfini stilize eder.<\/li>\n<li><code>::selection<\/code>: Kullan\u0131c\u0131 taraf\u0131ndan se\u00e7ilen (vurgulanan) metni stilize eder.<\/li>\n<li><code>::placeholder<\/code>: Bir form giri\u015f alan\u0131ndaki yer tutucu metni stilize eder.<\/li>\n<\/ul>\n<p><code>::before<\/code> ve <code>::after<\/code> pseudo-elementleri, genellikle <code>content<\/code> \u00f6zelli\u011fi ile birlikte kullan\u0131l\u0131r. <code>content<\/code> \u00f6zelli\u011fi, eklemek istedi\u011finiz metni, simgeyi veya hatta bo\u015f bir dizeyi tan\u0131mlar. Bu sayede, ikon fontlar\u0131, dekoratif \u00e7izgiler, al\u0131nt\u0131 i\u015faretleri veya temizleme mekanizmalar\u0131 gibi bir\u00e7ok g\u00f6rsel efekti kolayca olu\u015fturabilirsiniz.<\/p>\n<pre><code>\n\/* Bir ba\u015fl\u0131\u011f\u0131n \u00f6n\u00fcne dekoratif bir simge ekle *\/\nh2::before {\n    content: \"\u2728 \"; \/* Bir emoji veya bir string *\/\n    display: inline-block;\n    margin-right: 5px;\n    color: #ffd700;\n}\n\n\/* Bir paragraf\u0131n sonuna okunma s\u00fcresi etiketi ekle *\/\np.read-time::after {\n    content: \" (5 dakika oku)\";\n    font-size: 0.8em;\n    color: #777;\n    margin-left: 5px;\n}\n\n\/* Blok al\u0131nt\u0131lar\u0131 i\u00e7in \u00f6zel t\u0131rnak i\u015faretleri *\/\nblockquote::before {\n    content: \"\u201c\";\n    font-size: 3em;\n    color: #ccc;\n    line-height: 1;\n    height: 0; \/* \u0130\u00e7eri\u011fin y\u00fcksekli\u011fini s\u0131f\u0131rla *\/\n    display: block; \/* Yeni sat\u0131ra ge\u00e7mesini sa\u011fla *\/\n    margin-top: 10px;\n}\n\nblockquote::after {\n    content: \"\u201d\";\n    font-size: 3em;\n    color: #ccc;\n    line-height: 1;\n    height: 0;\n    display: block;\n    text-align: right;\n    margin-bottom: 10px;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p><code>::first-line<\/code> ve <code>::first-letter<\/code> ise, tipografi \u00fczerinde ince ayarlar yapman\u0131z\u0131 sa\u011flar. Gazete ve dergi tasar\u0131mlar\u0131nda s\u0131k\u00e7a g\u00f6r\u00fclen ilk harfi b\u00fcy\u00fctme (drop cap) efektini veya bir paragraf\u0131n ilk sat\u0131r\u0131n\u0131 vurgulama gibi i\u015flemleri HTML'e dokunmadan ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<pre><code>\n\/* Bir makalenin ilk harfini b\u00fcy\u00fct *\/\n.article-content p::first-letter {\n    font-size: 3em;\n    font-weight: bold;\n    float: left; \/* Harfin di\u011fer metni sarmas\u0131n\u0131 sa\u011flar *\/\n    margin-right: 0.1em;\n    line-height: 1;\n    color: #333;\n}\n\n\/* Bir ba\u015fl\u0131\u011f\u0131n ilk sat\u0131r\u0131n\u0131 farkl\u0131 renklendir *\/\nh1::first-line {\n    color: #007bff;\n    font-variant: small-caps;\n}\n    <\/pre>\n<p><\/code><\/p>\n<aside class=\"tip\">\n        Uzman \u0130pucu: Pseudo-elementler, float'lar\u0131 temizlemek i\u00e7in de s\u0131kl\u0131kla kullan\u0131l\u0131r (clearfix hack). Bir ebeveyn elemente <code>::after<\/code> pseudo-elementi ekleyerek ve ona <code>clear: both; display: table; content: \"\";<\/code> \u00f6zelliklerini vererek, i\u00e7indeki float'l\u0131 \u00e7ocuk elementlerin ebeveynin y\u00fcksekli\u011fini do\u011fru bir \u015fekilde etkilemesini sa\u011flayabilirsiniz.<br \/>\n    <\/aside>\n<p><strong>Vaka Analizi: \u00d6zelle\u015ftirilmi\u015f Listeler ve \u0130\u00e7erik Ayr\u0131m\u0131<\/strong><br \/>\n    Bir madde listesindeki her \u00f6\u011fenin ba\u015f\u0131nda \u00f6zel bir ikon olmas\u0131n\u0131 ve \u00f6nemli bir uyar\u0131 metninin alt\u0131n\u0131 \u00e7izmek istedi\u011fimizi d\u00fc\u015f\u00fcnelim. Bu, <code>::before<\/code> ve <code>::after<\/code> pseudo-elementleriyle kolayca yap\u0131labilir.<\/p>\n<pre><code>\n<!-- HTML Yap\u0131s\u0131 -->\n<ul class=\"custom-list\">\n    <li>Madde 1: Ak\u0131ll\u0131 Se\u00e7iciler<\/li>\n    <li>Madde 2: Pseudo-S\u0131n\u0131flar<\/li>\n    <li>Madde 3: Pseudo-Elementler<\/li>\n<\/ul>\n\n<p class=\"warning-text\">Bu bir \u00f6nemli uyar\u0131d\u0131r ve alt\u0131 \u00e7izilmelidir.<\/p>\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/* \u00d6zel liste \u00f6\u011feleri i\u00e7in ikon *\/\n.custom-list li {\n    list-style: none; \/* Varsay\u0131lan madde i\u015faretini kald\u0131r *\/\n    padding-left: 25px; \/* \u0130kon i\u00e7in bo\u015fluk b\u0131rak *\/\n    position: relative; \/* ::before'u konumland\u0131rmak i\u00e7in *\/\n    margin-bottom: 8px;\n}\n\n.custom-list li::before {\n    content: \"\u2713\"; \/* Bir onay i\u015fareti veya ba\u015fka bir simge *\/\n    position: absolute;\n    left: 0;\n    color: #28a745; \/* Ye\u015fil renk *\/\n    font-weight: bold;\n}\n\n\/* Uyar\u0131 metninin alt\u0131na dekoratif bir \u00e7izgi *\/\n.warning-text {\n    position: relative;\n    display: inline-block; \/* \u00c7izginin sadece metin geni\u015fli\u011finde olmas\u0131n\u0131 sa\u011flar *\/\n    padding-bottom: 5px;\n    margin-top: 20px;\n    font-style: italic;\n    color: #dc3545;\n}\n\n.warning-text::after {\n    content: \"\"; \/* Bo\u015f i\u00e7erik, sadece g\u00f6rsel i\u00e7in *\/\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 100%;\n    height: 2px; \/* \u00c7izgi kal\u0131nl\u0131\u011f\u0131 *\/\n    background-color: #dc3545; \/* K\u0131rm\u0131z\u0131 renk *\/\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekler, pseudo-elementlerin sadece g\u00f6rsel zenginlik sa\u011flamakla kalmay\u0131p, ayn\u0131 zamanda HTML'i temiz tutarak kodun okunabilirli\u011fini ve bak\u0131m\u0131n\u0131 nas\u0131l kolayla\u015ft\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6stermektedir. Bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131 ustaca kullanarak, web aray\u00fczlerinize profesyonel ve estetik dokunu\u015flar katabilirsiniz.<\/p>\n<h2>Ak\u0131ll\u0131 Se\u00e7ici Kombinasyonlar\u0131 ve \u0130leri D\u00fczey Uygulamalar: Karma\u015f\u0131k Senaryolarda CSS G\u00fcc\u00fcn\u00fc En \u00dcst D\u00fczeye Nas\u0131l \u00c7\u0131kar\u0131r\u0131z?<\/h2>\n<p>CSS ak\u0131ll\u0131 se\u00e7icileri ve pseudo-elementler kendi ba\u015flar\u0131na olduk\u00e7a g\u00fc\u00e7l\u00fc ara\u00e7lard\u0131r, ancak ger\u00e7ek g\u00fc\u00e7leri bir araya getirildiklerinde ortaya \u00e7\u0131kar. Bu kombinasyonlar sayesinde, belirli ko\u015fullar alt\u0131nda \u00e7ok spesifik elementlere ula\u015fabilir, dinamik g\u00f6rsel efektler yaratabilir ve kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde geli\u015ftirebilirsiniz. \u0130leri d\u00fczey uygulamalar, sadece estetik kayg\u0131larla de\u011fil, ayn\u0131 zamanda eri\u015filebilirlik, performans ve duyarl\u0131 tasar\u0131m gibi \u00f6nemli fakt\u00f6rleri de g\u00f6z \u00f6n\u00fcnde bulundurarak tasarlan\u0131r.<\/p>\n<p><strong>Kombinasyonlar\u0131n G\u00fcc\u00fc:<\/strong><br \/>\n    \u00d6rne\u011fin, sadece belirli bir niteli\u011fe sahip olan ve \u00fczerine gelindi\u011finde farkl\u0131 bir pseudo-element g\u00f6steren bir \u00f6\u011fe tasarlayabilirsiniz. Veya belirli bir yap\u0131sal pseudo-s\u0131n\u0131fa sahip bir \u00f6\u011fenin i\u00e7eri\u011fini, pseudo-elementler arac\u0131l\u0131\u011f\u0131yla dinamik olarak de\u011fi\u015ftirebilirsiniz. \u0130\u015fte baz\u0131 ileri d\u00fczey kombinasyon \u00f6rnekleri:<\/p>\n<pre><code>\n\/* type=\"email\" niteli\u011fine sahip bir input, ge\u00e7ersizse ve odaklanm\u0131\u015fsa k\u0131rm\u0131z\u0131 kenarl\u0131k *\/\ninput[type=\"email\"]:invalid:focus {\n    border-color: #dc3545;\n    box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n\/* .item s\u0131n\u0131f\u0131na sahip bir li'nin \u00fczerine gelindi\u011finde, ::after pseudo-elementini g\u00f6ster *\/\n.menu li.item:hover::after {\n    content: \" \u2192\"; \/* Ok i\u015fareti *\/\n    opacity: 1;\n    transform: translateX(0);\n}\n\n\/* Varsay\u0131lan olarak gizli tutal\u0131m *\/\n.menu li.item::after {\n    content: \" \u2192\";\n    display: inline-block;\n    margin-left: 5px;\n    opacity: 0;\n    transition: all 0.3s ease-in-out;\n    transform: translateX(-5px);\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, bir <code>li.item<\/code> \u00f6\u011fesinin \u00fczerine gelindi\u011finde, daha \u00f6nce gizli olan bir ok i\u015faretini (<code>::after<\/code> pseudo-elementi) g\u00f6r\u00fcn\u00fcr hale getiriyor ve hafif bir kayd\u0131rma efektiyle kullan\u0131c\u0131ya interaktif bir geri bildirim sa\u011fl\u0131yoruz. Bu t\u00fcr k\u00fc\u00e7\u00fck detaylar, web sitenizin profesyonelli\u011fini art\u0131r\u0131r.<\/p>\n<p><strong>Eri\u015filebilirlik Odakl\u0131 Yakla\u015f\u0131mlar:<\/strong><br \/>\n    Ak\u0131ll\u0131 se\u00e7iciler ve pseudo-elementler, web sitelerinin eri\u015filebilirli\u011fini art\u0131rmak i\u00e7in de kullan\u0131labilir. \u00d6zellikle klavye navigasyonu kullanan kullan\u0131c\u0131lar i\u00e7in odakland\u0131klar\u0131 elementleri net bir \u015fekilde g\u00f6stermek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Daha \u00f6nce bahsedilen <code>:focus-visible<\/code> pseudo-s\u0131n\u0131f\u0131 buna g\u00fczel bir \u00f6rnektir.<\/p>\n<pre><code>\n\/* Odaklan\u0131lan interaktif \u00f6\u011felere varsay\u0131lan d\u0131\u015f \u00e7er\u00e7eveyi kald\u0131r *\/\n*:focus {\n    outline: none;\n}\n\n\/* Sadece klavye ile odaklan\u0131ld\u0131\u011f\u0131nda belirgin bir kenarl\u0131k g\u00f6ster *\/\n*:focus-visible {\n    outline: 2px solid #007bff;\n    outline-offset: 2px;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131mla, fare veya dokunmatik ekran kullan\u0131c\u0131lar\u0131 gereksiz odak \u00e7er\u00e7evelerini g\u00f6rmezken, klavye ile gezinme yapan kullan\u0131c\u0131lar odakland\u0131klar\u0131 elementi net bir \u015fekilde alg\u0131layabilirler. Bu, kapsay\u0131c\u0131 bir web deneyimi i\u00e7in kritik bir ad\u0131md\u0131r.<\/p>\n<p><strong>Mobil Uyumlu ve Duyarl\u0131 Tasar\u0131m: Media Query'lerle Entegrasyon<\/strong><br \/>\n    Modern web tasar\u0131m\u0131nda duyarl\u0131l\u0131k vazge\u00e7ilmezdir. CSS ak\u0131ll\u0131 se\u00e7icilerini ve pseudo-elementleri <code>@media<\/code> kurallar\u0131yla birle\u015ftirmek, farkl\u0131 ekran boyutlar\u0131 ve cihazlar i\u00e7in \u00f6zel stiller olu\u015fturman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, mobil cihazlarda belirli bir \u00f6\u011feyi gizleyebilir veya farkl\u0131 bir dekoratif \u00f6\u011fe ekleyebilirsiniz.<\/p>\n<pre><code>\n\/* Masa\u00fcst\u00fc ekranlarda \u00f6zel bir \"scroll-to-top\" butonu g\u00f6ster *\/\n.scroll-top-button::before {\n    content: \"\u21e7\";\n    display: block;\n    font-size: 2em;\n    color: #fff;\n    text-align: center;\n    line-height: 1;\n}\n\n\/* Sadece k\u00fc\u00e7\u00fck ekranlarda bu butonu gizle *\/\n@media (max-width: 768px) {\n    .scroll-top-button {\n        display: none;\n    }\n\n    \/* Veya mobil i\u00e7in farkl\u0131 bir ikon\/metin ekle *\/\n    .mobile-header::after {\n        content: \"Mobil G\u00f6r\u00fcn\u00fcm\";\n        display: block;\n        color: #fff;\n        font-size: 0.8em;\n        text-align: center;\n    }\n}\n    <\/pre>\n<p><\/code><\/p>\n<aside class=\"tip\">\n        Uzman \u0130pucu: \u00d6zellikle mobil cihazlarda performans kritiktir. Pseudo-elementlerle eklenen karma\u015f\u0131k animasyonlar veya \u00e7ok b\u00fcy\u00fck <code>content<\/code> de\u011ferleri, d\u00fc\u015f\u00fck g\u00fc\u00e7l\u00fc cihazlarda render performans\u0131n\u0131 etkileyebilir. Mobil \u00f6ncelikli d\u00fc\u015f\u00fcnceyle, bu elementleri sadece gerekti\u011finde veya daha basit formlarda kullanmay\u0131 tercih edin.<br \/>\n    <\/aside>\n<p>Bu b\u00f6l\u00fcmde ele ald\u0131\u011f\u0131m\u0131z kombinasyonlar ve ileri d\u00fczey teknikler, CSS'in sadece bir stil dili olman\u0131n \u00f6tesine ge\u00e7erek, ger\u00e7ek bir aray\u00fcz programlama arac\u0131 haline geldi\u011fini g\u00f6stermektedir. Bu y\u00f6ntemleri ustaca kullanarak, daha dinamik, eri\u015filebilir ve her cihaza uyumlu web deneyimleri olu\u015fturabilirsiniz. Bir sonraki b\u00f6l\u00fcmde, bu bilgileri ger\u00e7ek d\u00fcnya projelerinde nas\u0131l uygulayabilece\u011finizi vaka analizleri \u00fczerinden inceleyece\u011fiz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Vaka Analizleri ve Uygulamal\u0131 \u00c7\u00f6z\u00fcmler: Projelerinizde Bu Bilgileri Nas\u0131l Kullanabilirsiniz?<\/h2>\n<p>\u015eimdiye kadar CSS ak\u0131ll\u0131 se\u00e7icilerini ve pseudo-elementleri teorik olarak inceledik. Art\u0131k bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n ger\u00e7ek d\u00fcnya projelerinde nas\u0131l somut \u00e7\u00f6z\u00fcmler sundu\u011funa dair baz\u0131 vaka analizlerine g\u00f6z atal\u0131m. Bu \u00f6rnekler, karma\u015f\u0131k problemleri zarif ve etkili CSS kodlar\u0131yla \u00e7\u00f6zmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h3>Vaka 1: Dinamik Form Do\u011frulama Geri Bildirimleri ve Uyar\u0131 \u0130konlar\u0131<\/h3>\n<p>Bir kullan\u0131c\u0131 formdaki bir alan\u0131 doldurdu\u011funda veya yanl\u0131\u015f doldurdu\u011funda ona an\u0131nda g\u00f6rsel geri bildirim vermek, kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan \u00e7ok \u00f6nemlidir. JavaScript kullanmadan, sadece CSS pseudo-s\u0131n\u0131flar\u0131 ve pseudo-elementler ile bunu nas\u0131l yapabiliriz?<\/p>\n<pre><code>\n<!-- HTML Yap\u0131s\u0131 -->\n<form>\n    <div class=\"form-group\">\n        <label for=\"email\">E-posta Adresi:<\/label>\n        <input type=\"email\" id=\"email\" required placeholder=\"ornek@alanadi.com\">\n        <span class=\"validation-message\">L\u00fctfen ge\u00e7erli bir e-posta girin.<\/span>\n    <\/div>\n    <div class=\"form-group\">\n        <label for=\"password\">\u015eifre:<\/label>\n        <input type=\"password\" id=\"password\" required minlength=\"6\">\n        <span class=\"validation-message\">\u015eifre en az 6 karakter olmal\u0131.<\/span>\n    <\/div>\n    <button type=\"submit\">G\u00f6nder<\/button>\n<\/form>\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/* Temel stil *\/\n.form-group {\n    margin-bottom: 15px;\n    position: relative;\n}\n\n.form-group input {\n    width: 100%;\n    padding: 10px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n}\n\n.validation-message {\n    color: #dc3545;\n    font-size: 0.85em;\n    display: none; \/* Varsay\u0131lan olarak gizli *\/\n    margin-top: 5px;\n}\n\n\/* Ge\u00e7erli oldu\u011funda kenarl\u0131k ve ikon *\/\n.form-group input:valid {\n    border-color: #28a745;\n}\n\n.form-group input:valid + .validation-message {\n    display: none;\n}\n\n.form-group input:valid:not(:placeholder-shown)::after {\n    \/* \u0130kon eklemek i\u00e7in (font awesome veya SVG kullan\u0131labilir) *\/\n    content: \"\u2713\"; \/* Ge\u00e7erli i\u015fareti *\/\n    position: absolute;\n    right: 10px;\n    top: 38px;\n    color: #28a745;\n    font-weight: bold;\n}\n\n\/* Ge\u00e7ersiz oldu\u011funda kenarl\u0131k ve mesaj *\/\n.form-group input:invalid:not(:placeholder-shown) {\n    border-color: #dc3545;\n}\n\n.form-group input:invalid:not(:placeholder-shown) + .validation-message {\n    display: block; \/* Mesaj\u0131 g\u00f6ster *\/\n}\n\n.form-group input:invalid:not(:placeholder-shown)::after {\n    content: \"\u2715\"; \/* Hata i\u015fareti *\/\n    position: absolute;\n    right: 10px;\n    top: 38px;\n    color: #dc3545;\n    font-weight: bold;\n}\n\n\/* Placeholder metin stilizasyonu *\/\ninput::placeholder {\n    color: #aaa;\n    font-style: italic;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte <code>:valid<\/code>, <code>:invalid<\/code> ve <code>:not(:placeholder-shown)<\/code> pseudo-s\u0131n\u0131flar\u0131n\u0131 kullanarak form elementlerinin ge\u00e7erlilik durumuna g\u00f6re farkl\u0131 stiller uygulad\u0131k. Ayr\u0131ca <code>::after<\/code> pseudo-elementi ile input alanlar\u0131n\u0131n sa\u011f\u0131na onay veya hata ikonlar\u0131 ekleyerek g\u00f6rsel geri bildirimi g\u00fc\u00e7lendirdik. Kullan\u0131c\u0131 placeholder'\u0131 g\u00f6rmedi\u011fi (yani bir \u015feyler yazd\u0131\u011f\u0131) zaman do\u011frulama mesaj\u0131 ve ikonlar\u0131 devreye girer. Bu, kullan\u0131c\u0131lar\u0131n daha iyi bir deneyim ya\u015famas\u0131n\u0131 sa\u011flarken, JavaScript ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r.<\/p>\n<h3>Vaka 2: \u0130\u00e7erik B\u00f6l\u00fcmlerini G\u00f6rsel Olarak Zenginle\u015ftirme ve Okunabilirlik Art\u0131rma<\/h3>\n<p>Uzun metin i\u00e7eriklerinde, b\u00f6l\u00fcmleri ay\u0131rmak, dikkat \u00e7ekmek ve okunabilirli\u011fi art\u0131rmak i\u00e7in pseudo-elementler harika ara\u00e7lard\u0131r. Bir b\u00f6l\u00fcm\u00fcn ba\u015fl\u0131\u011f\u0131n\u0131 \u00f6zel bir alt \u00e7izgi ile s\u00fcsleyebilir veya ilk paragraf\u0131n ilk harfini b\u00fcy\u00fcterek gazete stilini yakalayabiliriz.<\/p>\n<pre><code>\n<!-- HTML Yap\u0131s\u0131 -->\n<article>\n    <h3 class=\"section-heading\">Modern Web Geli\u015ftirme Yakla\u015f\u0131mlar\u0131<\/h3>\n    <p class=\"intro-paragraph\">Web geli\u015ftirme d\u00fcnyas\u0131 her ge\u00e7en g\u00fcn de\u011fi\u015fmekte ve yeni teknolojilerle zenginle\u015fmektedir. Bu makalede, ak\u0131ll\u0131 CSS se\u00e7icilerin ve pseudo-elementlerin modern yakla\u015f\u0131mlardaki yerini derinlemesine inceleyece\u011fiz. \u00d6zellikle duyarl\u0131 tasar\u0131m ve kullan\u0131c\u0131 deneyimi odakl\u0131 geli\u015ftirme pratikleri, g\u00fcn\u00fcm\u00fcz web sitelerinin olmazsa olmazlar\u0131ndand\u0131r.<\/p>\n    <p>Bu g\u00fc\u00e7l\u00fc CSS \u00f6zelliklerini kullanarak, kodumuzu daha temiz ve y\u00f6netilebilir tutabiliriz...<\/p>\n<\/article>\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/* B\u00f6l\u00fcm ba\u015fl\u0131\u011f\u0131 i\u00e7in \u00f6zel alt \u00e7izgi *\/\n.section-heading {\n    position: relative;\n    padding-bottom: 10px;\n    margin-bottom: 25px;\n    display: inline-block; \/* \u00c7izginin ba\u015fl\u0131k geni\u015fli\u011finde olmas\u0131n\u0131 sa\u011flar *\/\n}\n\n.section-heading::after {\n    content: \"\";\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    width: 100%;\n    height: 3px;\n    background: linear-gradient(to right, #007bff, #00c6ff); \/* Degrade \u00e7izgi *\/\n    border-radius: 2px;\n}\n\n\/* Giri\u015f paragraf\u0131n\u0131n ilk harfini b\u00fcy\u00fctme *\/\n.intro-paragraph::first-letter {\n    font-size: 4em;\n    font-weight: bold;\n    color: #333;\n    float: left;\n    margin-right: 0.15em;\n    line-height: 0.8;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Burada, <code>.section-heading<\/code> s\u0131n\u0131f\u0131na sahip ba\u015fl\u0131\u011f\u0131n alt\u0131na, <code>::after<\/code> pseudo-elementi ile degrade renkli estetik bir alt \u00e7izgi ekledik. Ayr\u0131ca, <code>.intro-paragraph<\/code> s\u0131n\u0131f\u0131na sahip ilk paragraf\u0131n ilk harfini <code>::first-letter<\/code> ile b\u00fcy\u00fcterek, geleneksel yay\u0131nc\u0131l\u0131kta g\u00f6r\u00fclen \"drop cap\" efektini olu\u015fturduk. Bu t\u00fcr detaylar, metin bloklar\u0131na g\u00f6rsel bir \u00e7ekicilik katarken, i\u00e7erik hiyerar\u015fisini de g\u00fc\u00e7lendirir.<\/p>\n<h3>Vaka 3: Dinamik Liste Stilleri ve Mobil Uyumlu Listeler<\/h3>\n<p>S\u0131ral\u0131 veya s\u0131ras\u0131z listeleri sadece varsay\u0131lan stillerle kullanmak yerine, pseudo-elementler ve ak\u0131ll\u0131 se\u00e7icilerle \u00e7ok daha etkileyici hale getirebiliriz. Ayr\u0131ca mobil cihazlarda bu listelerin nas\u0131l g\u00f6r\u00fcnece\u011fini de kontrol edebiliriz.<\/p>\n<pre><code>\n<!-- HTML Yap\u0131s\u0131 -->\n<ul class=\"task-list\">\n    <li>G\u00f6revi Tamamla<\/li>\n    <li>Raporu Kontrol Et<\/li>\n    <li class=\"priority\">Toplant\u0131ya Haz\u0131rlan<\/li>\n    <li>E-postalar\u0131 Yan\u0131tla<\/li>\n<\/ul>\n    <\/pre>\n<p><\/code><\/p>\n<pre><code>\n\/* Genel liste stilleri *\/\n.task-list {\n    list-style: none;\n    padding: 0;\n    margin: 20px 0;\n}\n\n.task-list li {\n    background-color: #f9f9f9;\n    margin-bottom: 10px;\n    padding: 12px 15px;\n    border-left: 5px solid #007bff; \/* Sol kenarl\u0131k *\/\n    position: relative;\n    transition: background-color 0.3s ease;\n}\n\n.task-list li:hover {\n    background-color: #e9ecef;\n}\n\n\/* Her liste \u00f6\u011fesinin ba\u015f\u0131na bir madde i\u015fareti ikonu ekle *\/\n.task-list li::before {\n    content: \"\u279c\"; \/* \u00d6zel bir ok i\u015fareti *\/\n    color: #007bff;\n    font-weight: bold;\n    margin-right: 10px;\n}\n\n\/* \u00d6ncelikli g\u00f6reve \u00f6zel stil ve ikon *\/\n.task-list li.priority {\n    border-left-color: #dc3545; \/* K\u0131rm\u0131z\u0131 kenarl\u0131k *\/\n    font-weight: bold;\n}\n\n.task-list li.priority::before {\n    content: \"\ud83d\udd25\"; \/* Alev emojisi *\/\n    color: #dc3545;\n}\n\n\/* \u0130lk ve son \u00f6\u011felere \u00f6zel stiller *\/\n.task-list li:first-child {\n    border-top-left-radius: 5px;\n    border-top-right-radius: 5px;\n}\n\n.task-list li:last-child {\n    border-bottom-left-radius: 5px;\n    border-bottom-right-radius: 5px;\n    margin-bottom: 0;\n}\n\n\/* Mobil uyumlu hale getirme *\/\n@media (max-width: 600px) {\n    .task-list li {\n        border-left: none; \/* Mobil'de sol kenarl\u0131\u011f\u0131 kald\u0131r *\/\n        border-bottom: 1px solid #eee; \/* Alt kenarl\u0131k ekle *\/\n        border-radius: 0;\n    }\n\n    .task-list li:first-child {\n        border-top-left-radius: 5px;\n        border-top-right-radius: 5px;\n    }\n\n    .task-list li:last-child {\n        border-bottom: none;\n        border-bottom-left-radius: 5px;\n        border-bottom-right-radius: 5px;\n    }\n\n    .task-list li::before {\n        content: \"\u25aa\"; \/* Mobil'de daha basit bir madde i\u015fareti *\/\n        color: #555;\n    }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>::before<\/code> pseudo-elementi ile her liste \u00f6\u011fesinin ba\u015f\u0131na \u00f6zel bir i\u015faret ekledik. <code>li.priority<\/code> gibi bir s\u0131n\u0131f\u0131 hedefleyerek belirli \u00f6\u011felere \u00f6ncelik belirttik ve onlara farkl\u0131 bir ikon atad\u0131k. <code>::first-child<\/code> ve <code>::last-child<\/code> pseudo-s\u0131n\u0131flar\u0131 ile listenin ba\u015f\u0131ndaki ve sonundaki \u00f6\u011felere yuvarlak kenarl\u0131klar uygulad\u0131k. Son olarak, bir <code>media query<\/code> kullanarak mobil cihazlarda liste stillerini daha sade ve uygun hale getirdik, \u00f6rne\u011fin sol kenarl\u0131\u011f\u0131 kald\u0131r\u0131p, madde i\u015faretini de\u011fi\u015ftirdik.<\/p>\n<p>Bu vaka analizleri, CSS ak\u0131ll\u0131 se\u00e7icilerini ve pseudo-elementleri kullanarak karma\u015f\u0131k UI\/UX problemlerine nas\u0131l zarif ve bak\u0131m\u0131 kolay \u00e7\u00f6z\u00fcmler getirebilece\u011finizi g\u00f6stermektedir. Bu teknikler, web geli\u015ftirme projelerinizde size b\u00fcy\u00fck esneklik ve yarat\u0131c\u0131l\u0131k sa\u011flayacakt\u0131r.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular: CSS Ak\u0131ll\u0131 Se\u00e7icileri ve S\u00f6zde Elementleri Hakk\u0131nda Bilmeniz Gerekenler Nelerdir?<\/h2>\n<p>Bu kapsaml\u0131 makale boyunca, modern web tasar\u0131m\u0131n\u0131n temelini olu\u015fturan CSS ak\u0131ll\u0131 se\u00e7icilerinin ve s\u00f6zde elementlerin derinliklerine indik. G\u00f6rd\u00fck ki, bu g\u00fc\u00e7l\u00fc ara\u00e7lar sayesinde, HTML yap\u0131s\u0131n\u0131 gereksiz yere karma\u015f\u0131kla\u015ft\u0131rmadan, web sayfalar\u0131m\u0131za hem g\u00f6rsel zenginlik hem de dinamik etkile\u015fimler katabiliriz. Elementlerin niteliklerine, konumlar\u0131na ve durumlar\u0131na g\u00f6re stil uygulayan ak\u0131ll\u0131 se\u00e7iciler (nitelik se\u00e7iciler, birle\u015ftiriciler, pseudo-s\u0131n\u0131flar) ve HTML'de fiziksel olarak bulunmayan ancak g\u00f6rsel olarak sayfam\u0131za de\u011fer katan s\u00f6zde elementler (<code>::before<\/code>, <code>::after<\/code>, <code>::first-line<\/code> vb.), kodumuzu daha mod\u00fcler, okunabilir ve s\u00fcrd\u00fcr\u00fclebilir hale getirir. Ger\u00e7ek d\u00fcnya senaryolar\u0131 ve vaka analizleri arac\u0131l\u0131\u011f\u0131yla, bu bilgileri pratik projelerde nas\u0131l uygulayabilece\u011finize dair somut \u00f6rnekler sunduk.<\/p>\n<p>Ak\u0131ll\u0131 se\u00e7iciler ve pseudo-elementler, sadece estetik kayg\u0131lar\u0131 gidermekle kalmaz, ayn\u0131 zamanda eri\u015filebilirlik, performans ve duyarl\u0131 tasar\u0131m gibi modern web geli\u015ftirme pratiklerinin de \u00f6nemli bir par\u00e7as\u0131d\u0131r. Klavyeyle gezinme i\u00e7in <code>:focus-visible<\/code> kullan\u0131m\u0131 veya mobil cihazlar i\u00e7in optimize edilmi\u015f stiller olu\u015fturmak, bu ara\u00e7lar\u0131n \u00e7ok y\u00f6nl\u00fcl\u00fc\u011f\u00fcn\u00fc kan\u0131tlar niteliktedir. Bu teknikleri ustaca kullanmak, geli\u015ftiricilere daha az JavaScript ba\u011f\u0131ml\u0131l\u0131\u011f\u0131yla zengin ve interaktif kullan\u0131c\u0131 aray\u00fczleri olu\u015fturma \u00f6zg\u00fcrl\u00fc\u011f\u00fc sunar. Unutmay\u0131n, iyi yaz\u0131lm\u0131\u015f CSS, sadece g\u00fczel g\u00f6r\u00fcnmekle kalmaz, ayn\u0131 zamanda performansl\u0131 ve eri\u015filebilir bir deneyim sunar. \u015eimdi gelin, bu konuda ak\u0131llara tak\u0131labilecek baz\u0131 s\u0131k\u00e7a sorulan sorular\u0131 yan\u0131tlayal\u0131m.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt>Ak\u0131ll\u0131 se\u00e7iciler performans\u0131 nas\u0131l etkiler?<\/dt>\n<dd>Genel olarak, modern taray\u0131c\u0131lar CSS se\u00e7icileri \u00e7ok h\u0131zl\u0131 i\u015fler. Ancak, \u00e7ok karma\u015f\u0131k ve i\u00e7 i\u00e7e ge\u00e7mi\u015f se\u00e7iciler (\u00f6rne\u011fin <code>div > ul > li > a:hover::after<\/code> gibi \u00e7ok uzun zincirler) veya evrensel se\u00e7ici (*) ile s\u0131k\u00e7a kullan\u0131lan kombinasyonlar (\u00f6rne\u011fin <code>*:not(.class)<\/code>) baz\u0131 durumlarda k\u00fc\u00e7\u00fck performans d\u00fc\u015f\u00fc\u015flerine neden olabilir. En iyi uygulama, m\u00fcmk\u00fcn oldu\u011funca spesifik ancak gereksiz yere karma\u015f\u0131k olmayan se\u00e7iciler kullanmakt\u0131r. Genel olarak, ak\u0131ll\u0131 se\u00e7icilerin sa\u011flad\u0131\u011f\u0131 kod d\u00fczeni ve s\u00fcrd\u00fcr\u00fclebilirlik faydalar\u0131, potansiyel performans maliyetlerinden \u00e7ok daha a\u011f\u0131r basar.<\/dd>\n<dt><code>:<\/code> ve <code>::<\/code> aras\u0131ndaki fark nedir?<\/dt>\n<dd>Tek iki nokta \u00fcst \u00fcste (<code>:<\/code>), bir <strong>pseudo-s\u0131n\u0131f\u0131<\/strong> belirtir. Pseudo-s\u0131n\u0131flar, elementlerin durumlar\u0131na (<code>:hover<\/code>, <code>:focus<\/code>, <code>:checked<\/code>) veya DOM a\u011fac\u0131ndaki yap\u0131sal konumlar\u0131na (<code>:first-child<\/code>, <code>:nth-child<\/code>) g\u00f6re elementleri se\u00e7er. \u00c7ift iki nokta \u00fcst \u00fcste (<code>::<\/code>), bir <strong>pseudo-elementi<\/strong> belirtir. Pseudo-elementler, HTML'de fiziksel olarak var olmayan sanal elementler yarat\u0131r ve bunlar\u0131 stilize eder (<code>::before<\/code>, <code>::after<\/code>, <code>::first-letter<\/code>). Teknik olarak, modern CSS'te pseudo-elementler i\u00e7in <code>::<\/code> kullan\u0131lmas\u0131 \u00f6nerilirken, pseudo-s\u0131n\u0131flar i\u00e7in <code>:<\/code> kullan\u0131l\u0131r. Ancak, eski taray\u0131c\u0131 uyumlulu\u011fu nedeniyle <code>::before<\/code> ve <code>::after<\/code> gibi baz\u0131 pseudo-elementler i\u00e7in tek <code>:<\/code> kullan\u0131m\u0131 da hala kabul g\u00f6rmektedir.<\/dd>\n<dt>S\u00f6zde elementleri JavaScript ile de\u011fi\u015ftirebilir miyim?<\/dt>\n<dd>Do\u011frudan JavaScript ile bir pseudo-elementi DOM'dan se\u00e7ip \u00f6zelliklerini de\u011fi\u015ftiremezsiniz, \u00e7\u00fcnk\u00fc bunlar DOM'un bir par\u00e7as\u0131 de\u011fildirler. Ancak, pseudo-elementin stilini tan\u0131mlayan ana HTML elementine bir s\u0131n\u0131f ekleyebilir veya kald\u0131rabilir, ya da ana elementin veri niteliklerini (<code>data-attribute<\/code>) de\u011fi\u015ftirebilirsiniz. CSS kurallar\u0131n\u0131zdaki pseudo-element stillerini bu s\u0131n\u0131flara veya niteliklere g\u00f6re ayarlayarak, dolayl\u0131 yoldan pseudo-elementin g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc JavaScript ile kontrol edebilirsiniz.<\/dd>\n<dt>T\u00fcm taray\u0131c\u0131lar bu \u00f6zellikleri destekler mi?<\/dt>\n<dd>CSS ak\u0131ll\u0131 se\u00e7icileri (nitelik se\u00e7iciler, birle\u015ftiriciler) ve temel pseudo-s\u0131n\u0131flar (<code>:hover<\/code>, <code>:first-child<\/code>) ile pseudo-elementler (<code>::before<\/code>, <code>::after<\/code>, <code>::first-letter<\/code>) modern web taray\u0131c\u0131lar\u0131n\u0131n b\u00fcy\u00fck \u00e7o\u011funlu\u011fu taraf\u0131ndan (IE9 ve \u00fczeri dahil olmak \u00fczere) m\u00fckemmel bir \u015fekilde desteklenir. <code>:nth-of-type<\/code>, <code>:not()<\/code> gibi daha geli\u015fmi\u015f pseudo-s\u0131n\u0131flar ve <code>:focus-visible<\/code> gibi daha yeni pseudo-s\u0131n\u0131flar da geni\u015f taray\u0131c\u0131 deste\u011fine sahiptir. Ancak, spesifik bir \u00f6zelli\u011fi kullanmadan \u00f6nce caniuse.com gibi kaynaklardan taray\u0131c\u0131 deste\u011fini kontrol etmek her zaman iyi bir uygulamad\u0131r.<\/dd>\n<dt>Hangi durumlarda <code>:not()<\/code> kullanmaktan ka\u00e7\u0131nmal\u0131y\u0131m?<\/dt>\n<dd><code>:not()<\/code> pseudo-s\u0131n\u0131f\u0131 olduk\u00e7a g\u00fc\u00e7l\u00fcd\u00fcr, ancak k\u00f6t\u00fcye kullan\u0131m\u0131 performans\u0131 etkileyebilir veya kodunuzu gereksiz yere karma\u015f\u0131k hale getirebilir. \u00d6zellikle evrensel se\u00e7ici ile (<code>*:not(.class)<\/code>) kullan\u0131ld\u0131\u011f\u0131nda, taray\u0131c\u0131n\u0131n DOM'daki her \u00f6\u011feyi kontrol etmesi gerekebilir, bu da b\u00fcy\u00fck DOM a\u011fa\u00e7lar\u0131nda performans\u0131 d\u00fc\u015f\u00fcrebilir. Ayr\u0131ca, \u00e7ok uzun veya karma\u015f\u0131k se\u00e7icileri <code>:not()<\/code> i\u00e7ine yerle\u015ftirmek, kodun okunabilirli\u011fini azaltabilir. M\u00fcmk\u00fcn oldu\u011funca, hedeflemek istedi\u011finiz \u00f6\u011feleri do\u011frudan se\u00e7mek veya daha spesifik s\u0131n\u0131flar\/ID'ler kullanmak genellikle daha iyi bir yakla\u015f\u0131md\u0131r. <code>:not()<\/code>'u, istisnalar\u0131 belirtmek veya belirli bir ko\u015fulu kar\u015f\u0131lamayan \u00f6\u011feleri d\u0131\u015flamak i\u00e7in ak\u0131ll\u0131ca kullan\u0131n.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak&hellip;","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":[126],"tags":[],"class_list":{"0":"post-33077","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-css3-html5","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>CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri<\/title>\n<meta name=\"description\" content=\"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.\" \/>\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\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri\" \/>\n<meta property=\"og:description\" content=\"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-29T05:31:41+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=\"26 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri\",\"datePublished\":\"2025-10-29T05:31:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\"},\"wordCount\":3742,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"CSS3 - HTML5\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\",\"name\":\"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-29T05:31:41+00:00\",\"description\":\"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri\"}]},{\"@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":"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri","description":"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.","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\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/","og_locale":"tr_TR","og_type":"article","og_title":"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri","og_description":"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.","og_url":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-29T05:31:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"26 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri","datePublished":"2025-10-29T05:31:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/"},"wordCount":3742,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["CSS3 - HTML5"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/","url":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/","name":"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-29T05:31:41+00:00","description":"Modern web uygulamalar\u0131 ve dinamik aray\u00fczler, geli\u015ftiricilerin CSS kodlar\u0131n\u0131 daha esnek, s\u00fcrd\u00fcr\u00fclebilir ve performansl\u0131 hale getirmesini gerektirir. Ancak geleneksel CSS se\u00e7icileriyle karma\u015f\u0131k DOM yap\u0131lar\u0131n\u0131 hedeflemek, kod tekrar\u0131n\u0131 art\u0131rabilir ve stil y\u00f6netimini zorla\u015ft\u0131rabilir. Peki, y\u00fczlerce hatta binlerce sat\u0131r CSS kodunu daha okunabilir, mod\u00fcler ve ak\u0131ll\u0131ca y\u00f6netmek m\u00fcmk\u00fcn m\u00fc? \u0130\u015fte tam bu noktada, CSS ak\u0131ll\u0131 se\u00e7icileri ve s\u00f6zde elementler devreye girerek web tasar\u0131m\u0131na yeni bir boyut kazand\u0131r\u0131yor. Bu makale, sizi bu g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n derinliklerine g\u00f6t\u00fcrerek, s\u0131f\u0131rdan ba\u015flayarak ileri d\u00fczey uygulamalara kadar her \u015feyi ad\u0131m ad\u0131m \u00f6\u011fretecektir.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/css-akilli-seciciler-ve-sozde-elementler-modern-web-tasariminin-temelleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CSS Ak\u0131ll\u0131 Se\u00e7iciler ve S\u00f6zde Elementler: Modern Web Tasar\u0131m\u0131n\u0131n Temelleri"}]},{"@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\/33077","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=33077"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33077\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}