Takip et

🧪 Selur: Reclaiming the Web Contract—The Pure CSS UI Engine You Didn’t Know You Needed

Web geliştirme dünyasında, sürekli artan karmaşıklık ve JavaScript tabanlı framework’lerin yükselişiyle birlikte, arayüz geliştirmede neredeyse her şeyin JavaScript üzerinden yapıldığı bir döneme girdik. Peki ya daha basit, daha performanslı ve “web’in özüne” daha sadık bir yol olsaydı? İşte tam da bu noktada, web’in temel sözleşmesini yeniden ele almayı hedefleyen, saf CSS tabanlı bir kullanıcı arayüzü motoru olan Selur sahneye çıkıyor. Modern web’in yükünü hafifletmek, erişilebilirliği artırmak ve geliştiricilere daha özerk bir kontrol sunmak için CSS’in inanılmaz gücünü nasıl kullanabileceğimizi keşfetmeye hazır mısınız?

Günümüz web geliştirme pratikleri, maalesef, çoğu zaman bir JavaScript şişkinliğiyle karakterize ediliyor. Küçük etkileşimler, basit görsel değişiklikler veya durum yönetimi için bile devasa JavaScript kütüphaneleri ve framework’ler kullanmak, sayfa yükleme sürelerini uzatıyor, performans sorunlarına yol açıyor ve hatta erişilebilirlik konusunda sıkıntılar yaratabiliyor. Selur, bu durumu kökten değiştirmeyi hedefleyen bir felsefe ve bu felsefeyi gerçeğe dönüştüren bir “saf CSS UI motoru” konseptidir. Adeta bir dijital kılıç gibi, web’in temel işlevselliğini oluşturan HTML, CSS ve JavaScript arasındaki “web sözleşmesini” keskin bir şekilde yeniden tanımlıyor.

Geleneksel web sözleşmesi kabaca şöyle işler: HTML içeriği ve yapıyı sağlar, CSS içeriği şekillendirir ve sunar, JavaScript ise etkileşimi ve dinamik davranışları ekler. Ancak son yıllarda JavaScript’in yetki alanı o kadar genişledi ki, çoğu zaman CSS’in veya hatta HTML’in doğal olarak halledebileceği görevleri bile üstlenmeye başladı. İşte Selur’un temel iddiası tam da bu noktada devreye giriyor: Web’in görsel sunumu ve temel etkileşimleri, JavaScript’e gerek kalmadan, yalnızca ve yalnızca CSS ile yönetilmelidir. Bu, JavaScript’in tamamen ortadan kalktığı anlamına gelmiyor; aksine, JavaScript’i gerçekten karmaşık iş mantığı, veri yönetimi veya sunucuyla iletişim gibi yüksek değerli görevler için ayrılmış, “son çare” bir araç haline getirmek anlamına geliyor.

Selur, modern CSS’in sunduğu gelişmiş yetenekleri (Flexbox, Grid, CSS Değişkenleri, Pseudo-sınıflar, ::before/::after, :has() seçici, @container sorguları ve daha fazlası) bir araya getirerek, karmaşık kullanıcı arayüzlerini ve etkileşimleri şaşırtıcı bir çeviklik ve performansla oluşturmayı mümkün kılar. Örneğin, bir modal pencerenin açılıp kapanması, bir menünün genişleyip daralması veya bir tab yapısının sekme değiştirmesi gibi yaygın UI bileşenleri, çoğu zaman sadece CSS kullanarak ve HTML’deki uygun yapısal işaretlemelerle elde edilebilir. Bu yaklaşım, sayfa yükleme hızını dramatik bir şekilde iyileştirir çünkü tarayıcının daha az JavaScript kodu işlemesi gerekir. Ayrıca, daha az JavaScript, daha az güvenlik açığı ve daha kolay bakım anlamına da gelebilir. Selur, web’in hız, erişilebilirlik ve sürdürülebilirlik gibi temel prensiplerine geri dönerek, geliştiricilere daha minimalist ve güçlü bir araç seti sunar. Bu, gerçekten de web geliştirmenin geleceği için düşünülmesi gereken radikal ama bir o kadar da mantıklı bir yaklaşımdır. Web’in orijinal sözleşmesine sadık kalarak, daha sağlam ve esnek deneyimler yaratabiliriz.

