Firefox 용 사용자 정의 CSS 스크롤 막대


313

CSS로 스크롤 막대를 사용자 정의하고 싶습니다.

Safari와 Chrome에서 잘 작동하는이 WebKit CSS 코드를 사용합니다.

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

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

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

Firefox에서 같은 작업을 어떻게 수행 할 수 있습니까?

jQuery를 사용하여 쉽게 수행 할 수 있다는 것을 알고 있지만 가능한 경우 순수한 CSS로 수행하는 것을 선호합니다.

누군가의 전문가 조언에 감사드립니다!


1
jQuery를 사용하여 수행 방법을 공유하십시오. 나는 같은 문제에 직면했지만 CSS를 사용하여 웹킷을 수정했습니다. 그러나 Firefox는 jQuery 솔루션이 도움을 줄 수있는 문제가 있습니다.
iGbanam

1
jscrollpane jQuery 플러그인을 사용하는 것이 좋습니다.
Dimitri Vorontzov

Firefox의 jScrollPane에 문제가 있습니다. jScrollPane은 Chrome에서 완벽하게 작동하지만 Firefox 에서는 jScrollPane 스크롤 막대 오른쪽에 빈 시스템 스크롤 막대가 있습니다. 하나의 스크롤 막대가 있어야합니다
iGbanam

1
사실이 아니다. 가지고 있다면 어딘가에 뭔가 잘못한 것입니다.
Dimitri Vorontzov

여기에 내 대답을 참조하십시오 stackoverflow.com/questions/7357203/custom-scrollbars/...
Buzinas

답변:


239

2018 년 말 현재 Firefox에서는 사용자 정의가 제한되어 있습니다!

이 답변을 참조하십시오 :

그리고 이것은 배경 정보입니다 : https://bugzilla.mozilla.org/show_bug.cgi?id=1460109


Firefox ::-webkit-scrollbar와 친구 가 없습니다 .

자바 스크립트를 사용해야합니다.

많은 사람들이이 기능을 원합니다 : https://bugzilla.mozilla.org/show_bug.cgi?id=77790


JavaScript 대체가 진행되는 한 다음을 시도해보십시오.


2
감사합니다, ThirtyDot. 한 가지 질문 : -moz-appearance : scrollbartrack-vertical 및 기타 관련 CSS 확장은 어떻습니까? 아마도 그들은 어떤 식 으로든 사용될 수 있습니까?
Dimitri Vorontzov

2
안타깝게도 가능한 값 중 어느 것도 -moz-appearance도움 이 될 수 없습니다. "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."-당신은 기본 스크롤 막대를 얻을 수 있습니다.
thirtydot

15
이것을 읽는 사람에게 실용적인 솔루션이 필요한 경우 jscrollpane jQuery 플러그인을 사용했습니다.
Dimitri Vorontzov 2016 년

1
@JacquesMathieu, 무슨 말인지 알 겠어. 그것은 Baron의 잘못이 아니지만 페이지를 다운로드하고 남작이 초기화되는 것을 막 으면 버그가 계속 발생합니다. 그래서 여기 크롬이 잘못되었습니다.
thephpdev

3
drafts.csswg.org/css-scrollbars-1 은 사양의 1 단계 시작이지만 Firefox Nightly에서 기본적으로 활성화되어 있습니다.
wegry

53

파이어 폭스 (64)는 사양 초안에 대한 지원이 추가 CSS 스크롤바 모듈 레벨 1 추가, 두 개의 새로운 특성 의를 scrollbar-width하고 scrollbar-color스크롤바가 표시되는 방식을 제어 할 수 있도록합니다.

scrollbar-color다음 값 중 하나로 설정할 수 있습니다 (MDN의 설명).

  • auto 다른 관련 스크롤 막대 색상 속성이없는 경우 스크롤 막대의 트랙 부분에 대한 기본 플랫폼 렌더링입니다.
  • dark 플랫폼이 제공하는 어두운 스크롤바 또는 어두운 색상의 사용자 정의 스크롤바 일 수있는 어두운 스크롤바를 표시합니다.
  • light 플랫폼에서 제공하는 다양한 종류의 스크롤 막대 또는 밝은 색의 사용자 정의 스크롤 막대 일 수있는 가벼운 스크롤 막대를 표시합니다.
  • <color> <color> 첫 번째 색을 스크롤 막대 썸에 적용하고 두 번째 색을 스크롤 막대 트랙에 적용합니다.

그 주 darklight값은 현재 파이어 폭스에서 구현되지 않습니다 .

macOS 노트 :

