24 puan yazan GN⁺ 2025-12-29 | 5 yorum | WhatsApp'ta paylaş
  • Web’de JS’ye bağımlı işlevleri HTML/CSS ile değiştirmek için güncel yöntemler tanıtılıyor
  • details·summary, datalist, popover gibi standart öğeler kullanılarak akordeon, otomatik tamamlama, modal ve ekran dışı gezinme uygulanabiliyor
  • Bu yaklaşım indirme·değerlendirme·bellek kullanımını azaltarak performansı ve kullanıcı deneyimini iyileştiriyor
  • Her özellik için CodePen örnekleri, MDN belgeleri, tarayıcı uyumluluk bilgileri birlikte sunuluyor
  • JS yalnızca gerçekten gerekli alanlarda kullanılmalı ve HTML/CSS’nin gelişmiş yeteneklerinden aktif biçimde yararlanılmalı

HTML ve CSS ile JS işlevlerini değiştirmek

  • Uzun süre boyunca JavaScript, HTML ve CSS ile gerçekleştirilemeyen işlevleri üstlendi
    • Ancak HTML ve CSS’nin yetenekleri genişledikçe, bazı JS işlevleri yerel web teknolojileriyle değiştirilebiliyor
  • JS; indirme, açma, değerlendirme ve bellekte tutulma gerektirdiğinden, mümkün olan işlevleri HTML/CSS’ye taşımak daha verimli
  • Önerilen yön, JS’nin karmaşık mantığa odaklanması ve basit UI kontrolünün HTML/CSS’ye bırakılması

Akordeon / genişletilebilir içerik paneli

  • details ve summary öğeleriyle JS olmadan akordeon uygulanabiliyor
    • İçerik tıklamayla açılıp kapanabiliyor ve varsayılan durum open özniteliğiyle belirlenebiliyor
    • Aynı name özniteliği kullanılırsa aynı anda yalnızca bir panel açık kalıyor
  • CSS ile stil verilebilir veya JS ile açılma/kapanma kontrol edilebilir
  • İlgili kaynaklar: MDN details belgesi, CodePen örneği, tarayıcı uyumluluk tablosu

Otomatik tamamlama önerili giriş alanı

  • input ve datalist birleşimiyle otomatik filtrelenen açılır liste uygulanabiliyor
    • Yazı girildiğinde öneri listesi otomatik olarak filtreleniyor
    • Metin dışında number, time gibi çeşitli giriş türleri de destekleniyor
  • Firefox şu anda yalnızca metin tabanlı girişleri destekliyor ve mobil erişilebilirlik kısıtları bulunuyor
  • İlgili kaynaklar: MDN datalist belgesi, SitePoint eğitimi, tarayıcı uyumluluk tablosu

Modal / popover

  • popover ve popovertarget öznitelikleriyle JS’siz modal ve popover uygulanabiliyor
    • auto, hint, manual olmak üzere üç mod sunuluyor
    • auto, dışarı tıklama veya ESC ile kapanıyor; manual ise yalnızca elle kapatılıyor
  • Firefox ve iOS, hint modunu desteklemiyor
  • İlgili kaynaklar: MDN popover belgesi, Chrome blogu, CodePen örneği, erişilebilirlikle ilgili video

Ekran dışı gezinme / içerik

  • popover özelliği kullanılarak ekran dışı gezinme menüsü uygulanabiliyor
    • Anlamsal yapı için nav öğesi kullanılıyor, CSS translate ile ekran içine ve dışına taşınıyor
    • Dışarı tıklanınca kapanıyor; popover="manual" ile elle kapatma ayarlanabiliyor
    • Arka planı yarı saydam yapmak için ::backdrop sözde öğesi kullanılabiliyor
  • İlgili kaynaklar: MDN Popover API, Chrome blogu, CodePen örneği

Sonuç

  • JS’nin gücü kabul edilse de, yalnızca gerekli yerlerde kullanılmalı
  • HTML/CSS’deki son gelişmelerle birlikte JS’siz birçok alternatif ortaya çıktı
  • Daha fazla örnek, yazarın “Replace JS with No-JS or Lo-JS Options” başlıklı blog yazısında görülebilir
  • JS’yi en aza indirme ve performans optimizasyonu yoluyla kullanıcı deneyiminin iyileştirilmesi vurgulanıyor

5 yorum

 
labeldock 2025-12-29