Neden Saf CSS? Performans, Erişilebilirlik ve Geliştirici Deneyimi İçin Nasıl Bir Fark Yaratır?

Saf CSS yaklaşımı, sadece kod yazma biçimimizle ilgili bir tercih olmanın ötesinde, web projelerinin temel taşlarını etkileyen bir dizi derin fayda sunar. Öncelikle, performans, günümüz web siteleri için kritik bir başarı faktörüdür ve Selur’un savunduğu saf CSS, bu alanda çığır açar. Tarayıcılar, JavaScript’i ayrıştırmak, yürütmek ve DOM’u manipüle etmek için önemli bir zaman harcarlar. Bu süreçler, özellikle düşük güçlü cihazlarda veya yavaş internet bağlantılarında kullanıcı deneyimini olumsuz etkileyebilir. Saf CSS tabanlı bir UI motoru, JavaScript yükünü azaltarak veya tamamen ortadan kaldırarak, tarayıcının bu karmaşık işlemleri yapma ihtiyacını ortadan kaldırır. Bu durum, sayfaların daha hızlı yüklenmesine, etkileşimlerin daha akıcı olmasına ve genel yanıt sürelerinin iyileşmesine yol açar. Bir e-ticaret sitesinde ürün listelemeleri arasındaki hızlı geçişler veya bir haber portalındaki makaleler arasında anında gezinme gibi senaryolarda, bu performans artışı doğrudan kullanıcı memnuniyetine dönüşür.

Erişilebilirlik (Accessibility – A11y) ise, modern web geliştirmenin vazgeçilmez bir parçasıdır ve saf CSS burada da önemli avantajlar sunar. JavaScript’in aşırı kullanımı, ekran okuyucular ve diğer yardımcı teknolojilerle uyumluluk sorunlarına yol açabilir. Örneğin, JavaScript ile oluşturulmuş karmaşık modal pencereler veya custom select kutuları, düzgün bir şekilde WAI-ARIA nitelikleriyle donatılmazsa, klavye navigasyonu veya ekran okuyucular için birer kabusa dönüşebilir. Saf CSS çözümleri ise, genellikle HTML’in semantik yapısını daha az bozar ve bu sayede yardımcı teknolojilerle daha doğal bir şekilde uyum sağlar. CSS ile bir menüyü açıp kapatırken, sadece görünürlüğünü değiştirmek, temel HTML yapısını ve odak yönetimini etkilemez. Bu da, görme engelliler, motor engelliler veya bilişsel engelliler gibi farklı ihtiyaçları olan kullanıcılar için daha kapsayıcı bir deneyim yaratır. Bir web formunda hata mesajlarının CSS ile dinamik olarak gösterilmesi, input elementinin odağını korurken ve ekran okuyucu tarafından doğru bir şekilde okunurken, kullanıcıya anında geri bildirim sağlar.

Son olarak, geliştirici deneyimi (Developer Experience – DX) açısından da Selur benzeri bir yaklaşım önemli farklar yaratır. JavaScript kütüphanelerinin ve framework’lerinin sürekli değişen ekosistemi, geliştiriciler için sürekli bir öğrenme ve adaptasyon süreci anlamına gelir. Yeni bir proje başladığında, hangi framework’ü seçeceğinize karar vermek, bağımlılıkları yönetmek ve performans optimizasyonlarıyla uğraşmak bile başlı başına bir iştir. Saf CSS, bu karmaşıklığı ortadan kaldırarak, geliştiricilerin daha temel ve evrensel bir web teknolojisine odaklanmasını sağlar. CSS, tarayıcılar tarafından doğrudan anlaşılan ve yorumlanan bir dildir; ekstra bir derleme veya dönüştürme adımı gerektirmez (Sass/Less gibi pre-processor’lar ayrı tutulursa). Bu, daha hızlı geliştirme döngüleri, daha az hata ayıklama ve daha kolay bakım anlamına gelir. Özellikle uzun ömürlü projelerde, CSS’in kararlılığı ve standartlaşmış yapısı, kod tabanının zaman içinde daha yönetilebilir kalmasına yardımcı olur. Yeni bir geliştirici ekibe katıldığında, framework’e özel bilgileri öğrenmek yerine doğrudan CSS’e odaklanarak daha hızlı adapte olabilir. Dolayısıyla, saf CSS’in sunduğu bu üçlü fayda (performans, erişilebilirlik, geliştirici deneyimi) Selur’u modern web geliştirme manzarasında görmezden gelinemez bir aktör haline getiriyor.