macOS 기본값 인 자동 숨김 반투명 스크롤 막대는이 규칙으로 색상을 지정할 수 없습니다 (배경에 따라 자체 대비 색상을 선택 함). 영구적으로 표시되는 스크롤 막대 (시스템 환경 설정> 스크롤 막대 표시> 항상) 만 색상이 지정됩니다.

비주얼 데모 :

scrollbar-width다음 값 중 하나로 설정할 수 있습니다 (MDN의 설명).

  • auto 플랫폼의 기본 스크롤 막대 너비입니다.
  • thin 해당 옵션을 제공하는 플랫폼의 얇은 스크롤 막대 너비 변형 또는 기본 플랫폼 스크롤 막대 너비보다 얇은 스크롤 막대입니다.
  • none 스크롤 막대가 표시되지 않지만 요소는 여전히 스크롤 가능합니다.

사양에 따라 특정 길이 값을 설정할 수도 있습니다. 모두 thin특정 길이는 모든 플랫폼에서 아무것도 할, 무엇을 정확히하는 일은 플랫폼 고유하지 않을 수 있습니다. 특히 Firefox는 현재 특정 길이 값을 지원하지 않는 것으로 보입니다 ( 버그 추적기의 주석은이를 확인하는 것으로 보입니다 ). 그러나 thin키워 크는 macOS 및 Windows 지원을 최소한으로 지원하여 잘 지원되는 것으로 보입니다.

길이 값 옵션과 전체 scrollbar-width특성이 향후 초안에서 제거 될 것으로 고려되고 있으며,이 경우이 특정 특성은 향후 버전에서 Firefox에서 제거 될 수 있습니다.

비주얼 데모 :


이 답변에 감사드립니다. 사람들이 더 잘 볼 수 있도록이 답변 (및 기타 관련 답변)을 홍보하기 위해 승인 된 답변을 업데이트했습니다.
thirtydot

1
이것은 본질적으로 3 주 전의 Luca의 답변 을 복제 합니다.
Josh Habdas

@JoshHabdas이 답변에는 호환성이나 사용 정보가 거의 포함되어 있지 않습니다. 다른 답변에 내가 찾고있는 중요한 정보가 없기 때문에이 답변을 만들었습니다.
Alexander O'Mara

1
신용을 제공하거나 피드백을 제안하거나 답변 편집을 고려할 수 있습니다.
Josh Habdas

2
@JoshHabdas 글쎄, 5 명이 이미 유용하다고 생각했고, 웹상의 다른 곳에서는 찾을 수없는 정보를 포함하고 있기 때문에 동의하지 않습니다.
Alexander O'Mara

43

대안을 제시해도 될까요?

스크립팅은 없으며 표준화 된 CSS 스타일과 약간의 창의성 만 있습니다. 짧은 답변-기존 브라우저 스크롤 막대의 일부를 마스킹하면 모든 기능을 유지할 수 있습니다.

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

데모 및 좀 더 자세한 설명을 보려면 여기를 확인하십시오 ...

jsfiddle.net/aj7bxtjz/1/


7
불행히도 이것은 질문에 대답하지 않습니다. Dimitri는 스크롤바를 숨기지 않고 스타일을 지정하려고합니다.
stvnrynlds

14
그것은 4 년 전에 (그것을 알고 있습니다) 그래서 그는 이미 그가 이미 무언가를했다고 확신합니다. 그러나이 주제는 오늘날에도 여전히 관련이 있습니다. 다른 브라우저에서는 스크롤바의 "불법적 인"수정을 허용하지만 FF는 그렇지 않습니다. 이것이 내가 게시하기로 결정한 이유이며, 프론트 엔드 결과는 스크롤 막대가 시각적으로 스타일링되어 스크롤링 방법이 그 일부를 숨기고 있다는 사실과 관계없이 시각적입니다.
Tomaz

나는 절대 위치를 가진 여분의 마크 업 (다양한 크기의 물건을 악몽으로 만듭니다)을 제외 하고이 솔루션을 좋아합니다. 그리고 실제로 스타일을 바꿀 수는 없습니다. 기존 스크롤러의 요소를 숨기거나 숨기고 있습니다. 녹색 막대를 원한다면 너무 나쁩니다!
RozzA

3
그러나 4 년이 지난 지금, OP에 관한 질문에 대한 답변은 커뮤니티에 기여하는 것만 큼 중요하지 않습니다.
tmthyjames

3
문제의 본질은 일부 렌더링 엔진이 제공하는 솔루션이 비표준이라는 것입니다. 이것은 내 관심사를 가장 잘 다루는 질문이며 스크롤하는 대답입니다.
Filip Dupanović

