{"id":33720,"date":"2025-11-06T08:01:05","date_gmt":"2025-11-06T05:01:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/"},"modified":"2025-11-06T08:01:05","modified_gmt":"2025-11-06T05:01:05","slug":"%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/","title":{"rendered":"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#8217;t Know You Needed"},"content":{"rendered":"<p><body><\/p>\n<p>Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework&#8217;lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve &#8220;web&#8217;in \u00f6z\u00fcne&#8221; daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web&#8217;in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web&#8217;in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS&#8217;in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?<\/p>\n<p>G\u00fcn\u00fcm\u00fcz web geli\u015ftirme pratikleri, maalesef, \u00e7o\u011fu zaman bir JavaScript \u015fi\u015fkinli\u011fiyle karakterize ediliyor. K\u00fc\u00e7\u00fck etkile\u015fimler, basit g\u00f6rsel de\u011fi\u015fiklikler veya durum y\u00f6netimi i\u00e7in bile devasa JavaScript k\u00fct\u00fcphaneleri ve framework&#8217;ler kullanmak, sayfa y\u00fckleme s\u00fcrelerini uzat\u0131yor, performans sorunlar\u0131na yol a\u00e7\u0131yor ve hatta eri\u015filebilirlik konusunda s\u0131k\u0131nt\u0131lar yaratabiliyor. Selur, bu durumu k\u00f6kten de\u011fi\u015ftirmeyi hedefleyen bir felsefe ve bu felsefeyi ger\u00e7e\u011fe d\u00f6n\u00fc\u015ft\u00fcren bir &#8220;saf CSS UI motoru&#8221; konseptidir. Adeta bir dijital k\u0131l\u0131\u00e7 gibi, web&#8217;in temel i\u015flevselli\u011fini olu\u015fturan HTML, CSS ve JavaScript aras\u0131ndaki &#8220;web s\u00f6zle\u015fmesini&#8221; keskin bir \u015fekilde yeniden tan\u0131ml\u0131yor.<\/p>\n<p>Geleneksel web s\u00f6zle\u015fmesi kabaca \u015f\u00f6yle i\u015fler: HTML i\u00e7eri\u011fi ve yap\u0131y\u0131 sa\u011flar, CSS i\u00e7eri\u011fi \u015fekillendirir ve sunar, JavaScript ise etkile\u015fimi ve dinamik davran\u0131\u015flar\u0131 ekler. Ancak son y\u0131llarda JavaScript&#8217;in yetki alan\u0131 o kadar geni\u015fledi ki, \u00e7o\u011fu zaman CSS&#8217;in veya hatta HTML&#8217;in do\u011fal olarak halledebilece\u011fi g\u00f6revleri bile \u00fcstlenmeye ba\u015flad\u0131. \u0130\u015fte Selur&#8217;un temel iddias\u0131 tam da bu noktada devreye giriyor: Web&#8217;in g\u00f6rsel sunumu ve temel etkile\u015fimleri, JavaScript&#8217;e gerek kalmadan, yaln\u0131zca ve yaln\u0131zca CSS ile y\u00f6netilmelidir. Bu, JavaScript&#8217;in tamamen ortadan kalkt\u0131\u011f\u0131 anlam\u0131na gelmiyor; aksine, JavaScript&#8217;i ger\u00e7ekten karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131, veri y\u00f6netimi veya sunucuyla ileti\u015fim gibi y\u00fcksek de\u011ferli g\u00f6revler i\u00e7in ayr\u0131lm\u0131\u015f, &#8220;son \u00e7are&#8221; bir ara\u00e7 haline getirmek anlam\u0131na geliyor.<\/p>\n<p>Selur, modern CSS&#8217;in sundu\u011fu geli\u015fmi\u015f yetenekleri (Flexbox, Grid, CSS De\u011fi\u015fkenleri, Pseudo-s\u0131n\u0131flar, <code>::before<\/code>\/<code>::after<\/code>, <code>:has()<\/code> se\u00e7ici, <code>@container<\/code> sorgular\u0131 ve daha fazlas\u0131) bir araya getirerek, karma\u015f\u0131k kullan\u0131c\u0131 aray\u00fczlerini ve etkile\u015fimleri \u015fa\u015f\u0131rt\u0131c\u0131 bir \u00e7eviklik ve performansla olu\u015fturmay\u0131 m\u00fcmk\u00fcn k\u0131lar. \u00d6rne\u011fin, bir modal pencerenin a\u00e7\u0131l\u0131p kapanmas\u0131, bir men\u00fcn\u00fcn geni\u015fleyip daralmas\u0131 veya bir tab yap\u0131s\u0131n\u0131n sekme de\u011fi\u015ftirmesi gibi yayg\u0131n UI bile\u015fenleri, \u00e7o\u011fu zaman sadece CSS kullanarak ve HTML&#8217;deki uygun yap\u0131sal i\u015faretlemelerle elde edilebilir. Bu yakla\u015f\u0131m, sayfa y\u00fckleme h\u0131z\u0131n\u0131 dramatik bir \u015fekilde iyile\u015ftirir \u00e7\u00fcnk\u00fc taray\u0131c\u0131n\u0131n daha az JavaScript kodu i\u015flemesi gerekir. Ayr\u0131ca, daha az JavaScript, daha az g\u00fcvenlik a\u00e7\u0131\u011f\u0131 ve daha kolay bak\u0131m anlam\u0131na da gelebilir. Selur, web&#8217;in h\u0131z, eri\u015filebilirlik ve s\u00fcrd\u00fcr\u00fclebilirlik gibi temel prensiplerine geri d\u00f6nerek, geli\u015ftiricilere daha minimalist ve g\u00fc\u00e7l\u00fc bir ara\u00e7 seti sunar. Bu, ger\u00e7ekten de web geli\u015ftirmenin gelece\u011fi i\u00e7in d\u00fc\u015f\u00fcn\u00fclmesi gereken radikal ama bir o kadar da mant\u0131kl\u0131 bir yakla\u015f\u0131md\u0131r. Web&#8217;in orijinal s\u00f6zle\u015fmesine sad\u0131k kalarak, daha sa\u011flam ve esnek deneyimler yaratabiliriz.<\/p>\n<h2>Neden Saf CSS? Performans, Eri\u015filebilirlik ve Geli\u015ftirici Deneyimi \u0130\u00e7in Nas\u0131l Bir Fark Yarat\u0131r?<\/h2>\n<p>Saf CSS yakla\u015f\u0131m\u0131, sadece kod yazma bi\u00e7imimizle ilgili bir tercih olman\u0131n \u00f6tesinde, web projelerinin temel ta\u015flar\u0131n\u0131 etkileyen bir dizi derin fayda sunar. \u00d6ncelikle, performans, g\u00fcn\u00fcm\u00fcz web siteleri i\u00e7in kritik bir ba\u015far\u0131 fakt\u00f6r\u00fcd\u00fcr ve Selur&#8217;un savundu\u011fu saf CSS, bu alanda \u00e7\u0131\u011f\u0131r a\u00e7ar. Taray\u0131c\u0131lar, JavaScript&#8217;i ayr\u0131\u015ft\u0131rmak, y\u00fcr\u00fctmek ve DOM&#8217;u manip\u00fcle etmek i\u00e7in \u00f6nemli bir zaman harcarlar. Bu s\u00fcre\u00e7ler, \u00f6zellikle d\u00fc\u015f\u00fck g\u00fc\u00e7l\u00fc cihazlarda veya yava\u015f internet ba\u011flant\u0131lar\u0131nda kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Saf CSS tabanl\u0131 bir UI motoru, JavaScript y\u00fck\u00fcn\u00fc azaltarak veya tamamen ortadan kald\u0131rarak, taray\u0131c\u0131n\u0131n bu karma\u015f\u0131k i\u015flemleri yapma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu durum, sayfalar\u0131n daha h\u0131zl\u0131 y\u00fcklenmesine, etkile\u015fimlerin daha ak\u0131c\u0131 olmas\u0131na ve genel yan\u0131t s\u00fcrelerinin iyile\u015fmesine yol a\u00e7ar. Bir e-ticaret sitesinde \u00fcr\u00fcn listelemeleri aras\u0131ndaki h\u0131zl\u0131 ge\u00e7i\u015fler veya bir haber portal\u0131ndaki makaleler aras\u0131nda an\u0131nda gezinme gibi senaryolarda, bu performans art\u0131\u015f\u0131 do\u011frudan kullan\u0131c\u0131 memnuniyetine d\u00f6n\u00fc\u015f\u00fcr.<\/p>\n<p>Eri\u015filebilirlik (Accessibility &#8211; A11y) ise, modern web geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r ve saf CSS burada da \u00f6nemli avantajlar sunar. JavaScript&#8217;in a\u015f\u0131r\u0131 kullan\u0131m\u0131, ekran okuyucular ve di\u011fer yard\u0131mc\u0131 teknolojilerle uyumluluk sorunlar\u0131na yol a\u00e7abilir. \u00d6rne\u011fin, JavaScript ile olu\u015fturulmu\u015f karma\u015f\u0131k modal pencereler veya custom select kutular\u0131, d\u00fczg\u00fcn bir \u015fekilde WAI-ARIA nitelikleriyle donat\u0131lmazsa, klavye navigasyonu veya ekran okuyucular i\u00e7in birer kabusa d\u00f6n\u00fc\u015febilir. Saf CSS \u00e7\u00f6z\u00fcmleri ise, genellikle HTML&#8217;in semantik yap\u0131s\u0131n\u0131 daha az bozar ve bu sayede yard\u0131mc\u0131 teknolojilerle daha do\u011fal bir \u015fekilde uyum sa\u011flar. CSS ile bir men\u00fcy\u00fc a\u00e7\u0131p kapat\u0131rken, sadece g\u00f6r\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc de\u011fi\u015ftirmek, temel HTML yap\u0131s\u0131n\u0131 ve odak y\u00f6netimini etkilemez. Bu da, g\u00f6rme engelliler, motor engelliler veya bili\u015fsel engelliler gibi farkl\u0131 ihtiya\u00e7lar\u0131 olan kullan\u0131c\u0131lar i\u00e7in daha kapsay\u0131c\u0131 bir deneyim yarat\u0131r. Bir web formunda hata mesajlar\u0131n\u0131n CSS ile dinamik olarak g\u00f6sterilmesi, input elementinin oda\u011f\u0131n\u0131 korurken ve ekran okuyucu taraf\u0131ndan do\u011fru bir \u015fekilde okunurken, kullan\u0131c\u0131ya an\u0131nda geri bildirim sa\u011flar.<\/p>\n<p>Son olarak, geli\u015ftirici deneyimi (Developer Experience &#8211; DX) a\u00e7\u0131s\u0131ndan da Selur benzeri bir yakla\u015f\u0131m \u00f6nemli farklar yarat\u0131r. JavaScript k\u00fct\u00fcphanelerinin ve framework&#8217;lerinin s\u00fcrekli de\u011fi\u015fen ekosistemi, geli\u015ftiriciler i\u00e7in s\u00fcrekli bir \u00f6\u011frenme ve adaptasyon s\u00fcreci anlam\u0131na gelir. Yeni bir proje ba\u015flad\u0131\u011f\u0131nda, hangi framework&#8217;\u00fc se\u00e7ece\u011finize karar vermek, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netmek ve performans optimizasyonlar\u0131yla u\u011fra\u015fmak bile ba\u015fl\u0131 ba\u015f\u0131na bir i\u015ftir. Saf CSS, bu karma\u015f\u0131kl\u0131\u011f\u0131 ortadan kald\u0131rarak, geli\u015ftiricilerin daha temel ve evrensel bir web teknolojisine odaklanmas\u0131n\u0131 sa\u011flar. CSS, taray\u0131c\u0131lar taraf\u0131ndan do\u011frudan anla\u015f\u0131lan ve yorumlanan bir dildir; ekstra bir derleme veya d\u00f6n\u00fc\u015ft\u00fcrme ad\u0131m\u0131 gerektirmez (Sass\/Less gibi pre-processor&#8217;lar ayr\u0131 tutulursa). Bu, daha h\u0131zl\u0131 geli\u015ftirme d\u00f6ng\u00fcleri, daha az hata ay\u0131klama ve daha kolay bak\u0131m anlam\u0131na gelir. \u00d6zellikle uzun \u00f6m\u00fcrl\u00fc projelerde, CSS&#8217;in kararl\u0131l\u0131\u011f\u0131 ve standartla\u015fm\u0131\u015f yap\u0131s\u0131, kod taban\u0131n\u0131n zaman i\u00e7inde daha y\u00f6netilebilir kalmas\u0131na yard\u0131mc\u0131 olur. Yeni bir geli\u015ftirici ekibe kat\u0131ld\u0131\u011f\u0131nda, framework&#8217;e \u00f6zel bilgileri \u00f6\u011frenmek yerine do\u011frudan CSS&#8217;e odaklanarak daha h\u0131zl\u0131 adapte olabilir. Dolay\u0131s\u0131yla, saf CSS&#8217;in sundu\u011fu bu \u00fc\u00e7l\u00fc fayda (performans, eri\u015filebilirlik, geli\u015ftirici deneyimi) Selur&#8217;u modern web geli\u015ftirme manzaras\u0131nda g\u00f6rmezden gelinemez bir akt\u00f6r haline getiriyor.<\/p>\n<h2>Selur ile Temel UI Bile\u015fenleri Nas\u0131l Olu\u015fturulur? Pratik \u00d6rneklerle Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>Selur felsefesini benimseyen bir geli\u015ftirici olarak, temel UI bile\u015fenlerini sadece CSS kullanarak nas\u0131l hayata ge\u00e7irebilece\u011finizi merak ediyor olmal\u0131s\u0131n\u0131z. Modern CSS&#8217;in sundu\u011fu imkanlar, art\u0131k JavaScript&#8217;e ihtiya\u00e7 duymadan bir\u00e7ok etkile\u015fimli \u00f6\u011feyi tasarlamam\u0131za olanak tan\u0131yor. Bu b\u00f6l\u00fcmde, basit bir a\u00e7\u0131l\u0131r men\u00fc (dropdown) ve bir modal pencereyi saf CSS ile nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyelim. Bu \u00f6rnekler, Selur&#8217;un g\u00fcc\u00fcn\u00fc ve web s\u00f6zle\u015fmesini yeniden tan\u0131mlama potansiyelini a\u00e7\u0131k\u00e7a g\u00f6sterecektir.<\/p>\n<h3>1. Saf CSS ile A\u00e7\u0131l\u0131r Men\u00fc (Dropdown) Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>A\u00e7\u0131l\u0131r men\u00fcler, web sitelerinde gezinmeyi kolayla\u015ft\u0131ran yayg\u0131n bir UI \u00f6\u011fesidir. Geleneksel olarak JavaScript ile y\u00f6netilse de, CSS&#8217;in <code>:hover<\/code> ve <code>opacity<\/code> gibi \u00f6zelliklerini kullanarak etkileyici bir a\u00e7\u0131l\u0131r men\u00fc olu\u015fturabiliriz.<\/p>\n<p>\u0130lk olarak HTML yap\u0131m\u0131z\u0131 olu\u015ftural\u0131m. Bir \u00fcst men\u00fc \u00f6\u011fesi ve onun i\u00e7inde gizlenmi\u015f alt men\u00fc \u00f6\u011feleri i\u00e7in i\u00e7 i\u00e7e listeler kullanaca\u011f\u0131z:<\/p>\n<pre><code class=\"language-html\">\n<nav class=\"selur-nav\">\n  <ul>\n    <li><a href=\"#\">Ana Sayfa<\/a><\/li>\n    <li class=\"dropdown\">\n      <a href=\"#\">\u00dcr\u00fcnler<\/a>\n      <ul class=\"dropdown-content\">\n        <li><a href=\"#\">Kategoriler<\/a><\/li>\n        <li><a href=\"#\">Yeni \u00dcr\u00fcnler<\/a><\/li>\n        <li><a href=\"#\">\u0130ndirimdekiler<\/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<p>\u015eimdi bu HTML yap\u0131s\u0131na hayat verecek CSS kodlar\u0131na ge\u00e7elim. <code>dropdown-content<\/code> s\u0131n\u0131f\u0131na sahip men\u00fcy\u00fc ba\u015flang\u0131\u00e7ta gizleyece\u011fiz ve <code>dropdown<\/code> s\u0131n\u0131f\u0131na sahip \u00f6\u011fe \u00fczerine gelindi\u011finde g\u00f6r\u00fcn\u00fcr hale getirece\u011fiz:<\/p>\n<pre><code class=\"language-css\">\n.dropdown {\n  position: relative; \/* Alt men\u00fcn\u00fcn konumland\u0131r\u0131lmas\u0131 i\u00e7in *\/\n  display: inline-block;\n}\n\n.dropdown-content {\n  display: none; \/* Ba\u015flang\u0131\u00e7ta gizli *\/\n  position: absolute;\n  background-color: #f9f9f9;\n  min-width: 160px;\n  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n  z-index: 1;\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n\n.dropdown-content li a {\n  color: black;\n  padding: 12px 16px;\n  text-decoration: none;\n  display: block;\n  text-align: left;\n}\n\n.dropdown-content li a:hover {\n  background-color: #f1f1f1;\n}\n\n.dropdown:hover .dropdown-content {\n  display: block; \/* \u00dcst men\u00fcye gelindi\u011finde alt men\u00fcy\u00fc g\u00f6ster *\/\n}\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\">\n        Uzman \u0130pucu: Eri\u015filebilirlik i\u00e7in, klavye ile navigasyonun da d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun. <code>:focus-within<\/code> pseudo-class'\u0131n\u0131 kullanarak klavye ile odaklan\u0131ld\u0131\u011f\u0131nda da men\u00fcn\u00fcn a\u00e7\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz.\n    <\/div>\n<h3>2. Saf CSS ile Modal Pencere Nas\u0131l Olu\u015fturulur?<\/h3>\n<p>Modal pencereler, kullan\u0131c\u0131 dikkatini belirli bir i\u00e7eri\u011fe \u00e7ekmek i\u00e7in kullan\u0131l\u0131r. Genellikle JavaScript ile tetiklenirler, ancak <code>:target<\/code> pseudo-class'\u0131 veya gizli checkbox hilesi ile saf CSS kullanarak da olu\u015fturulabilirler. <code>:target<\/code> kullan\u0131m\u0131 daha temizdir ve URL'yi de\u011fi\u015ftirerek \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>HTML yap\u0131s\u0131 olarak, bir modal tetikleyici ba\u011flant\u0131 ve modal i\u00e7eri\u011finin kendisi gereklidir. Modal'\u0131n <code>id<\/code>'si, tetikleyici ba\u011flant\u0131n\u0131n <code>href<\/code>'i ile e\u015fle\u015fmelidir:<\/p>\n<pre><code class=\"language-html\">\n<a href=\"#selurModal\" class=\"modal-trigger\">Modali A\u00e7<\/a>\n\n<div id=\"selurModal\" class=\"selur-modal\">\n  <div class=\"modal-content\">\n    <a href=\"#\" class=\"modal-close\">&times;<\/a>\n    <h3>Selur Modal Ba\u015fl\u0131\u011f\u0131<\/h3>\n    <p>Bu, tamamen CSS ile olu\u015fturulmu\u015f bir modal penceresidir. JavaScript'e gerek yok!<\/p>\n  <\/div>\n<\/div>\n    <\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi CSS kodlar\u0131na bakal\u0131m. Modal'\u0131 ba\u015flang\u0131\u00e7ta gizleyece\u011fiz ve <code>:target<\/code> se\u00e7icisi ile URL'deki hash de\u011feri modal\u0131n ID'siyle e\u015fle\u015fti\u011finde g\u00f6r\u00fcn\u00fcr hale getirece\u011fiz:<\/p>\n<pre><code class=\"language-css\">\n.selur-modal {\n  visibility: hidden; \/* Ba\u015flang\u0131\u00e7ta gizli *\/\n  opacity: 0;\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background: rgba(0, 0, 0, 0.7);\n  transition: opacity 0.3s, visibility 0.3s;\n  z-index: 1000;\n}\n\n.selur-modal:target {\n  visibility: visible; \/* URL #selurModal oldu\u011funda g\u00f6r\u00fcn\u00fcr *\/\n  opacity: 1;\n}\n\n.modal-content {\n  background: white;\n  padding: 2em;\n  border-radius: 5px;\n  width: 90%;\n  max-width: 500px;\n  position: relative;\n  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);\n  transform: scale(0.9); \/* Animasyon i\u00e7in ba\u015flang\u0131\u00e7 durumu *\/\n  transition: transform 0.3s ease-out;\n}\n\n.selur-modal:target .modal-content {\n  transform: scale(1); \/* Modal a\u00e7\u0131ld\u0131\u011f\u0131nda b\u00fcy\u00fct *\/\n}\n\n.modal-close {\n  position: absolute;\n  top: 10px;\n  right: 20px;\n  color: #333;\n  text-decoration: none;\n  font-size: 2em;\n}\n\n.modal-close:hover {\n  color: #000;\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rneklerde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, modern CSS \u00f6zellikleriyle temel UI bile\u015fenlerini JavaScript'e ba\u011f\u0131ml\u0131 olmadan olu\u015fturmak olduk\u00e7a m\u00fcmk\u00fcnd\u00fcr. Selur'un temelindeki bu prensipler, web projelerinizin daha h\u0131zl\u0131, daha eri\u015filebilir ve daha kolay y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda Selur: H\u0131zl\u0131 E-Ticaret Filtrelemesi ve Dinamik \u0130\u00e7erik Ge\u00e7i\u015fleri<\/h2>\n<p>Saf CSS UI motoru Selur'un sadece teorik bir konsept olmad\u0131\u011f\u0131n\u0131, aksine ger\u00e7ek d\u00fcnya uygulamalar\u0131nda somut avantajlar sundu\u011funu g\u00f6stermek i\u00e7in iki \u00f6nemli vaka analizi inceleyelim: h\u0131zl\u0131 ve JavaScript'siz bir e-ticaret \u00fcr\u00fcn filtreleme sistemi ve modern bloglarda kullan\u0131lan dinamik i\u00e7erik ge\u00e7i\u015fleri.<\/p>\n<h3>1. Vaka Analizi: Y\u00fcksek Performansl\u0131 E-Ticaret \u00dcr\u00fcn Filtrelemesi (JavaScript Olmadan)<\/h3>\n<p>Bir e-ticaret sitesinde \u00fcr\u00fcn filtrelemesi, kullan\u0131c\u0131 deneyiminin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r. Geleneksel olarak bu t\u00fcr filtrelemeler, her filtre se\u00e7ene\u011fi de\u011fi\u015ftirildi\u011finde sunucuya bir AJAX iste\u011fi g\u00f6nderen veya JavaScript ile DOM'u manip\u00fcle eden karma\u015f\u0131k kodlarla yap\u0131l\u0131r. Ancak Selur felsefesiyle, bu s\u00fcreci tamamen istemci taraf\u0131nda ve sadece CSS kullanarak ger\u00e7ekle\u015ftirebiliriz, \u00f6zellikle de belirli filtre se\u00e7eneklerinin say\u0131s\u0131 s\u0131n\u0131rl\u0131ysa.<\/p>\n<p><strong>Problem:<\/strong> Kullan\u0131c\u0131lar, \u00fcr\u00fcn kategorilerini, fiyat aral\u0131klar\u0131n\u0131 veya markalar\u0131 se\u00e7tiklerinde sayfay\u0131 yeniden y\u00fcklemeden veya yava\u015f JavaScript animasyonlar\u0131 beklemeden an\u0131nda filtrelenmi\u015f sonu\u00e7lar\u0131 g\u00f6rmek istiyorlar.<\/p>\n<p><strong>Selur \u00c7\u00f6z\u00fcm\u00fc:<\/strong> CSS'in <code>:checked<\/code> pseudo-class'\u0131, <code>~<\/code> (genel karde\u015f se\u00e7ici) ve g\u00fc\u00e7l\u00fc <code>:has()<\/code> se\u00e7icisi (taray\u0131c\u0131 deste\u011fi artt\u0131k\u00e7a daha da etkili hale geliyor) kullan\u0131larak dinamik filtreleme olu\u015fturulabilir.<\/p>\n<p>HTML taraf\u0131nda, her filtre se\u00e7ene\u011fi i\u00e7in bir <code><input type=\"checkbox\"><\/code> kullan\u0131r\u0131z. Her \u00fcr\u00fcn kart\u0131na da ilgili filtre de\u011ferlerini belirten CSS s\u0131n\u0131flar\u0131 veya veri nitelikleri ekleriz. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-html\">\n<div class=\"product-filters\">\n  <input type=\"checkbox\" id=\"cat-elektronik\" data-filter=\"elektronik\">\n  <label for=\"cat-elektronik\">Elektronik<\/label>\n\n  <input type=\"checkbox\" id=\"brand-a\" data-filter=\"brand-a\">\n  <label for=\"brand-a\">Marka A<\/label>\n  <!-- Di\u011fer filtreler buraya -->\n<\/div>\n\n<div class=\"product-listing\">\n  <div class=\"product-card elektronik\">\u00dcr\u00fcn 1<\/div>\n  <div class=\"product-card elektronik brand-a\">\u00dcr\u00fcn 2<\/div>\n  <div class=\"product-card brand-a\">\u00dcr\u00fcn 3<\/div>\n  <!-- Daha fazla \u00fcr\u00fcn -->\n<\/div>\n    <\/pre>\n<p><\/code><\/p>\n<p>CSS taraf\u0131nda ise, her \u00fcr\u00fcn kart\u0131n\u0131 ba\u015flang\u0131\u00e7ta gizleriz. Sonra, bir filtre checkbox'\u0131 i\u015faretlendi\u011finde, ilgili filtreye sahip \u00fcr\u00fcn kartlar\u0131n\u0131 g\u00f6steririz. <code>:has()<\/code> se\u00e7icisi, ebeveyn elementin belirli bir alt elementi i\u00e7erip i\u00e7ermedi\u011fini kontrol etmemizi sa\u011flayarak inan\u0131lmaz bir esneklik sunar:<\/p>\n<pre><code class=\"language-css\">\n\/* T\u00fcm \u00fcr\u00fcn kartlar\u0131n\u0131 ba\u015flang\u0131\u00e7ta gizle *\/\n.product-listing .product-card {\n  display: none;\n}\n\n\/* Hi\u00e7bir filtre se\u00e7ili de\u011filse, t\u00fcm \u00fcr\u00fcnleri g\u00f6ster (iste\u011fe ba\u011fl\u0131) *\/\n\/* Daha karma\u015f\u0131k kombinasyonlar i\u00e7in :has() ve CSS de\u011fi\u015fkenleri gerekebilir *\/\n\n\/* Elektronik filtresi se\u00e7iliyse *\/\n#cat-elektronik:checked ~ .product-listing .product-card.elektronik {\n  display: block; \/* Sadece elektronik \u00fcr\u00fcnleri g\u00f6ster *\/\n}\n\n\/* Marka A filtresi se\u00e7iliyse *\/\n#brand-a:checked ~ .product-listing .product-card.brand-a {\n  display: block; \/* Sadece Marka A \u00fcr\u00fcnlerini g\u00f6ster *\/\n}\n\n\/* Birden fazla filtre se\u00e7ildi\u011finde AND\/OR mant\u0131\u011f\u0131 i\u00e7in daha karma\u015f\u0131k CSS veya JS ihtiyac\u0131 do\u011fabilir.\n   Ancak basit \"g\u00f6ster\/gizle\" senaryolar\u0131nda CSS \u00e7ok g\u00fc\u00e7l\u00fcd\u00fcr.\n   CSS de\u011fi\u015fkenleri ve kombinat\u00f6rler ile daha karma\u015f\u0131k filtreler de y\u00f6netilebilir.\n*\/\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131m, kullan\u0131c\u0131 bir filtreyi se\u00e7ti\u011finde veya se\u00e7imini kald\u0131rd\u0131\u011f\u0131nda sayfan\u0131n an\u0131nda g\u00fcncellenmesini sa\u011flar, \u00e7\u00fcnk\u00fc taray\u0131c\u0131 sadece CSS kurallar\u0131n\u0131 yeniden de\u011ferlendirir. Bu, milisaniyeler i\u00e7inde ger\u00e7ekle\u015fen bir i\u015flemdir ve kullan\u0131c\u0131ya ak\u0131c\u0131 bir deneyim sunar. \u00d6zellikle mobil cihazlarda, JavaScript y\u00fck\u00fcn\u00fcn azalmas\u0131 performans\u0131 ciddi \u015fekilde art\u0131r\u0131r.<\/p>\n<h3>2. Vaka Analizi: Modern Bloglarda Sekme (Tab) Tabanl\u0131 \u0130\u00e7erik Ge\u00e7i\u015fleri<\/h3>\n<p>Bloglar veya dok\u00fcmantasyon siteleri gibi yerlerde, farkl\u0131 i\u00e7erik b\u00f6l\u00fcmlerini d\u00fczenlemek i\u00e7in sekme aray\u00fczleri s\u0131k\u00e7a kullan\u0131l\u0131r. Kullan\u0131c\u0131 bir sekmeyi t\u0131klad\u0131\u011f\u0131nda, ilgili i\u00e7eri\u011fin g\u00f6r\u00fcn\u00fcr hale gelmesi beklenir. Bu da geleneksel olarak JavaScript ile y\u00f6netilen bir etkile\u015fimdir.<\/p>\n<p><strong>Problem:<\/strong> Kullan\u0131c\u0131lar, farkl\u0131 sekme i\u00e7eriklerine ge\u00e7i\u015f yaparken gecikme veya ani s\u0131\u00e7ramalar ya\u015famadan p\u00fcr\u00fczs\u00fcz bir deneyim arzu ederler.<\/p>\n<p><strong>Selur \u00c7\u00f6z\u00fcm\u00fc:<\/strong> T\u0131pk\u0131 modal \u00f6rne\u011findeki gibi, bu senaryo i\u00e7in de <code>:target<\/code> pseudo-class'\u0131 m\u00fckemmel bir \u00e7\u00f6z\u00fcmd\u00fcr. Her sekme i\u00e7eri\u011fine benzersiz bir ID veririz ve sekme ba\u015fl\u0131klar\u0131n\u0131 bu ID'lere i\u015faret eden ba\u011flant\u0131lar yapar\u0131z.<\/p>\n<p>HTML yap\u0131s\u0131:<\/p>\n<pre><code class=\"language-html\">\n<div class=\"selur-tabs\">\n  <div class=\"tab-headers\">\n    <a href=\"#tab1\" class=\"tab-link\">B\u00f6l\u00fcm 1<\/a>\n    <a href=\"#tab2\" class=\"tab-link\">B\u00f6l\u00fcm 2<\/a>\n    <a href=\"#tab3\" class=\"tab-link\">B\u00f6l\u00fcm 3<\/a>\n  <\/div>\n\n  <div class=\"tab-content-wrapper\">\n    <div id=\"tab1\" class=\"tab-pane\">\n      <h3>B\u00f6l\u00fcm 1 \u0130\u00e7eri\u011fi<\/h3>\n      <p>Bu ilk sekmenin i\u00e7eri\u011fidir. Olduk\u00e7a bilgilendirici metinler i\u00e7eriyor.<\/p>\n    <\/div>\n\n    <div id=\"tab2\" class=\"tab-pane\">\n      <h3>B\u00f6l\u00fcm 2 \u0130\u00e7eri\u011fi<\/h3>\n      <p>\u0130kinci sekmenin farkl\u0131 bir konusu var. Daha fazla detay i\u00e7in t\u0131klay\u0131n!<\/p>\n    <\/div>\n\n    <div id=\"tab3\" class=\"tab-pane\">\n      <h3>B\u00f6l\u00fcm 3 \u0130\u00e7eri\u011fi<\/h3>\n      <p>Son sekmede ise genel bir \u00f6zet ve sonraki ad\u0131mlar yer al\u0131yor.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n    <\/pre>\n<p><\/code><\/p>\n<p>CSS ile sekme i\u00e7eri\u011fini ba\u015flang\u0131\u00e7ta gizleriz ve URL'deki hash de\u011feri ile e\u015fle\u015fen <code>tab-pane<\/code>'i g\u00f6steririz. \u0130lk sekmenin varsay\u0131lan olarak g\u00f6r\u00fcn\u00fcr olmas\u0131n\u0131 sa\u011flamak i\u00e7in ufak bir hile yapabiliriz veya ilk sekmeyi sayfa y\u00fcklendi\u011finde JavaScript ile <code>:target<\/code>'a y\u00f6nlendirebiliriz (burada Selur prensibinden biraz sapma olabilir ancak istisnai durumlar i\u00e7in makuld\u00fcr).<\/p>\n<pre><code class=\"language-css\">\n.tab-pane {\n  display: none; \/* T\u00fcm sekme i\u00e7eriklerini ba\u015flang\u0131\u00e7ta gizle *\/\n  padding: 15px;\n  border: 1px solid #ddd;\n  border-top: none;\n}\n\n\/* Varsay\u0131lan olarak ilk sekmenin g\u00f6r\u00fcn\u00fcr olmas\u0131n\u0131 sa\u011flamak i\u00e7in (e\u011fer URL hash'i yoksa) *\/\n\/* Bu durum i\u00e7in JavaScript'e k\u00fc\u00e7\u00fck bir ba\u015flang\u0131\u00e7 y\u00f6nlendirmesi yap\u0131labilir veya\n   CSS'te ilk \u00f6\u011feyi her zaman g\u00f6steren bir kural yaz\u0131labilir, ancak bu durum\n   di\u011fer sekmelerin <code>:target<\/code> taraf\u0131ndan ge\u00e7ersiz k\u0131l\u0131nmas\u0131n\u0131 gerektirir.\n   Genellikle ilk sekme aktif olarak i\u015faretlenir. *\/\n\n\/* URL'deki hash ile e\u015fle\u015fen sekme i\u00e7eri\u011fini g\u00f6ster *\/\n.tab-pane:target {\n  display: block;\n}\n\n.tab-headers {\n  display: flex;\n  margin-bottom: -1px; \/* \u0130\u00e7erik kenarl\u0131\u011f\u0131 ile birle\u015fsin *\/\n}\n\n.tab-link {\n  padding: 10px 15px;\n  text-decoration: none;\n  color: #333;\n  border: 1px solid #ddd;\n  border-bottom: none;\n  background-color: #f9f9f9;\n  border-radius: 5px 5px 0 0;\n  margin-right: 5px;\n  transition: background-color 0.3s;\n}\n\n.tab-link:hover {\n  background-color: #eee;\n}\n\n\/* Aktif sekme i\u00e7in stil (URL hash'i ile e\u015fle\u015fen link) *\/\n\/* Bu, sadece CSS ile zor olabilir. Genellikle JS ile \"active\" s\u0131n\u0131f\u0131 eklenir.\n   Ancak, linkin kendi <code>:target<\/code>'\u0131n\u0131n stilini de\u011fi\u015ftirebiliriz: *\/\n.tab-link:focus { \/* Klavye navigasyonu i\u00e7in faydal\u0131 *\/\n  outline: 2px solid blue;\n}\n\n\/* E\u011fer linkin kendisi :target olsayd\u0131 i\u015fe yarard\u0131, ancak content :target.\n   Bu durumda, ya bir JS deste\u011fi (k\u00fc\u00e7\u00fck) ya da checkbox hilesi kullanmak daha uygun olur. *\/\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu senaryolar, Selur'un temel prensiplerinin, web projelerine nas\u0131l daha fazla h\u0131z, basitlik ve geli\u015ftirici kontrol\u00fc getirebilece\u011fini net bir \u015fekilde ortaya koymaktad\u0131r. CSS'in sadece stil vermekle kalmay\u0131p, ayn\u0131 zamanda karma\u015f\u0131k etkile\u015fimleri de y\u00f6netebilen g\u00fc\u00e7l\u00fc bir \"aray\u00fcz motoru\" olarak nas\u0131l kullan\u0131labilece\u011fini g\u00f6stermektedir.<\/p>\n<h2>Selur ve Mobil Uyumlu Tasar\u0131m: Responsive Web Geli\u015ftirmede CSS'in G\u00fcc\u00fcn\u00fc Kullanmak<\/h2>\n<p>Mobil cihazlar\u0131n web trafi\u011findeki pay\u0131n\u0131n artmas\u0131yla birlikte, responsive (duyarl\u0131) tasar\u0131m art\u0131k bir l\u00fcks de\u011fil, bir zorunluluk haline geldi. Selur'un temelindeki saf CSS yakla\u015f\u0131m\u0131, mobil uyumlu tasar\u0131mlar olu\u015fturmak i\u00e7in inan\u0131lmaz bir esneklik ve kontrol sunar. JavaScript framework'lerinin karma\u015f\u0131kl\u0131\u011f\u0131na veya \u00fc\u00e7\u00fcnc\u00fc taraf responsive k\u00fct\u00fcphanelerinin ba\u011f\u0131ml\u0131l\u0131klar\u0131na ihtiya\u00e7 duymadan, yaln\u0131zca CSS'in do\u011fal yetenekleriyle her ekrana ve cihaza m\u00fckemmel \u015fekilde adapte olan aray\u00fczler tasarlayabiliriz. Bu b\u00f6l\u00fcmde, Selur'un mobil uyumlu tasar\u0131m stratejilerini ve modern CSS tekniklerini, \u00f6zellikle de <code>media query<\/code>'leri ve <code>@container<\/code> sorgular\u0131n\u0131 (taray\u0131c\u0131 deste\u011fi artt\u0131k\u00e7a) nas\u0131l kullanabilece\u011fimizi derinlemesine inceleyece\u011fiz.<\/p>\n<h3>1. Temel Responsive Stratejiler: Mobil \u00d6ncelikli Yakla\u015f\u0131m<\/h3>\n<p>Selur, mobil \u00f6ncelikli (mobile-first) tasar\u0131m felsefesini benimsemeyi te\u015fvik eder. Bu, en k\u00fc\u00e7\u00fck ekranlar i\u00e7in stil kurallar\u0131n\u0131 yazmaya ba\u015flamak ve daha sonra <code>min-width<\/code> temelli <code>media query<\/code>'ler ile daha b\u00fcy\u00fck ekranlar i\u00e7in stil kurallar\u0131n\u0131 geni\u015fletmek anlam\u0131na gelir. Bu yakla\u015f\u0131m, mobil cihazlar i\u00e7in sadece gerekli olan CSS'in y\u00fcklenmesini sa\u011flayarak performans\u0131 art\u0131r\u0131r ve a\u015f\u0131r\u0131 stil karma\u015fas\u0131n\u0131 \u00f6nler.<\/p>\n<p>\u00d6rnek olarak, bir kart listesi d\u00fc\u015f\u00fcnelim. Mobil'de tek s\u00fctunlu, tablette iki s\u00fctunlu ve masa\u00fcst\u00fcnde \u00fc\u00e7 s\u00fctunlu bir d\u00fczene sahip olmas\u0131n\u0131 isteyebiliriz:<\/p>\n<pre><code class=\"language-css\">\n\/* Mobil \u00f6ncelikli: T\u00fcm kartlar varsay\u0131lan olarak tek s\u00fctun (Flexbox veya Grid ile) *\/\n.selur-card-grid {\n  display: grid;\n  grid-template-columns: 1fr; \/* Mobil cihazlarda tek s\u00fctun *\/\n  gap: 20px;\n  padding: 15px;\n}\n\n\/* Tablet ve \u00fczeri cihazlar i\u00e7in (\u00f6rne\u011fin 768px'ten itibaren) *\/\n@media screen and (min-width: 768px) {\n  .selur-card-grid {\n    grid-template-columns: repeat(2, 1fr); \/* \u0130ki s\u00fctun *\/\n  }\n}\n\n\/* Masa\u00fcst\u00fc ve \u00fczeri cihazlar i\u00e7in (\u00f6rne\u011fin 1024px'ten itibaren) *\/\n@media screen and (min-width: 1024px) {\n  .selur-card-grid {\n    grid-template-columns: repeat(3, 1fr); \/* \u00dc\u00e7 s\u00fctun *\/\n    max-width: 1200px;\n    margin: 0 auto; \/* Ortala *\/\n  }\n}\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu basit <code>media query<\/code>'ler, farkl\u0131 ekran boyutlar\u0131na g\u00f6re d\u00fczenin otomatik olarak ayarlanmas\u0131n\u0131 sa\u011flar. \u0130\u00e7erik resimleri i\u00e7in <code>max-width: 100%; height: auto;<\/code> kullanarak da resimlerin kapsay\u0131c\u0131lar\u0131na s\u0131\u011fmas\u0131n\u0131 garantileyebiliriz.<\/p>\n<h3>2. \u0130leri D\u00fczey Responsive: <code>@container<\/code> Sorgular\u0131 ile Bile\u015fen D\u00fczeyinde Duyarl\u0131l\u0131k<\/h3>\n<p><code>media query<\/code>'ler genellikle viewport boyutuna g\u00f6re stil uygular. Ancak Selur felsefesinde, bazen bir bile\u015fenin kendi kapsay\u0131c\u0131s\u0131n\u0131n boyutuna g\u00f6re tepki vermesi gerekir, viewport'un de\u011fil. \u0130\u015fte burada CSS <code>@container<\/code> sorgular\u0131 devreye girer. Hen\u00fcz t\u00fcm taray\u0131c\u0131larda tam deste\u011fi olmasa da, gelece\u011fin responsive tasar\u0131m standard\u0131 olarak kabul edilmektedir ve Selur'un ileri d\u00fczey yetenekleri aras\u0131nda \u00f6nemli bir yer tutar.<\/p>\n<p>Varsayal\u0131m ki bir kart bile\u015fenimiz var ve bu kart, bir ana sayfa \u0131zgaras\u0131nda k\u00fc\u00e7\u00fck g\u00f6r\u00fcnebilirken, bir yan panelde daha geni\u015f yer kaplad\u0131\u011f\u0131nda farkl\u0131 bir d\u00fczen almas\u0131 gerekebilir. <code>@container<\/code> ile bu duruma CSS ile tepki verebiliriz:<\/p>\n<pre><code class=\"language-css\">\n\/* Kapsay\u0131c\u0131 elemente container \u00f6zelli\u011fi verilir *\/\n.sidebar, .main-content-grid {\n  container-type: inline-size;\n  container-name: content-area;\n}\n\n\/* Kart bile\u015fenimizin varsay\u0131lan stili *\/\n.selur-product-card {\n  display: flex;\n  flex-direction: column; \/* Dikey d\u00fczen varsay\u0131lan *\/\n  border: 1px solid #eee;\n  padding: 1em;\n}\n\n\/* E\u011fer kart\u0131n kapsay\u0131c\u0131s\u0131 (parent'\u0131) 300px'ten geni\u015fse, yatay d\u00fczen al *\/\n@container content-area (min-width: 300px) {\n  .selur-product-card {\n    flex-direction: row;\n    align-items: center;\n  }\n\n  .selur-product-card img {\n    max-width: 100px; \/* K\u00fc\u00e7\u00fck resim *\/\n    margin-right: 1em;\n  }\n}\n\n\/* E\u011fer kart\u0131n kapsay\u0131c\u0131s\u0131 600px'ten geni\u015fse, daha b\u00fcy\u00fck resim ve farkl\u0131 hizalama *\/\n@container content-area (min-width: 600px) {\n  .selur-product-card {\n    flex-direction: row;\n    align-items: flex-start;\n  }\n\n  .selur-product-card img {\n    max-width: 150px; \/* Daha b\u00fcy\u00fck resim *\/\n    margin-right: 1.5em;\n  }\n}\n    <\/pre>\n<p><\/code><\/p>\n<div class=\"uzman-ipucu\">\n        Uzman \u0130pucu: <code>@container<\/code> sorgular\u0131, bile\u015fen bazl\u0131 tasar\u0131m sistemleri i\u00e7in oyun de\u011fi\u015ftiricidir. Bir bile\u015feni farkl\u0131 yerlerde kullan\u0131rken her seferinde manuel olarak responsive ayarlamalar yapmak yerine, bile\u015fen kendi kendine adaptasyon sa\u011flayabilir. Bu, Selur'un sundu\u011fu mod\u00fclerli\u011fi ve yeniden kullan\u0131labilirli\u011fi art\u0131r\u0131r.\n    <\/div>\n<p>Selur, responsive tasar\u0131m\u0131n temelini olu\u015fturan bu CSS yeteneklerini sonuna kadar kullan\u0131r. JavaScript'e gereksinim duymadan, yaln\u0131zca HTML'in anlamsal yap\u0131s\u0131 ve CSS'in g\u00fc\u00e7l\u00fc kurallar\u0131yla, her cihazda ve her ekran boyutunda kusursuz \u00e7al\u0131\u015fan, eri\u015filebilir ve y\u00fcksek performansl\u0131 aray\u00fczler olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr. Bu, web'in ger\u00e7ekten \"s\u00f6zle\u015fmesini yeniden kazanmak\" ve CSS'i bir stil arac\u0131ndan \u00e7ok bir aray\u00fcz motoru olarak konumland\u0131rmak anlam\u0131na gelir.<\/p>\n<h2>Sonu\u00e7: Selur ile Web'in Gelece\u011fini Yeniden \u015eekillendirmek<\/h2>\n<p>Bu makale boyunca Selur'un ne oldu\u011funu, neden saf CSS yakla\u015f\u0131m\u0131n\u0131n performans, eri\u015filebilirlik ve geli\u015ftirici deneyimi a\u00e7\u0131s\u0131ndan kritik oldu\u011funu, temel UI bile\u015fenlerini nas\u0131l olu\u015fturabilece\u011fimizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l fark yaratt\u0131\u011f\u0131n\u0131 detayl\u0131ca ele ald\u0131k. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, modern CSS, bir aray\u00fcz\u00fc sadece stilize etmekle kalmay\u0131p, ayn\u0131 zamanda karma\u015f\u0131k etkile\u015fimleri ve dinamik davran\u0131\u015flar\u0131 y\u00f6netebilen g\u00fc\u00e7l\u00fc bir \"aray\u00fcz motoru\" olarak konumland\u0131r\u0131labilir. Selur, web'in ilkelerini yeniden hat\u0131rlatan, HTML'i yap\u0131 i\u00e7in, CSS'i sunum ve etkile\u015fim i\u00e7in, JavaScript'i ise sadece en karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131 i\u00e7in kullanan bir yakla\u015f\u0131md\u0131r. Bu felsefe, daha hafif, daha h\u0131zl\u0131, daha g\u00fcvenli ve her \u015feyden \u00f6nemlisi daha eri\u015filebilir web deneyimleri yaratman\u0131n anahtar\u0131n\u0131 sunar.<\/p>\n<p>Web geli\u015ftirme, her ge\u00e7en g\u00fcn daha da karma\u015f\u0131k hale gelirken, Selur gibi yakla\u015f\u0131mlar bize temel prensiplere geri d\u00f6nme ve gereksiz karma\u015f\u0131kl\u0131ktan ka\u00e7\u0131nma \u015fans\u0131 verir. JavaScript'in yeri tart\u0131\u015f\u0131lmaz olmakla birlikte, onun her sorunun tek \u00e7\u00f6z\u00fcm\u00fc olmad\u0131\u011f\u0131n\u0131 anlamak, daha dengeli ve s\u00fcrd\u00fcr\u00fclebilir bir web ekosistemi in\u015fa etmemizi sa\u011flayacakt\u0131r. Gelecekte, taray\u0131c\u0131 teknolojileri geli\u015ftik\u00e7e ve CSS daha da g\u00fc\u00e7lendik\u00e7e (\u00f6rne\u011fin <code>@container<\/code> sorgular\u0131n\u0131n yayg\u0131nla\u015fmas\u0131yla), Selur'un potansiyeli daha da artacakt\u0131r. Geli\u015ftiricilerin bu yakla\u015f\u0131mlar\u0131 ke\u015ffetmeleri, deneysel \u00e7al\u0131\u015fmalar yapmalar\u0131 ve mevcut projelerine entegre etmeleri, web'in gelece\u011fini daha parlak ve kullan\u0131c\u0131 dostu bir y\u00f6ne ta\u015f\u0131yacakt\u0131r. Unutmay\u0131n, bazen en iyi \u00e7\u00f6z\u00fcm, zaten elimizdeki ara\u00e7lar\u0131 en verimli \u015fekilde kullanmaktan ge\u00e7er.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li>\n<h4>Selur tamamen JavaScript'i ortadan kald\u0131r\u0131yor mu?<\/h4>\n<p>Hay\u0131r, Selur'un amac\u0131 JavaScript'i tamamen ortadan kald\u0131rmak de\u011fil, onun kullan\u0131m\u0131n\u0131 optimize etmektir. Selur, aray\u00fcz\u00fcn g\u00f6rsel ve temel etkile\u015fimsel katman\u0131n\u0131 CSS ile y\u00f6neterek, JavaScript'i ger\u00e7ekten karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131, veri manip\u00fclasyonu veya sunucu ileti\u015fimi gibi y\u00fcksek de\u011ferli g\u00f6revler i\u00e7in serbest b\u0131rak\u0131r. JavaScript hala dinamik veri y\u00fckleme, form do\u011frulama veya karma\u015f\u0131k animasyonlar i\u00e7in kullan\u0131labilir, ancak sadece gerekti\u011finde.<\/p>\n<\/li>\n<li>\n<h4>Selur'u hangi projelerde kullanmal\u0131y\u0131m?<\/h4>\n<p>Selur, \u00f6zellikle y\u00fcksek performans\u0131n, eri\u015filebilirli\u011fin ve d\u00fc\u015f\u00fck ba\u011f\u0131ml\u0131l\u0131\u011f\u0131n \u00f6n planda oldu\u011fu projeler i\u00e7in idealdir. Kurumsal web siteleri, bloglar, dok\u00fcmantasyon portallar\u0131, basit e-ticaret siteleri veya k\u00fc\u00e7\u00fck\/orta \u00f6l\u00e7ekli web uygulamalar\u0131 gibi alanlarda m\u00fckemmel sonu\u00e7lar verebilir. Ayn\u0131 zamanda, mevcut JavaScript a\u011f\u0131rl\u0131kl\u0131 bir projede bile, belirli UI bile\u015fenlerini Selur felsefesiyle yeniden yazarak performans iyile\u015ftirmeleri elde edebilirsiniz.<\/p>\n<\/li>\n<li>\n<h4>Saf CSS \u00e7\u00f6z\u00fcmlerinin taray\u0131c\u0131 deste\u011fi ne durumda?<\/h4>\n<p>Makalede bahsedilen Flexbox, Grid, CSS De\u011fi\u015fkenleri, <code>:hover<\/code>, <code>:active<\/code>, <code>:target<\/code>, <code>::before<\/code>, <code>::after<\/code> gibi temel CSS \u00f6zellikleri modern taray\u0131c\u0131larda geni\u015f \u00e7apl\u0131 deste\u011fe sahiptir. <code>:has()<\/code> se\u00e7icisi gibi daha yeni \u00f6zellikler de h\u0131zla yayg\u0131nla\u015fmaktad\u0131r. <code>@container<\/code> sorgular\u0131 gibi en yeni eklemelerin tam taray\u0131c\u0131 deste\u011fi biraz zaman alabilir, ancak ilerlemeler h\u0131zl\u0131d\u0131r. Her zaman <a href=\"https:\/\/caniuse.com\" target=\"_blank\">caniuse.com<\/a> gibi kaynaklardan g\u00fcncel taray\u0131c\u0131 deste\u011fini kontrol etmek en iyisidir.<\/p>\n<\/li>\n<li>\n<h4>CSS ile her \u015feyi yapmak m\u00fcmk\u00fcn m\u00fc? Ne zaman JavaScript'e ba\u015fvurmal\u0131y\u0131m?<\/h4>\n<p>CSS ile bir\u00e7ok \u015feyi yapmak m\u00fcmk\u00fcnd\u00fcr, ancak her zaman en pratik veya en eri\u015filebilir \u00e7\u00f6z\u00fcm olmayabilir. JavaScript'e ba\u015fvurman\u0131z gereken ba\u015fl\u0131ca durumlar \u015funlard\u0131r:<\/p>\n<ul>\n<li>Sunucu ile ger\u00e7ek zamanl\u0131 veri al\u0131\u015fveri\u015fi (AJAX, WebSockets).<\/li>\n<li>Karma\u015f\u0131k hesaplamalar veya client-side veri i\u015fleme.<\/li>\n<li>Kullan\u0131c\u0131n\u0131n cihaz\u0131yla do\u011frudan etkile\u015fim (kamera, mikrofon, GPS).<\/li>\n<li>Karma\u015f\u0131k, zamanlamal\u0131 animasyonlar veya oyunlar.<\/li>\n<li>Eri\u015filebilirlik i\u00e7in karma\u015f\u0131k odak y\u00f6netimi veya ARIA niteliklerinin dinamik g\u00fcncellenmesi.<\/li>\n<\/ul>\n<p>                Selur felsefesi, bu t\u00fcr durumlar d\u0131\u015f\u0131nda m\u00fcmk\u00fcn oldu\u011funca CSS'i tercih etmenizi \u00f6nerir.\n            <\/p>\n<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework&#8217;lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript&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-33720","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>\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#039;t Know You Needed<\/title>\n<meta name=\"description\" content=\"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework&#039;lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve &quot;web&#039;in \u00f6z\u00fcne&quot; daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web&#039;in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web&#039;in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS&#039;in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\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\/\ud83e\uddea-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#039;t Know You Needed\" \/>\n<meta property=\"og:description\" content=\"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework&#039;lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve &quot;web&#039;in \u00f6z\u00fcne&quot; daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web&#039;in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web&#039;in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS&#039;in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/\ud83e\uddea-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-06T05:01:05+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=\"22 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#8217;t Know You Needed\",\"datePublished\":\"2025-11-06T05:01:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\"},\"wordCount\":3519,\"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\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\",\"name\":\"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn't Know You Needed\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-06T05:01:05+00:00\",\"description\":\"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework'lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve \\\"web'in \u00f6z\u00fcne\\\" daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web'in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web'in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS'in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#8217;t Know You Needed\"}]},{\"@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":"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn't Know You Needed","description":"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework'lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve \"web'in \u00f6z\u00fcne\" daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web'in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web'in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS'in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?","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\/\ud83e\uddea-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/","og_locale":"tr_TR","og_type":"article","og_title":"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn't Know You Needed","og_description":"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework'lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve \"web'in \u00f6z\u00fcne\" daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web'in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web'in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS'in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?","og_url":"https:\/\/fatihsoysal.com\/blog\/\ud83e\uddea-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-06T05:01:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"22 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#8217;t Know You Needed","datePublished":"2025-11-06T05:01:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/"},"wordCount":3519,"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\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/","url":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/","name":"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn't Know You Needed","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-06T05:01:05+00:00","description":"Web geli\u015ftirme d\u00fcnyas\u0131nda, s\u00fcrekli artan karma\u015f\u0131kl\u0131k ve JavaScript tabanl\u0131 framework'lerin y\u00fckseli\u015fiyle birlikte, aray\u00fcz geli\u015ftirmede neredeyse her \u015feyin JavaScript \u00fczerinden yap\u0131ld\u0131\u011f\u0131 bir d\u00f6neme girdik. Peki ya daha basit, daha performansl\u0131 ve \"web'in \u00f6z\u00fcne\" daha sad\u0131k bir yol olsayd\u0131? \u0130\u015fte tam da bu noktada, web'in temel s\u00f6zle\u015fmesini yeniden ele almay\u0131 hedefleyen, saf CSS tabanl\u0131 bir kullan\u0131c\u0131 aray\u00fcz\u00fc motoru olan Selur sahneye \u00e7\u0131k\u0131yor. Modern web'in y\u00fck\u00fcn\u00fc hafifletmek, eri\u015filebilirli\u011fi art\u0131rmak ve geli\u015ftiricilere daha \u00f6zerk bir kontrol sunmak i\u00e7in CSS'in inan\u0131lmaz g\u00fcc\u00fcn\u00fc nas\u0131l kullanabilece\u011fimizi ke\u015ffetmeye haz\u0131r m\u0131s\u0131n\u0131z?","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/%f0%9f%a7%aa-selur-reclaiming-the-web-contract-the-pure-css-ui-engine-you-didnt-know-you-needed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"\ud83e\uddea Selur: Reclaiming the Web Contract\u2014The Pure CSS UI Engine You Didn&#8217;t Know You Needed"}]},{"@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\/33720","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=33720"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33720\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}