Selur ile Temel UI Bileşenleri Nasıl Oluşturulur? Pratik Örneklerle Adım Adım Rehber

Selur felsefesini benimseyen bir geliştirici olarak, temel UI bileşenlerini sadece CSS kullanarak nasıl hayata geçirebileceğinizi merak ediyor olmalısınız. Modern CSS’in sunduğu imkanlar, artık JavaScript’e ihtiyaç duymadan birçok etkileşimli öğeyi tasarlamamıza olanak tanıyor. Bu bölümde, basit bir açılır menü (dropdown) ve bir modal pencereyi saf CSS ile nasıl oluşturacağımızı adım adım inceleyelim. Bu örnekler, Selur’un gücünü ve web sözleşmesini yeniden tanımlama potansiyelini açıkça gösterecektir.

1. Saf CSS ile Açılır Menü (Dropdown) Nasıl Yapılır?

Açılır menüler, web sitelerinde gezinmeyi kolaylaştıran yaygın bir UI öğesidir. Geleneksel olarak JavaScript ile yönetilse de, CSS’in :hover ve opacity gibi özelliklerini kullanarak etkileyici bir açılır menü oluşturabiliriz.

İlk olarak HTML yapımızı oluşturalım. Bir üst menü öğesi ve onun içinde gizlenmiş alt menü öğeleri için iç içe listeler kullanacağız:



    

Şimdi bu HTML yapısına hayat verecek CSS kodlarına geçelim. dropdown-content sınıfına sahip menüyü başlangıçta gizleyeceğiz ve dropdown sınıfına sahip öğe üzerine gelindiğinde görünür hale getireceğiz:


.dropdown {
  position: relative; /* Alt menünün konumlandırılması için */
  display: inline-block;
}

.dropdown-content {
  display: none; /* Başlangıçta gizli */
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
  list-style: none;
  padding: 0;
  margin: 0;
}

.dropdown-content li a {
  color: black;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
  text-align: left;
}

.dropdown-content li a:hover {
  background-color: #f1f1f1;
}

.dropdown:hover .dropdown-content {
  display: block; /* Üst menüye gelindiğinde alt menüyü göster */
}
    

Uzman İpucu: Erişilebilirlik için, klavye ile navigasyonun da düzgün çalıştığından emin olun. :focus-within pseudo-class'ını kullanarak klavye ile odaklanıldığında da menünün açılmasını sağlayabilirsiniz.

2. Saf CSS ile Modal Pencere Nasıl Oluşturulur?

Modal pencereler, kullanıcı dikkatini belirli bir içeriğe çekmek için kullanılır. Genellikle JavaScript ile tetiklenirler, ancak :target pseudo-class'ı veya gizli checkbox hilesi ile saf CSS kullanarak da oluşturulabilirler. :target kullanımı daha temizdir ve URL'yi değiştirerek çalışır.

HTML yapısı olarak, bir modal tetikleyici bağlantı ve modal içeriğinin kendisi gereklidir. Modal'ın id'si, tetikleyici bağlantının href'i ile eşleşmelidir:


Modali Aç

Şimdi CSS kodlarına bakalım. Modal'ı başlangıçta gizleyeceğiz ve :target seçicisi ile URL'deki hash değeri modalın ID'siyle eşleştiğinde görünür hale getireceğiz:


.selur-modal {
  visibility: hidden; /* Başlangıçta gizli */
  opacity: 0;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.7);
  transition: opacity 0.3s, visibility 0.3s;
  z-index: 1000;
}

.selur-modal:target {
  visibility: visible; /* URL #selurModal olduğunda görünür */
  opacity: 1;
}

.modal-content {
  background: white;
  padding: 2em;
  border-radius: 5px;
  width: 90%;
  max-width: 500px;
  position: relative;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);
  transform: scale(0.9); /* Animasyon için başlangıç durumu */
  transition: transform 0.3s ease-out;
}

.selur-modal:target .modal-content {
  transform: scale(1); /* Modal açıldığında büyüt */
}

.modal-close {
  position: absolute;
  top: 10px;
  right: 20px;
  color: #333;
  text-decoration: none;
  font-size: 2em;
}

.modal-close:hover {
  color: #000;
}
    

Bu örneklerde görüldüğü gibi, modern CSS özellikleriyle temel UI bileşenlerini JavaScript'e bağımlı olmadan oluşturmak oldukça mümkündür. Selur'un temelindeki bu prensipler, web projelerinizin daha hızlı, daha erişilebilir ve daha kolay yönetilebilir olmasını sağlar.

Gerçek Dünya Senaryolarında Selur: Hızlı E-Ticaret Filtrelemesi ve Dinamik İçerik Geçişleri

Saf CSS UI motoru Selur'un sadece teorik bir konsept olmadığını, aksine gerçek dünya uygulamalarında somut avantajlar sunduğunu göstermek için iki önemli vaka analizi inceleyelim: hızlı ve JavaScript'siz bir e-ticaret ürün filtreleme sistemi ve modern bloglarda kullanılan dinamik içerik geçişleri.

1. Vaka Analizi: Yüksek Performanslı E-Ticaret Ürün Filtrelemesi (JavaScript Olmadan)

Bir e-ticaret sitesinde ürün filtrelemesi, kullanıcı deneyiminin vazgeçilmez bir parçasıdır. Geleneksel olarak bu tür filtrelemeler, her filtre seçeneği değiştirildiğinde sunucuya bir AJAX isteği gönderen veya JavaScript ile DOM'u manipüle eden karmaşık kodlarla yapılır. Ancak Selur felsefesiyle, bu süreci tamamen istemci tarafında ve sadece CSS kullanarak gerçekleştirebiliriz, özellikle de belirli filtre seçeneklerinin sayısı sınırlıysa.

Problem: Kullanıcılar, ürün kategorilerini, fiyat aralıklarını veya markaları seçtiklerinde sayfayı yeniden yüklemeden veya yavaş JavaScript animasyonları beklemeden anında filtrelenmiş sonuçları görmek istiyorlar.

Selur Çözümü: CSS'in :checked pseudo-class'ı, ~ (genel kardeş seçici) ve güçlü :has() seçicisi (tarayıcı desteği arttıkça daha da etkili hale geliyor) kullanılarak dinamik filtreleme oluşturulabilir.

HTML tarafında, her filtre seçeneği için bir kullanırız. Her ürün kartına da ilgili filtre değerlerini belirten CSS sınıfları veya veri nitelikleri ekleriz. Örneğin:


Ürün 1
Ürün 2
Ürün 3

CSS tarafında ise, her ürün kartını başlangıçta gizleriz. Sonra, bir filtre checkbox'ı işaretlendiğinde, ilgili filtreye sahip ürün kartlarını gösteririz. :has() seçicisi, ebeveyn elementin belirli bir alt elementi içerip içermediğini kontrol etmemizi sağlayarak inanılmaz bir esneklik sunar:


/* Tüm ürün kartlarını başlangıçta gizle */
.product-listing .product-card {
  display: none;
}

/* Hiçbir filtre seçili değilse, tüm ürünleri göster (isteğe bağlı) */
/* Daha karmaşık kombinasyonlar için :has() ve CSS değişkenleri gerekebilir */