36

누군가가 JQuery 플러그인을 사용하여 작업을 수행하는 경우 결과를 공유하겠다고 생각했습니다.

내가 준 JQuery와 사용자 정의 스크롤 막대를 가를. 그것은 꽤 화려하고 부드러운 스크롤 (스크롤링 관성)을 수행하고 조정할 수있는 많은 매개 변수를 가지고 있지만 결국 CPU를 너무 많이 사용합니다 (DOM에 상당한 양을 추가합니다).

이제 Perfect Scrollbar를 사용 하고 있습니다. 간단하고 가벼우 며 (6KB) 지금까지는 괜찮은 일을하고 있습니다. CPU 집중적이지 않으며 (내가 말할 수있는 한) DOM에 거의 추가하지 않습니다. 조정할 수있는 몇 가지 매개 변수 (wheelSpeed ​​및 wheelPropagation) 만 있지만, 필요한 것만으로 스크롤 내용에 대한 업데이트 (예 : 이미지로드)를 처리합니다.

추신 : 나는 JScrollPane을 간략히 살펴 보았지만 @simone이 옳다. 현재 약간 오래되었고 PITA이다.


3
트랙 패드 스크롤 에뮬레이터 도 있습니다 . 이것이 twitch.tv가 사용하는 것입니다.
forivall

1
Perfect Scrollbar는 실제로 정말 좋습니다. 다른 많은 옵션을 다 사용한 후에는 이것이 최고의 솔루션이라는 것을 알았습니다. 제안 해 주셔서 감사합니다.
레너드 테오

nanoScroller도 정말 좋고 상대적으로 희박합니다. jamesflorentino.github.io/nanoScrollerJS 무거운 JS 플러그인에 반대는,이 단순히 기본 스크롤 및 쇼 네이티브 '스크롤'이벤트를 사용하여 다른 스크롤 숨 깁니다
대니 R

1
그들은 이후로 난, JQuery와 솔루션을 모두 피하고 한 모든 스트레스가 느린 기계 또는 기계에 나가 지연,하지만 PS 승자처럼 보이는
RozzA

31

Firefox 64 부터는 간단한 스크롤바 스타일링에 새로운 사양 을 사용할 수 있습니다 ( 공급 업체 접두어가있는 Chrome에서는 완전하지 않음 ).

이 예 에서는 Firefox와 Chrome을 모두 해결하기 위해 서로 다른 규칙을 결합하여 비슷한 최종 결과를 제공하는 솔루션을 볼 수 있습니다 (예 : 원래 Chrome 규칙 사용).

주요 규칙은 다음과 같습니다.

Firefox의 경우

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

크롬

.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;
}

솔루션과 관련하여 다음과 같이 더 간단한 Chrome 규칙을 사용할 수도 있습니다.

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

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

마지막으로 Firefox에서도 스크롤 막대에서 화살표를 숨기려면 현재 다음 규칙을 사용하여 화살표를 " thin "으로 설정해야합니다.scrollbar-width: thin;


1
IE 5.5가 결국 무언가를 얻었을 것 같습니다. :)
Josh Habdas '


0

사용자 스타일로 작동하며 웹 페이지에서는 작동하지 않는 것 같습니다. 나는 이것에 대해 Mozilla로부터 공식적인 지시를 찾지 못했다. 특정 시점에서 작동했지만 Firefox는 공식적으로 지원하지 않습니다. 이 버그는 여전히 열려 있습니다 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;
}

자세한 내용은 http://codemug.com/html/custom-scrollbars-using-css/ 를 확인 하십시오.


2
나는 당신이 쓴 것과 똑같이 시도했지만, FF에서 작동하지 않으면 jsfiddle.net/gGbkY/1을 확인하십시오 .
Satinder singh

사용자 스타일로 작동하며 웹 페이지에서는 작동하지 않는 것 같습니다. 나는 이것에 대해 Mozilla로부터 공식적인 지시를 찾지 못했다.
ipirlo

1
동일한 링크를 확인하십시오 : 더 이상 작동하지 않습니다
Krunal Shah

3
사용자 스타일은 무엇입니까?
Marecky

링크 한 버그는 17 년 전에보고되었지만 여전히 할당되지 않았습니다. FF가 기본 스크롤 막대 숨기기를 지원하지 않는다고 말하는 것이 안전하다고 생각합니다.
스털링 본

-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
코드 블롭의 기능 또는 기능을 설명하는 정보가 거의 또는 전혀 제공되지 않았습니다.
Josh Habdas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.