Firefox için Özel CSS Kaydırma Çubuğu


313

CSS ile bir kaydırma çubuğunu özelleştirmek istiyorum.

Safari ve Chrome için iyi çalışan bu WebKit CSS kodunu kullanıyorum:

::-webkit-scrollbar {
    width: 15px;
    height: 15px;
}

::-webkit-scrollbar-track-piece  {
    background-color: #C2D2E4;
}

::-webkit-scrollbar-thumb:vertical {
    height: 30px;
    background-color: #0A4C95;
}

Aynı şeyi Firefox'ta nasıl yapabilirim?

Ben kolayca jQuery kullanarak yapabilirim biliyorum, ama eğer yapılabilir saf CSS ile yapmayı tercih ederim.

Birinin uzman tavsiyesi için minnettar olurum!


1
Lütfen bunu jQuery kullanarak nasıl yapabileceğinizi paylaşın. Aynı sorunla karşı karşıyayım ama Webkit için düzeltmek için CSS kullandım. Ancak Firefox, jQuery çözümünüzün yardımcı olabileceği bir sorun oluşturur.
iGbanam

1
Jscrollpane jQuery eklentisini kullanmanızı öneririm.
Dimitri Vorontzov

Firefox'ta jScrollPane ile ilgili bir sorun var. jScrollPane Chrome'da mükemmel çalışır ancak Firefox'ta jScrollPane kaydırma çubuğunun sağında boş bir sistem kaydırma çubuğunuz vardır. Yalnızca bir kaydırma çubuğu olmalıdır
iGbanam

1
Doğru değil. Eğer buna sahipseniz, bir yerde yanlış bir şey yaptınız.
Dimitri Vorontzov

Yanıtlar:


239

2018'in sonlarından itibaren, artık Firefox'ta sınırlı özelleştirme var!

Şu cevaplara bakın:

Ve bu arka plan bilgileri için: https://bugzilla.mozilla.org/show_bug.cgi?id=1460109


::-webkit-scrollbarVe arkadaşlarına eşdeğer bir Firefox yok .

JavaScript kullanmaya devam etmelisiniz.

Birçok kişi bu özelliği istiyor, bkz: https://bugzilla.mozilla.org/show_bug.cgi?id=77790


JavaScript değiştirmeleri ile ilgili olarak şunları deneyebilirsiniz:


2
Teşekkürler, ThirtyDot. Yine de bir soru: -moz görünümü: scrollbartrack-vertical - ve diğer ilgili CSS uzantıları ne olacak? Belki bir şekilde kullanılabilirler?
Dimitri Vorontzov

2
Hayır. Maalesef, için olası değerlerin hiçbiri -moz-appearanceyardımcı olamaz. "The -moz-appearance CSS property is used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme."- sadece yerel bir kaydırma çubuğu alırsınız.
thirtydot

15
Bunu okuyan herkesin pratik bir çözüme ihtiyacı varsa, jscrollpane jQuery eklentisini kullandım.
Dimitri Vorontzov

1
@ JacquesMathieu, ne demek istediğini anlıyorum. Bu Baron'un hatası olmasa da, sayfayı indirir ve baronun başlatılmasını önlersem, hata hala oluşur. Burada Chrome'un hatalı olduğu anlaşılıyor.
thephpdev

3
drafts.csswg.org/css-scrollbars-1 , özelliğin 1. aşama başlangıcıdır, ancak Firefox Nightly'de şimdi varsayılan olarak kutunun dışındadır .
wegry

53

Firefox 64 Spec taslak için destek ekler CSS Scrollbars Modülü Seviye 1 ekler, iki yeni özellikler arasında scrollbar-widthvescrollbar-color kaydırma çubukları nasıl görüntüleneceğini üzerinde bir miktar kontrol sağlar.

