CSS Kaydırma Çubuğu Oluşturucu

Sonraki

Özel kaydırma çubukları eskiden üretici önekli sözde öğelerden oluşan bir kâbustu. Bugün scrollbar-color ve scrollbar-width, tüm modern tarayıcılardaki yaygın durumları karşılar: dar veya normal genişlik ve iki renkli tema (sürgü ve iz). Piksel düzeyinde denetim için (izin iç boşluğu, sürgünün yarıçapı, imleç üzerine gelme durumları) eski ::-webkit-scrollbar sözde öğeleri Chrome ve Safari’de hâlâ çalışır. Bu oluşturucu her iki sürümü de üretir ve doğru biçimde art arda uygular.

Bir kaydırma çubuğuna nasıl stil verilir

  1. 1

    Genişliği seçin

    Auto (platformun varsayılan genişliği), ince (daha dar) veya webkit kuralları aracılığıyla belirli bir piksel değeri.

  2. 2

    Sürgü ve iz renklerini ayarlayın

    Modern `scrollbar-color` iki renk alır. Webkit kuralları ayrı renk, yarıçap ve imleç üzerine gelme durumları sunar.

  3. 3

    İmleç üzerine gelme efekti ekleyin (isteğe bağlı)

    Sürgü, imleç üzerine gelince aydınlanır. `::-webkit-scrollbar-thumb:hover` ile çalışır.

  4. 4

    Kapsamı belirleyin

    `html` / `body` öğesine (tüm sayfa) veya yalnızca belirli bir kaydırılabilir kapsayıcıya uygulayın.

  5. 5

    CSS'i kopyalayın

    Birleştirilmiş modern ve webkit kuralları: her modern tarayıcıda düzgün bir yedekle çalışır.

Modern standart özellikler (2023 ve sonrası)

/* Applies to the element that scrolls */
html {
  scrollbar-width: thin;           /* auto | thin | none */
  scrollbar-color: #4f46e5 #e5e7eb; /* thumb track */
}

Tarayıcı desteği (2024):

  • scrollbar-width: Chrome 121+, Safari 18.2+, Firefox 64+.
  • scrollbar-color: Chrome 121+, Safari 18.2+, Firefox 64+.
  • scrollbar-gutter: stable: Chrome 94+, Safari 14+, Firefox 97+. Gerek olmadığında bile kaydırma çubuğu boşluğunu ayırarak yerleşim kaymasını önler.

Webkit sözde öğeleri (Chrome, Safari, eski Edge)

::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: #e5e7eb;
  border-radius: 10px;
}
::-webkit-scrollbar-thumb {
  background: #4f46e5;
  border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
  background: #3730a3;
}

Daha ayrıntılı denetim. width, dikey kaydırma çubuğunun genişliğini; height ise yatay kaydırma çubuğunun yüksekliğini ayarlar. Her iki yönde de kaydırılabilen kapsayıcılar için ikisini de ekleyin.

İki yaklaşımı art arda uygulayın

Önce modern kuralları, ardından her ikisini de işleyen tarayıcılar için bir geliştirme olarak webkit kurallarını belirtin:

.scroll-area {
  scrollbar-width: thin;
  scrollbar-color: #4f46e5 #e5e7eb;
}
.scroll-area::-webkit-scrollbar       { width: 8px; }
.scroll-area::-webkit-scrollbar-track { background: #e5e7eb; }
.scroll-area::-webkit-scrollbar-thumb {
  background: #4f46e5;
  border-radius: 4px;
  border: 2px solid #e5e7eb;
}

Firefox yalnızca modern scrollbar-* kurallarını dikkate alır. Chrome ve Safari, webkit kurallarını dikkate alır (bunlar modern kuralları geçersiz kılar, böylece davranış tutarlı kalır).

scrollbar-gutter içeriğin kaymasını önler

Ayrılmış bir boşluk olmadan, kaydırma çubuğu göründüğünde içerik yeniden akar (dinamik listelerde sık görülür). Çözüm:

html { scrollbar-gutter: stable; }
/* or */
html { scrollbar-gutter: stable both-edges; }

İçerik kaysa da kaymasa da kaydırma çubuğu yuvası ayrılır. both-edges, içeriği görsel olarak ortalamak için karşı tarafa eşleşen bir boşluk ekler.

Kaydırma çubuklarını tamamen gizleme

.no-scrollbar {
  scrollbar-width: none;           /* Firefox */
}
.no-scrollbar::-webkit-scrollbar { display: none; }  /* Chrome, Safari */

Dikkatli olun: kaydırma çubuğunu gizlemek, kullanıcıların içeriğin kaydırılabildiğini görmesini engeller. Yalnızca net bir gösterge ile (oklar, sayfa noktaları) veya kaydırma davranışı bağlamdan açıkça anlaşıldığında (yatay taşıyıcılar, sohbet geçmişleri) kullanın.

Mobil için dikkat edilecekler

iOS ve Android’de kaydırma çubukları yalnızca kaydırma sırasında bir an görünür. Özel kaydırma çubuğu CSS’iniz yine de uygulanır, ancak kullanıcılar onu bir saniyeden fazla göremeyebilir. Buna göre tasarlayın: nadiren görünen görsel süslemelere fazla yatırım yapmayın.

Erişilebilirlik

  • Kontrast: sürgünün ize göre kontrastı, metin dışı kontrast için 3:1 oranını karşılamalıdır (WCAG 1.4.11).
  • Genişlik: ince kaydırma çubuklarını fareyle kavramak zor olabilir; özellikle motor bozukluğu olan kullanıcılar için. Normal genişlik daha güvenli bir varsayılandır.
  • Kaydırılabilir bölgelerde kaydırma çubuğunu asla kaldırmayın ve başka bir kaydırma yolu sunmayın. Kaydırma çubuğuna bağımlı kullanıcılar aksi hâlde takılıp kalır.

Sık Sorulan Sorular

Evet, modern scrollbar-width ve scrollbar-color özellikleriyle. Firefox, webkit sözde öğelerini desteklemez; bu nedenle tarayıcılar arasında tutarlı bir görünüm için önce modern özellikleri kullanın ve webkit kurallarını bir geliştirme olarak ekleyin.

Çünkü varsayılan kaydırma çubukları içeriğin üzerine biner ve gerekene kadar yer ayırmaz. Kaydırma çubuğu göründüğünde veya kaybolduğunda yeniden akışı önlemek için boşluğu her zaman ayırmak üzere kaydırılabilir öğeye scrollbar-gutter: stable uygulayın.

Genellikle evet, çünkü kaydırma çubuğu yersiz görünür ve içerikle çekişir. Kullanıcıların içeriğin kaydığını yine de anlaması için görünür sayfalama noktaları veya ok denetimleri ekleyin. Kaydırma yaslama (scroll-snapping) kullanıyorsanız prefers-reduced-motion tercihine uyun.

Etkileyebilir. Çok ince veya düşük kontrastlı kaydırma çubukları, motor bozukluğu olan ve az gören kullanıcılar için kullanması zordur. Rahat kavranması için kaydırma çubuğunu en az 8–10 px genişliğinde tutun ve sürgü ile iz arasında 3:1 kontrast koruyun.

İlgili Araçlar

Araç diğer dillerde mevcuttur