/* Elektronik filtresi seçiliyse */
#cat-elektronik:checked ~ .product-listing .product-card.elektronik {
  display: block; /* Sadece elektronik ürünleri göster */
}

/* Marka A filtresi seçiliyse */
#brand-a:checked ~ .product-listing .product-card.brand-a {
  display: block; /* Sadece Marka A ürünlerini göster */
}

/* Birden fazla filtre seçildiğinde AND/OR mantığı için daha karmaşık CSS veya JS ihtiyacı doğabilir.
   Ancak basit "göster/gizle" senaryolarında CSS çok güçlüdür.
   CSS değişkenleri ve kombinatörler ile daha karmaşık filtreler de yönetilebilir.
*/
    

Bu yaklaşım, kullanıcı bir filtreyi seçtiğinde veya seçimini kaldırdığında sayfanın anında güncellenmesini sağlar, çünkü tarayıcı sadece CSS kurallarını yeniden değerlendirir. Bu, milisaniyeler içinde gerçekleşen bir işlemdir ve kullanıcıya akıcı bir deneyim sunar. Özellikle mobil cihazlarda, JavaScript yükünün azalması performansı ciddi şekilde artırır.

2. Vaka Analizi: Modern Bloglarda Sekme (Tab) Tabanlı İçerik Geçişleri

Bloglar veya dokümantasyon siteleri gibi yerlerde, farklı içerik bölümlerini düzenlemek için sekme arayüzleri sıkça kullanılır. Kullanıcı bir sekmeyi tıkladığında, ilgili içeriğin görünür hale gelmesi beklenir. Bu da geleneksel olarak JavaScript ile yönetilen bir etkileşimdir.

Problem: Kullanıcılar, farklı sekme içeriklerine geçiş yaparken gecikme veya ani sıçramalar yaşamadan pürüzsüz bir deneyim arzu ederler.

Selur Çözümü: Tıpkı modal örneğindeki gibi, bu senaryo için de :target pseudo-class'ı mükemmel bir çözümdür. Her sekme içeriğine benzersiz bir ID veririz ve sekme başlıklarını bu ID'lere işaret eden bağlantılar yaparız.

HTML yapısı:


Bölüm 1 İçeriği

Bu ilk sekmenin içeriğidir. Oldukça bilgilendirici metinler içeriyor.

Bölüm 2 İçeriği

İkinci sekmenin farklı bir konusu var. Daha fazla detay için tıklayın!

Bölüm 3 İçeriği

Son sekmede ise genel bir özet ve sonraki adımlar yer alıyor.

CSS ile sekme içeriğini başlangıçta gizleriz ve URL'deki hash değeri ile eşleşen tab-pane'i gösteririz. İlk sekmenin varsayılan olarak görünür olmasını sağlamak için ufak bir hile yapabiliriz veya ilk sekmeyi sayfa yüklendiğinde JavaScript ile :target'a yönlendirebiliriz (burada Selur prensibinden biraz sapma olabilir ancak istisnai durumlar için makuldür).


.tab-pane {
  display: none; /* Tüm sekme içeriklerini başlangıçta gizle */
  padding: 15px;
  border: 1px solid #ddd;
  border-top: none;
}

/* Varsayılan olarak ilk sekmenin görünür olmasını sağlamak için (eğer URL hash'i yoksa) */
/* Bu durum için JavaScript'e küçük bir başlangıç yönlendirmesi yapılabilir veya
   CSS'te ilk öğeyi her zaman gösteren bir kural yazılabilir, ancak bu durum
   diğer sekmelerin :target tarafından geçersiz kılınmasını gerektirir.
   Genellikle ilk sekme aktif olarak işaretlenir. */

/* URL'deki hash ile eşleşen sekme içeriğini göster */
.tab-pane:target {
  display: block;
}

.tab-headers {
  display: flex;
  margin-bottom: -1px; /* İçerik kenarlığı ile birleşsin */
}

.tab-link {
  padding: 10px 15px;
  text-decoration: none;
  color: #333;
  border: 1px solid #ddd;
  border-bottom: none;
  background-color: #f9f9f9;
  border-radius: 5px 5px 0 0;
  margin-right: 5px;
  transition: background-color 0.3s;
}