scrollbar-colorAşağıdaki değerlerden birine (MDN'den açıklamalar) ayarlayabilirsiniz :

  • auto İlgili diğer kaydırma çubuğu renk özelliklerinin yokluğunda, kaydırma çubuğunun parça kısmı için varsayılan platform oluşturma.
  • dark Platform tarafından sağlanan kaydırma çubuğunun koyu bir çeşidi veya koyu renklerle özel bir kaydırma çubuğu olabilecek koyu bir kaydırma çubuğu gösterin.
  • light Platform tarafından sağlanan kaydırma çubuğunun hafif bir değişkeni veya açık renklerle özel bir kaydırma çubuğu olabilecek hafif bir kaydırma çubuğu gösterin.
  • <color> <color> İlk rengi kaydırma çubuğu başparmağına, ikinci rengi kaydırma çubuğu parçasına uygular.

darkVe lightdeğerlerin şu anda Firefox'ta uygulanmadığını unutmayın .

macOS notları:

MacOS varsayılanı olan otomatik gizlenen yarı saydam kaydırma çubukları bu kuralla renklendirilemez (yine de arka plana göre kendi kontrast renklerini seçerler). Yalnızca kalıcı olarak gösterilen kaydırma çubukları (Sistem Tercihleri> Kaydırma Çubuklarını Göster> Her Zaman) renklendirilir.

Görsel Demo:

scrollbar-widthAşağıdaki değerlerden birine (MDN'den açıklamalar) ayarlayabilirsiniz :

  • auto Platform için varsayılan kaydırma çubuğu genişliği.
  • thin Bu seçeneği sunan platformlarda ince kaydırma çubuğu genişliği varyasyonu veya varsayılan platform kaydırma çubuğu genişliğinden daha ince bir kaydırma çubuğu.
  • none Hiçbir kaydırma çubuğu gösterilmez, ancak öğe yine de kaydırılabilir.

Spesifikasyona göre belirli bir uzunluk değeri de ayarlayabilirsiniz. Her ikisi de thinve belirli bir uzunluk tüm platformlarda hiçbir şey yapmayabilir ve tam olarak yaptığı şey platforma özgüdür. Özellikle, Firefox şu anda belirli bir uzunluk değerini desteklemiyor gibi görünüyor ( hata izleyicilerindeki bu yorum bunu onaylıyor gibi görünüyor ). thinKeywork at-az MacOS ve Windows desteği ile, ne kadar iyi desteklenmeye görünmüyor.

Büyük olasılıkla, uzunluk değeri seçeneğinin ve tüm scrollbar-widthözelliğin gelecekteki bir taslakta kaldırılmaya çalışıldığını ve bu özelliğin gelecekteki bir sürümde Firefox'tan kaldırılabileceğini belirtmek gerekir.

Görsel Demo:


Bu cevap için teşekkürler. Bunu (ve diğer ilgili yanıtı) tanıtmak için kabul edilen yanıtımı güncelledim, böylece insanların bunu görme olasılığı daha yüksek.
thirtydot

1
Bu, Luca'nın cevabını üç hafta öncesinden çoğaltır .
Josh Habdas

@JoshHabdas Bu cevap neredeyse uyumluluk veya kullanım bilgisi içermiyor. Bu cevabı ben yarattım çünkü diğer cevap aradığım önemli bilgiye sahip değildi.
Alexander O'Mara

1
Onlara kredi verebilir, geri bildirimde bulunabilir veya yanıtlarını düzenlemeyi düşünebilirsiniz.
Josh Habdas

2
@JoshHabdas Eh, 5 kişi zaten yararlı buldu ve web üzerinde başka bir yerde bulunamadı bilgileri içerir, bu yüzden katılmıyorum.
Alexander O'Mara

43

Bir alternatif sunabilir miyim?

Herhangi bir komut dosyası yok, sadece standartlaştırılmış css stilleri ve biraz yaratıcılık. Kısa cevap - mevcut tarayıcı kaydırma çubuğunun parçalarını maskelemek, bu da tüm işlevlerini korumanız anlamına gelir.

.scroll_content {
    position: relative;
    width: 400px;
    height: 414px;
    top: -17px;
    padding: 20px 10px 20px 10px;
    overflow-y: auto;
}

Demo ve biraz daha ayrıntılı açıklama için buraya bakın ...

jsfiddle.net/aj7bxtjz/1/


7
Maalesef bu soruya cevap vermiyor. Dimitri kaydırma çubuğunu şekillendirmeye çalışıyor, gizlemiyor.
stvnrynlds

14
Bu 4 yıl önceydi (bunun farkındayım), o yüzden eminim şimdiye kadar bir şeyler yapmıştı. Ancak konu bugün hala alakalı - diğer tarayıcılar kaydırma çubuklarının bir tür "yasadışı" değişikliğine izin verirken, FF izin vermiyor. Bu yüzden yayınlamaya karar verdim.Ve ön uç sonuç, bunu yapmanın yolunun bir kısmını gizlemesine bakılmaksızın görsel olarak stil kaydırma çubuğudur.
Tomaz

i mutlak konumlandırma (değişken boyutu şeyler bir kabus yapar) ile tüm ekstra biçimlendirme dışında bu çözümü seviyorum artı aslında stili değiştiremezsiniz, sadece mevcut kaydırma çubuğu öğelerini maskeleme / gizleme - yeşil çubuk istiyorsanız çok kötü!
RozzA

3
Evet, dört yıl sonra, OP'nin sorusunu topluma katkıda bulunduğu kadar cevaplamakla ilgili değil.
tmthyjames

3
Sorunun özü, bazı işleme motorları tarafından sağlanan çözümlerin standart olmamasıdır. Bu, endişelerime en iyi cevap veren soru ve kaydırma yaptığım cevap bu.
Filip Dupanović

36

Birinin işi yapmak için bir JQuery eklentisi düşünmesi durumunda bulgularımı paylaşacağımı düşündüm.

JQuery Özel Kaydırma Çubuğu verdim gitmek. Oldukça süslü ve pürüzsüz kaydırma (kaydırma ataleti ile) yapıyor ve tweak yapabileceğiniz çok sayıda parametre var, ama benim için biraz fazla CPU yoğun oldu (ve DOM'a adil bir miktar ekliyor).

Şimdi Perfect Scrollbar'ı deniyorum . Basit ve hafif (6KB) ve şu ana kadar iyi bir iş çıkarıyor. CPU yoğun değil (anlayabildiğim kadarıyla) ve DOM'nize çok az şey katıyor. Tweak yapmak için sadece birkaç parametre var (wheelSpeed ​​ve wheelPropagation), ancak ihtiyacım olan tek şey ve kaydırma içeriğinin güncellemelerini güzelce işliyor (görüntü yükleme gibi).

PS JScrollPane hızlı bir göz var mı, ama @simone doğru, şimdi biraz tarihli ve bir PITA.


3
Ayrıca trackpad kaydırma emülatörü de var - twitch.tv bunu kullanıyor.
Mart'ta forivall

1
Perfect Scrollbar aslında çok iyi. Diğer birçok seçeneği tükettikten sonra, bunun en iyi çözüm olduğunu gördüm. Önerdiğiniz için teşekkürler.
Leonard Teo

nanoScroller da gerçekten iyi ve nispeten yalın. jamesflorentino.github.io/nanoScrollerJS Ağır JS eklentilerinin aksine , bu sadece yerel kaydırma çubuğunu gizler ve yerel 'kaydırma' olayını kullanarak alternatif bir kaydırma çubuğu gösterir
Danny R

1
Onlar beri ben, jquery çözümlerinin tüm kaçıyorsun tüm stres altında yavaş makinelerde veya makinelerde dışarı kalmaktadır fakat PS kazanan benziyor
RozzA

31

Yana Firefox 64 , kullanmak mümkündür yeni özelliklerini basit bir kaydırma çubuğu stil (için satıcı öneklerle Chrome'da olduğu kadar tam değil ).

Gelen bu örnekte nihai (eşit değil) benzer sonuç (örnek kullanımı orijinal Chrome kuralları) adres Firefox ve Chrome hem farklı kurallar birleştiren bir çözüm görmek mümkündür:

Anahtar kurallar:

Firefox için

.scroller {
  overflow-y: scroll;
  scrollbar-color: #0A4C95 #C2D2E4;
}

Chrome için

.scroller::-webkit-scrollbar {
    width: 15px;
    height: 15px;
}

.scroller::-webkit-scrollbar-track-piece  {
    background-color: #C2D2E4;
}

.scroller::-webkit-scrollbar-thumb:vertical {
    height: 30px;
    background-color: #0A4C95;
}

Çözümünüze saygı duymanın, aşağıdaki gibi daha basit Chrome kurallarını kullanmanın mümkün olduğunu lütfen unutmayın:

.scroller::-webkit-scrollbar-track  {
    background-color: #C2D2E4;
}

.scroller::-webkit-scrollbar-thumb {
    height: 30px;
    background-color: #0A4C95;
}

Son olarak, Firefox'ta da kaydırma çubuklarındaki okları gizlemek için, şu anda aşağıdaki kuralla " ince " olarak ayarlamak gerekir.scrollbar-width: thin;


1
Görünüşe göre IE 5.5 bir şey kazanmış olabilir. :)
Josh Habdas


0

Kullanıcı tarzında çalışır ve web sayfalarında çalışmıyor gibi görünüyor. Bu konuda Mozilla'dan resmi bir yön bulamadım. Bir noktada işe yaramış olsa da, Firefox'un bunun için resmi desteği yoktur. Bu hata hala açık https://bugzilla.mozilla.org/show_bug.cgi?id=77790

scrollbar {
/*  clear useragent default style*/
   -moz-appearance: none !important;
}
/* buttons at two ends */
scrollbarbutton {
   -moz-appearance: none !important;
}
/* the sliding part*/
thumb{
   -moz-appearance: none !important;
}
scrollcorner {
   -moz-appearance: none !important;
   resize:both;
}
/* vertical or horizontal */
scrollbar[orient="vertical"] {
    color:silver;
}

kontrol http://codemug.com/html/custom-scrollbars-using-css/ detaylar için.


2
Yazdığınız gibi denedim, ama benim için FF çalışmıyor, jsfiddle.net/gGbkY/1 kontrol ben bir şey eksik mi?
Satinder singh

Kullanıcı tarzında çalışır ve web sayfalarında çalışmıyor gibi görünüyor. Bu konuda Mozilla'dan resmi bir yön bulamadım.
ipirlo

1
lütfen aynı bağlantıyı kontrol edin: artık işe yaramıyor
Krunal Shah

3
Kullanıcı tarzı nedir?
Marecky

Bağladığınız hata 17 yıl önce bildirildi ve hala atanmadı. FF'nin yerel kaydırma çubuklarının gizlenmesini hiçbir zaman desteklemeyeceğini söylemek güvenli.
Sterling Bourne

-2
@-moz-document url-prefix(http://),url-prefix(https://) {
    scrollbar {
       -moz-appearance: none !important;
       background: rgb(0,255,0) !important;
    }
    thumb,scrollbarbutton {
       -moz-appearance: none !important;
       background-color: rgb(0,0,255) !important;
    }

    thumb:hover,scrollbarbutton:hover {
       -moz-appearance: none !important;
       background-color: rgb(255,0,0) !important;
    }
    scrollbarbutton {
       display: none !important;
    }
    scrollbar[orient="vertical"] {
      min-width: 15px !important;
    }
}

5
Ne yaptığını veya nasıl yaptığını açıklayan çok az veya hiç bilgi içermeyen bir kod blobunu sağladınız.
Josh Habdas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.