Böyle girişimler bazen benim de gereğinden fazla mühendislik yapıp yapmadığımı sorgulamamı sağlıyor, ama zengin gereksinimlerin olduğu gerçek iş pratiği açısından bakınca daha çok bir güç gösterisine benziyor.

 
skageektp 2025-12-29

> ** ve ** öğeleriyle JS olmadan akordeon uygulanabiliyor

Sanki içeriğin bir kısmı kesilmiş gibi görünüyor

 
xguru 2025-12-29

Düzelttim~!

 
shakespeares 2025-12-29

Sınırları oldukça belirgin ve yapay zeka devreye girdiği anda... böyle bir refactoring yapmaya gerçekten gerek var mı?
JS içeriğini engelleme gibi kısımlar da dikkate alındı mı?

 
GN⁺ 2025-12-29
Hacker News yorumları
  • Tüm örneklerin inline verilmemiş olması üzücü
    CodePen bağlantısı yerine HTML alternatif örnekleri doğrudan sayfaya koysaydı çok daha ikna edici olurdu
    • Kesinlikle katılıyorum. Bazen FooMaker v1.0 gibi bir şeye tıklıyorsun, ama ortada normal bir kullanım örneği yok; sadece alakasız istisna durumları gösteriliyor
    • İlk başta bunun 25 yıllık bir yazı olduğunu sandım. Dither uygulanmış GIF tam anlamıyla nostaljik
    • Ben de inline örnek olmayınca sinirlendim ama bunun bir konuk blog yazısı olması durumunda bir nebze anlaşılabilir
  • <details> / <summary> etiketlerinin potansiyeli gerçekten çok büyük
    Neredeyse her şeyi yapabiliyorlar ama çoğu bileşen kütüphanesi bunu görmezden geliyor
    aria özniteliklerine de gerek yok ve erişilebilirlik varsayılan olarak geliyor
    • Eskiden cmd+f aramasının kapalı details içindeki metni bulamaması bir eksiydi ama artık bu, hidden="until-found" özniteliği ve event'lerle çözülebiliyor
    • Yalnız animasyon tarafı zor. Tarayıcılar display geçişleri için transition'ı varsayılan olarak desteklemiyor
    • ctrl+f ile arama yapınca details'ın otomatik açılması gibi bir özellik de var
    • <details>, GitHub gibi Markdown tabanlı sitelerde de çalışıyor. Uzun log'ları katlayıp düzenli biçimde paylaşabiliyorsun
    • Saf CSS ile de yapılabiliyor. Örneğin Go101 dokümanında “+” düğmesine basarak genişletebiliyorsun. Ayrıca bir sekme paneli demosu da var. Modern CSS'in gücünü gösteriyor
  • Mesele “no JavaScript” değil; HTML'in zaten unutulmuş özelliklerle (formlar, diyaloglar, doğrulama, gezinme vb.) ilgileniyor olması
    “You Don’t Need JavaScript” kitabını yazarken hissettiğim şey, JS'nin yeni özellikler eklemekten çok platformun mevcut yeteneklerini tamamlaması olduğu yönündeydi
    • Keşke böyle kitaplar daha fazla olsa. Sadece framework öğrenmeye değil, problem çözme odaklı kitaplara ihtiyaç var
    • Eskiden tarayıcı desteği yetersizdi, bu yüzden geliştiriciler geçici çözümler üretti ve onlar da standart gibi yerleşti diye düşünüyorum. Son dönemde CSS özelliklerinin çıkış hızı arttı; masonry düzeni de artık deneysel aşamaya girdi
  • HTML'in çoğu özelliği harika ama <input> ve <datalist> gerçek kullanımda yetersiz kalıyor
    Kullanıcılar yazım hatası toleransı, yardımcı metin, mobil UX gibi şeyler bekliyor ama datalist bunları karşılamıyor
    • Datalist'te görünen metinle gerçek değeri (value) ayıramamak en sinir bozucu şey
    • Çoğu durumda select daha uygun ama select'te arama özelliği yok
    • Varsayılan stil çok hantal ve çirkin
    • Android'de açılır liste hiç görünmüyor
    • Cihazdan cihaza farklı çalıştığı için sonunda yine JS eklemek gerekiyor. Sadece HTML ile uyumluluk cehennemine düşüyorsun
  • Son zamanlarda birkaç frontend mülakatına girdim, hâlâ sadece React merkezli JS becerileri ölçülüyor
    HTML'in anlamsal kullanımı ya da erişilebilirlik neredeyse hiç önemsenmiyor
    • Ekip React kullanıyorsa, DOM API'yi doğrudan kullanan biri takıma uygunluk açısından elenebilir
    • Ayrı bir CSS dosyası kullanınca bileşenler çok daha temiz oluyor. Tailwind kötü değil ama mülakatta kullanmak istemem
    • HN dışında HTML saflığıyla ilgilenen insan neredeyse yok
  • Sadece CodePen bağlantısı verip örnekleri doğrudan sayfaya koymamaları rahatsız edici
    “Sadece HTML ile yapalım” diyen bir yazının harici bir servise dayanması çelişkili hissettiriyor
    • Benim açımdan sorun değil. CodePen, yer imi ve sözdizimi vurgulama açısından kullanışlı. Ama link rot riski var
    • Yine de inline örnekleri ve CodePen bağlantılarını birlikte sunmaları daha iyi olurdu
    • HTML'i öne çıkarırken 2 MB'lık bir CodePen arayüzü yükletmek, UX açısından ironik
  • Özelleştirilebilir select özelliği yakında geliyor, o yüzden umutluyum
    WHATWG stage 3'te ve JS tabanlı dropdown'ların kabus gibi implementasyonlarının yerini alabilir gibi görünüyor
    Ayrıntı için Chrome blog yazısına bakılabilir
  • Saf HTML tanıdık ve rahat ama bugün işlevsel web uygulamaları yapmak için sınırları var
    HTMX ya da Phoenix LiveView gibi alternatifleri de kullandım ama onlar da tam çözüm değil
    Sonunda modern JS'yi kabullenmenin daha gerçekçi olduğu hissine kapılıyorum
    • Az miktarda JS bile, sadece HTML kullanmaya göre seni çok daha ileri götürüyor. Günümüz web'inde JS'nin aşırı kullanımı yüzünden kullanılabilirlikte bozulma ciddi seviyede
    • HTMX'i gereğinden fazla karmaşık düşünüyor olabilirler. Sunucu durumunu temel alıp hx-select / hx-target kullanırsan işi basit tutmak mümkün
    • <marquee> etiketi e-ticaret sitelerindeki yatay kaydırma için uygundu ama şimdi bunu zorla JS ile yapıyoruz. Keşke HTML daha fazla UI desenini yerleşik olarak desteklese
    • React'te marquee efekti yapmaya çalışırken çok token harcadım. Kusursuz bir döngü de değildi, sadece animasyon hilesiydi
    • Elixir ve Phoenix kullanıyorsan Gleam'i de düşünebilirsin. JS'ye derleniyor
  • HTML ve JS, farklı amaçlara sahip araçlar
    Karmaşık web uygulamaları için JS şart ama sadece HTML ile de yapılabilecek çok alan var
    • Google Earth gibi bir şeyin tabii ki JS'ye ihtiyacı var ama Gmail seviyesinde bir şeyin HTML ile de yapılabileceğini düşünüyorum. Tarayıcı üreticilerinin trendleri ve abartılı söylemleri HTML'in gelişimini engelliyor
    • htmx, JS ile tamamlayıcı bir ilişkiye sahip. Mesele JSON yerine yapılandırılmış hipermetin alışverişi yapmak. Gerçekten de htmx + biraz JS ile oldukça karmaşık uygulamaları hızlıca yaptım
    • HTML'in varsayılan olarak daha fazla özellik sunması lazım. Örneğin HTTP verb desteği, girdi denetimlerinin iyileştirilmesi gibi
    • JS ağırlıklı birçok site aslında htmx ile rahatça değiştirilebilir. Araç seçimi biraz alışkanlık meselesi
  • “JS'nin akordeon ya da gezinme menülerini yönetmesi gerekmiyor” sözüne katılıyorum
    Ama JS artık veri toplama ve reklam takibinin temel aracı hâline geldi
    JS olmadan da büyük teknoloji şirketlerinin aynı düzeyde gözetim ve reklam hizmeti sunup sunamayacağını merak ediyorum
    Sonuçta JS'ye duyulan tepki, basit bir teknik meseleden ziyade reklam ekosistemine duyulan güvensizlikten kaynaklanıyor