.tab-link:hover {
  background-color: #eee;
}

/* Aktif sekme için stil (URL hash'i ile eşleşen link) */
/* Bu, sadece CSS ile zor olabilir. Genellikle JS ile "active" sınıfı eklenir.
   Ancak, linkin kendi :target'ının stilini değiştirebiliriz: */
.tab-link:focus { /* Klavye navigasyonu için faydalı */
  outline: 2px solid blue;
}

/* Eğer linkin kendisi :target olsaydı işe yarardı, ancak content :target.
   Bu durumda, ya bir JS desteği (küçük) ya da checkbox hilesi kullanmak daha uygun olur. */
    

Bu senaryolar, Selur'un temel prensiplerinin, web projelerine nasıl daha fazla hız, basitlik ve geliştirici kontrolü getirebileceğini net bir şekilde ortaya koymaktadır. CSS'in sadece stil vermekle kalmayıp, aynı zamanda karmaşık etkileşimleri de yönetebilen güçlü bir "arayüz motoru" olarak nasıl kullanılabileceğini göstermektedir.

Selur ve Mobil Uyumlu Tasarım: Responsive Web Geliştirmede CSS'in Gücünü Kullanmak

Mobil cihazların web trafiğindeki payının artmasıyla birlikte, responsive (duyarlı) tasarım artık bir lüks değil, bir zorunluluk haline geldi. Selur'un temelindeki saf CSS yaklaşımı, mobil uyumlu tasarımlar oluşturmak için inanılmaz bir esneklik ve kontrol sunar. JavaScript framework'lerinin karmaşıklığına veya üçüncü taraf responsive kütüphanelerinin bağımlılıklarına ihtiyaç duymadan, yalnızca CSS'in doğal yetenekleriyle her ekrana ve cihaza mükemmel şekilde adapte olan arayüzler tasarlayabiliriz. Bu bölümde, Selur'un mobil uyumlu tasarım stratejilerini ve modern CSS tekniklerini, özellikle de media query'leri ve @container sorgularını (tarayıcı desteği arttıkça) nasıl kullanabileceğimizi derinlemesine inceleyeceğiz.

1. Temel Responsive Stratejiler: Mobil Öncelikli Yaklaşım

Selur, mobil öncelikli (mobile-first) tasarım felsefesini benimsemeyi teşvik eder. Bu, en küçük ekranlar için stil kurallarını yazmaya başlamak ve daha sonra min-width temelli media query'ler ile daha büyük ekranlar için stil kurallarını genişletmek anlamına gelir. Bu yaklaşım, mobil cihazlar için sadece gerekli olan CSS'in yüklenmesini sağlayarak performansı artırır ve aşırı stil karmaşasını önler.

Örnek olarak, bir kart listesi düşünelim. Mobil'de tek sütunlu, tablette iki sütunlu ve masaüstünde üç sütunlu bir düzene sahip olmasını isteyebiliriz:


/* Mobil öncelikli: Tüm kartlar varsayılan olarak tek sütun (Flexbox veya Grid ile) */
.selur-card-grid {
  display: grid;
  grid-template-columns: 1fr; /* Mobil cihazlarda tek sütun */
  gap: 20px;
  padding: 15px;
}

/* Tablet ve üzeri cihazlar için (örneğin 768px'ten itibaren) */
@media screen and (min-width: 768px) {
  .selur-card-grid {
    grid-template-columns: repeat(2, 1fr); /* İki sütun */
  }
}

/* Masaüstü ve üzeri cihazlar için (örneğin 1024px'ten itibaren) */
@media screen and (min-width: 1024px) {
  .selur-card-grid {
    grid-template-columns: repeat(3, 1fr); /* Üç sütun */
    max-width: 1200px;
    margin: 0 auto; /* Ortala */
  }
}
    

Bu basit media query'ler, farklı ekran boyutlarına göre düzenin otomatik olarak ayarlanmasını sağlar. İçerik resimleri için max-width: 100%; height: auto; kullanarak da resimlerin kapsayıcılarına sığmasını garantileyebiliriz.

2. İleri Düzey Responsive: @container Sorguları ile Bileşen Düzeyinde Duyarlılık

media query'ler genellikle viewport boyutuna göre stil uygular. Ancak Selur felsefesinde, bazen bir bileşenin kendi kapsayıcısının boyutuna göre tepki vermesi gerekir, viewport'un değil. İşte burada CSS @container sorguları devreye girer. Henüz tüm tarayıcılarda tam desteği olmasa da, geleceğin responsive tasarım standardı olarak kabul edilmektedir ve Selur'un ileri düzey yetenekleri arasında önemli bir yer tutar.

Varsayalım ki bir kart bileşenimiz var ve bu kart, bir ana sayfa ızgarasında küçük görünebilirken, bir yan panelde daha geniş yer kapladığında farklı bir düzen alması gerekebilir. @container ile bu duruma CSS ile tepki verebiliriz:


/* Kapsayıcı elemente container özelliği verilir */
.sidebar, .main-content-grid {
  container-type: inline-size;
  container-name: content-area;
}

/* Kart bileşenimizin varsayılan stili */
.selur-product-card {
  display: flex;
  flex-direction: column; /* Dikey düzen varsayılan */
  border: 1px solid #eee;
  padding: 1em;
}

/* Eğer kartın kapsayıcısı (parent'ı) 300px'ten genişse, yatay düzen al */
@container content-area (min-width: 300px) {
  .selur-product-card {
    flex-direction: row;
    align-items: center;
  }

  .selur-product-card img {
    max-width: 100px; /* Küçük resim */
    margin-right: 1em;
  }
}

/* Eğer kartın kapsayıcısı 600px'ten genişse, daha büyük resim ve farklı hizalama */
@container content-area (min-width: 600px) {
  .selur-product-card {
    flex-direction: row;
    align-items: flex-start;
  }

  .selur-product-card img {
    max-width: 150px; /* Daha büyük resim */
    margin-right: 1.5em;
  }
}
    

Uzman İpucu: @container sorguları, bileşen bazlı tasarım sistemleri için oyun değiştiricidir. Bir bileşeni farklı yerlerde kullanırken her seferinde manuel olarak responsive ayarlamalar yapmak yerine, bileşen kendi kendine adaptasyon sağlayabilir. Bu, Selur'un sunduğu modülerliği ve yeniden kullanılabilirliği artırır.

Selur, responsive tasarımın temelini oluşturan bu CSS yeteneklerini sonuna kadar kullanır. JavaScript'e gereksinim duymadan, yalnızca HTML'in anlamsal yapısı ve CSS'in güçlü kurallarıyla, her cihazda ve her ekran boyutunda kusursuz çalışan, erişilebilir ve yüksek performanslı arayüzler oluşturmak mümkündür. Bu, web'in gerçekten "sözleşmesini yeniden kazanmak" ve CSS'i bir stil aracından çok bir arayüz motoru olarak konumlandırmak anlamına gelir.

Sonuç: Selur ile Web'in Geleceğini Yeniden Şekillendirmek

Bu makale boyunca Selur'un ne olduğunu, neden saf CSS yaklaşımının performans, erişilebilirlik ve geliştirici deneyimi açısından kritik olduğunu, temel UI bileşenlerini nasıl oluşturabileceğimizi ve gerçek dünya senaryolarında nasıl fark yarattığını detaylıca ele aldık. Gördüğümüz gibi, modern CSS, bir arayüzü sadece stilize etmekle kalmayıp, aynı zamanda karmaşık etkileşimleri ve dinamik davranışları yönetebilen güçlü bir "arayüz motoru" olarak konumlandırılabilir. Selur, web'in ilkelerini yeniden hatırlatan, HTML'i yapı için, CSS'i sunum ve etkileşim için, JavaScript'i ise sadece en karmaşık iş mantığı için kullanan bir yaklaşımdır. Bu felsefe, daha hafif, daha hızlı, daha güvenli ve her şeyden önemlisi daha erişilebilir web deneyimleri yaratmanın anahtarını sunar.

Web geliştirme, her geçen gün daha da karmaşık hale gelirken, Selur gibi yaklaşımlar bize temel prensiplere geri dönme ve gereksiz karmaşıklıktan kaçınma şansı verir. JavaScript'in yeri tartışılmaz olmakla birlikte, onun her sorunun tek çözümü olmadığını anlamak, daha dengeli ve sürdürülebilir bir web ekosistemi inşa etmemizi sağlayacaktır. Gelecekte, tarayıcı teknolojileri geliştikçe ve CSS daha da güçlendikçe (örneğin @container sorgularının yaygınlaşmasıyla), Selur'un potansiyeli daha da artacaktır. Geliştiricilerin bu yaklaşımları keşfetmeleri, deneysel çalışmalar yapmaları ve mevcut projelerine entegre etmeleri, web'in geleceğini daha parlak ve kullanıcı dostu bir yöne taşıyacaktır. Unutmayın, bazen en iyi çözüm, zaten elimizdeki araçları en verimli şekilde kullanmaktan geçer.

Sıkça Sorulan Sorular

  • Selur tamamen JavaScript'i ortadan kaldırıyor mu?

    Hayır, Selur'un amacı JavaScript'i tamamen ortadan kaldırmak değil, onun kullanımını optimize etmektir. Selur, arayüzün görsel ve temel etkileşimsel katmanını CSS ile yöneterek, JavaScript'i gerçekten karmaşık iş mantığı, veri manipülasyonu veya sunucu iletişimi gibi yüksek değerli görevler için serbest bırakır. JavaScript hala dinamik veri yükleme, form doğrulama veya karmaşık animasyonlar için kullanılabilir, ancak sadece gerektiğinde.

  • Selur'u hangi projelerde kullanmalıyım?

    Selur, özellikle yüksek performansın, erişilebilirliğin ve düşük bağımlılığın ön planda olduğu projeler için idealdir. Kurumsal web siteleri, bloglar, dokümantasyon portalları, basit e-ticaret siteleri veya küçük/orta ölçekli web uygulamaları gibi alanlarda mükemmel sonuçlar verebilir. Aynı zamanda, mevcut JavaScript ağırlıklı bir projede bile, belirli UI bileşenlerini Selur felsefesiyle yeniden yazarak performans iyileştirmeleri elde edebilirsiniz.

  • Saf CSS çözümlerinin tarayıcı desteği ne durumda?

    Makalede bahsedilen Flexbox, Grid, CSS Değişkenleri, :hover, :active, :target, ::before, ::after gibi temel CSS özellikleri modern tarayıcılarda geniş çaplı desteğe sahiptir. :has() seçicisi gibi daha yeni özellikler de hızla yaygınlaşmaktadır. @container sorguları gibi en yeni eklemelerin tam tarayıcı desteği biraz zaman alabilir, ancak ilerlemeler hızlıdır. Her zaman caniuse.com gibi kaynaklardan güncel tarayıcı desteğini kontrol etmek en iyisidir.

  • CSS ile her şeyi yapmak mümkün mü? Ne zaman JavaScript'e başvurmalıyım?

    CSS ile birçok şeyi yapmak mümkündür, ancak her zaman en pratik veya en erişilebilir çözüm olmayabilir. JavaScript'e başvurmanız gereken başlıca durumlar şunlardır:

    • Sunucu ile gerçek zamanlı veri alışverişi (AJAX, WebSockets).
    • Karmaşık hesaplamalar veya client-side veri işleme.
    • Kullanıcının cihazıyla doğrudan etkileşim (kamera, mikrofon, GPS).
    • Karmaşık, zamanlamalı animasyonlar veya oyunlar.
    • Erişilebilirlik için karmaşık odak yönetimi veya ARIA niteliklerinin dinamik güncellenmesi.

    Selur felsefesi, bu tür durumlar dışında mümkün olduğunca CSS'i tercih etmenizi önerir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.