HTML 페이지에서 스크롤 막대 숨기기


748

CSS를 사용하여 스크롤 막대를 숨길 수 있습니까? 어떻게 하시겠습니까?


4
@UweKeim, IE11에는 속임수가 없습니다
daVe

답변:


425

다음 overflow: hidden;과 같이 body 태그를 설정하십시오 .

<style type="text/css">
    body {
        overflow: hidden;
    }
</style>

위의 코드는 가로 및 세로 스크롤 막대를 숨 깁니다.

세로 스크롤 막대 만 숨기려면 overflow-y다음을 사용하십시오 .

<style type="text/css">
    body {
        overflow-y: hidden;
    }
</style>

가로 스크롤 막대 만 숨기려면 overflow-x다음을 사용하십시오 .

<style type="text/css">
    body {
        overflow-x: hidden;
    }
</style>

참고 : 스크롤 기능도 비활성화됩니다. 스크롤 막대를 숨기고 싶지만 스크롤 기능을 숨기려면 아래 답변을 참조하십시오.


4
overflow 속성에는 "none"옵션이 없습니다. 사용 가능한 옵션에는 표시, 숨김, 스크롤, 자동, 상속이 있습니다.
Sergiy Sokolenko

1273
실제로 이것은 완전히 정답은 아닙니다. overflow : hidden은 스크롤 막대를 "숨기지"않습니다. 또한 페이지에서 스크롤 기능을 중지합니다. 정확히 우리가 요구하는 것은 아닙니다.
adriendenat

17
Chrome에서 body overflow가 hidden스크롤 로 설정 되면 마우스 스크롤러 휠과 함께 작동합니다. Firefox에서는 마우스 스크롤 휠로 스크롤이 작동하지 않습니다. 이것을 알아내는 데 시간이 걸렸습니다.
Doug Molineux

13
overflow: hidden스크롤 을 비활성화 한다고 주장하는 요점이 보이지 않습니다 . 누군가 스크롤 막대를 숨기려면 먼저 스크롤 할 내용이 없기 때문에 제어가 불필요하다고 생각 됩니다 . 또는 아마 그들은 스크롤을 완전히 허용하고 싶지 않습니다 .
BoltClock

39
스크롤링비활성화하지 말고 스크롤 막대숨기는 것이 문제이므로 어설 션이 완벽하게 유효합니다 .
sboisse

976

WebKit은 표준 CSS 규칙으로 숨길 수있는 스크롤바 의사 요소를 지원합니다.

#element::-webkit-scrollbar {
    display: none;
}

모든 스크롤 막대를 숨기려면

::-webkit-scrollbar {
    display: none;
}

복원에 대해 잘 모르겠습니다. 작동했지만 올바른 방법이 있습니다.

::-webkit-scrollbar {
    display: block;
}

물론을 사용 width: 0하면 언제든지 쉽게 복원 할 수 width: auto있지만 width가시성 조정에 대한 학대 팬은 아닙니다 .

Firefox 64는 이제 기본적으로 실험적인 스크롤 막대 너비 속성 을 지원합니다 (63은 구성 플래그를 설정해야 함). Firefox 64에서 스크롤바를 숨기려면 :

#element {
    scrollbar-width: none;
}

현재 브라우저가 유사 요소 또는를 지원하는지 확인하려면 scrollbar-width다음 코드를 사용해보십시오.


(이것은 실제로 가로 막대를 숨기므로 질문에 대한 정답은 아니지만 Google이 여기에서 나를 가리킬 때 찾고 있었기 때문에 어쨌든 게시 할 것이라고 생각했습니다.)


11
스크롤바를 숨기고 싶었지만 스크롤 가능 요소 (예 : 위 / 아래 키)를 유지 한 이후로 내가 찾던 것
Mathias

7
다른 솔루션은하지 않기 때문에 이것이 가장 좋은 대답을해야 당신 스크롤
nuway

7
이것은 웹킷 이외의 다른 브라우저를 지원합니까? 모질라에서는 작동하지 않기 때문입니다.
Rupam Datta

12
Mozilla 트래커에 기능 요청 이 있습니다 . 투표를 통해 구현 속도를 높일 수 있습니다 :)
Peter

3
이것은 올바른 답변입니다! 다른 사람들이 누락되었습니다. 문제는 스크롤 막대를 숨기는 것이 아니라 오버플로가 다른 스타일에 어떤 영향을 미치는지입니다. 우리 앱 에서이 똑같은 문제가 발생했습니다. 앱의 99 %에서 오버플로 자동을 원하지 않지만 사용자가 아래로 스크롤 할 수있는 도움말 섹션이 있습니다. 본문에 overflow : hidden이 있기 때문에 이것을 처리하는 유일한 방법은 루트의 ng 클래스이거나 CSS를 사용하는이 녀석 덕분입니다.
레온

524

예, 일종의 ..

당신이 질문을 할 때, 할 수 없기 때문에, 모든 사람들이 "수 없음"말할 것이다 "브라우저의 스크롤바는 단순히 숨기거나 위장하기보다는, 어떤 방법으로 제거 할 수 있습니다" 제거 A의 모든 브라우저에서 스크롤바를 호환 및 상호 호환 가능한 방식으로 사용성에 대한 모든 주장이 있습니다.

그러나 웹 페이지 넘침을 허용하지 않으면 브라우저가 스크롤 막대를 생성하고 표시 할 필요가 없도록 할 수 있습니다.

이는 브라우저가 일반적으로하는 것과 동일한 동작을 사전에 대체하고 브라우저에게 감사하지만 친구에게 감사하지 말아야한다는 것을 의미합니다. 스크롤바를 제거하려고 시도하는 대신 (우리 모두가 불가능하다고 생각하는) 스크롤링을 피하고 (완벽히 실행 가능한) 요소를 스크롤하고 제어 할 수 있습니다.

오버플로가 숨겨진 div를 만듭니다. 사용자가 스크롤을 시도 할 때이를 감지하지만 overflow : hidden으로 스크롤하는 브라우저 기능을 비활성화했기 때문에 감지 할 수 없습니다. 대신 JavaScript를 사용하여 컨텐츠를 위로 이동하십시오. 브라우저 기본 스크롤링없이 iScroll 과 같은 플러그인을 사용하지 않고 자체 스크롤링을 생성합니다 .

---

철저하게하기 위해; 스크롤바를 조작하는 모든 벤더 고유의 방법 :

Internet Explorer 5.5 이상

* 이러한 속성은 CSS 사양에 포함되지 않았으며 승인되거나 공급 업체 접두사가 없었지만 Internet Explorer 및 Konqueror에서 작동합니다. 각 응용 프로그램의 사용자 스타일 시트에서 로컬로 설정할 수도 있습니다. Internet Explorer에서 Konqueror의 "Stylesheets"탭에있는 "Accessibility"탭에 있습니다.

body, html { /* These are defaults and can be replaced by hexadecimal color values */
    scrollbar-base-color: aqua;
    scrollbar-face-color: ThreeDFace;
    scrollbar-highlight-color: ThreeDHighlight;
    scrollbar-3dlight-color: ThreeDLightShadow;
    scrollbar-shadow-color: ThreeDDarkShadow;
    scrollbar-darkshadow-color: ThreeDDarkShadow;
    scrollbar-track-color: Scrollbar;
    scrollbar-arrow-color: ButtonText;
}

Internet Explorer 8부터 이러한 속성은 Microsoft가 접두사로 사용했지만 여전히 W3C에 의해 승인되지 않았습니다 .

-ms-scrollbar-base-color
-ms-scrollbar-face-color
-ms-scrollbar-highlight-color
-ms-scrollbar-3dlight-color
-ms-scrollbar-shadow-color
-ms-scrollbar-darkshadow-color
-ms-scrollbar-base-color
-ms-scrollbar-track-color

Internet Explorer에 대한 추가 정보

Internet Explorer scroll를 사용하면 스크롤 막대를 비활성화할지 여부를 설정합니다. 또한 스크롤 막대의 위치 값을 얻는 데 사용할 수 있습니다.

Microsoft Internet Explorer 6 이상에서 !DOCTYPE선언을 사용하여 표준 호환 모드를 지정하면이 속성이 HTML 요소에 적용됩니다. 표준 호환 모드가 지정되지 않은 경우, 인터넷 익스플로러의 이전 버전과 마찬가지로,이 속성은 적용 BODY요소, NOTHTML 요소입니다.

.NET으로 작업 할 때 System.Windows.Controls.PrimitivesPresentation 프레임 워크 의 ScrollBar 클래스 는 스크롤 막대를 렌더링하는 역할을합니다.

http://msdn.microsoft.com/en-us/library/ie/ms534393(v=vs.85).aspx


WebKit

스크롤 막대 사용자 정의와 관련된 WebKit 확장은 다음과 같습니다.

::-webkit-scrollbar {}             /* 1 */
::-webkit-scrollbar-button {}      /* 2 */
::-webkit-scrollbar-track {}       /* 3 */
::-webkit-scrollbar-track-piece {} /* 4 */
::-webkit-scrollbar-thumb {}       /* 5 */
::-webkit-scrollbar-corner {}      /* 6 */
::-webkit-resizer {}               /* 7 */

여기에 이미지 설명을 입력하십시오

이들은 각각 추가 의사 선택기와 결합 될 수 있습니다.

  • :horizontal – 수평 유사 클래스는 수평 방향의 스크롤 막대 조각에 적용됩니다.
  • :vertical – 세로 의사 클래스는 세로 방향의 스크롤 막대 조각에 적용됩니다.
  • :decrement– 감소 의사 클래스는 버튼 및 트랙 피스에 적용됩니다. 버튼 또는 트랙 조각이 사용될 때보기 위치를 감소 시킬지 여부를 나타냅니다 (예 : 수직 스크롤 막대에서 위로, 수평 스크롤 막대에서 왼쪽으로).
  • :increment– 의사 클래스 증가는 버튼과 트랙 조각에 적용됩니다. 버튼 또는 트랙 조각이 사용될 때보기의 위치를 ​​증가 시킬지 여부를 나타냅니다 (예 : 세로 스크롤 막대에서 아래로, 가로 스크롤 막대에서 오른쪽으로).
  • :start– 의사 클래스 시작은 버튼과 트랙 조각에 적용됩니다. 객체가 엄지 앞에 위치하는지 여부를 나타냅니다.
  • :end– 최종 의사 클래스는 버튼 및 트랙 피스에 적용됩니다. 객체가 엄지 뒤에 배치되는지 여부를 나타냅니다.
  • :double-button– 이중 버튼 의사 클래스는 버튼 및 트랙 피스에 적용됩니다. 버튼이 스크롤바의 같은 끝에있는 버튼 쌍의 일부인지 여부를 감지하는 데 사용됩니다. 트랙 피스의 경우 트랙 피스가 버튼 쌍에 인접하는지 여부를 나타냅니다.
  • :single-button– 단일 버튼 유사 클래스는 버튼 및 트랙 피스에 적용됩니다. 버튼이 스크롤바 끝에 있는지 여부를 감지하는 데 사용됩니다. 트랙 피스의 경우 트랙 피스가 싱글 톤 버튼과 인접하는지 여부를 나타냅니다.
  • :no-button – 트랙 조각에 적용되며 트랙 조각이 스크롤 막대의 가장자리로 이동하는지 여부를 나타냅니다. 즉, 트랙의 끝에는 단추가 없습니다.
  • :corner-present – 모든 스크롤 막대 조각에 적용되며 스크롤 막대 모서리가 있는지 여부를 나타냅니다.
  • :window-inactive– 모든 스크롤 막대 조각에 적용되며 스크롤 막대를 포함하는 창이 현재 활성화되어 있는지 여부를 나타냅니다. (최근 야간에이 의사 클래스는 이제 :: selection에도 적용됩니다. 모든 컨텐츠를 처리하고 새로운 표준 의사 클래스로 제안하도록이를 확장 할 계획입니다.)

이러한 조합의 예

::-webkit-scrollbar-track-piece:start { /* Select the top half (or left half) or scrollbar track individually */ }
::-webkit-scrollbar-thumb:window-inactive { /* Select the thumb when the browser window isn't in focus */ }
::-webkit-scrollbar-button:horizontal:decrement:hover { /* Select the down or left scroll button when it's being hovered by the mouse */ }

Chrome에 대한 추가 정보

addWindowScrollHandler public static HandlerRegistration addWindowScrollHandler (Window.ScrollHandler 핸들러)

  Window.ScrollEvent 핸들러를 추가합니다. 매개 변수 : handler-핸들러 반환 값 : 핸들러 등록을 반환합니다. [ source ] ( http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/Window.html# addWindowScrollHandler (com.google.gwt.user.client.Window.ScrollHandler) )


모질라

Mozilla에는 스크롤 막대 조작을위한 일부 확장이 있지만 모두 사용하지 않는 것이 좋습니다.

  • -moz-scrollbars-none 대신에 overflow : hidden을 사용하는 것이 좋습니다.
  • -moz-scrollbars-horizontal overflow-x와 유사
  • -moz-scrollbars-vertical overflow-y와 유사
  • -moz-hidden-unscrollable내부적으로 사용자 프로필 설정 내에서만 작동합니다. XML 루트 요소 스크롤을 비활성화하고 화살표 키와 마우스 휠을 사용하여 웹 페이지를 스크롤하지 않습니다.

  • '오버플로'에 대한 Mozilla 개발자 문서

Mozilla에 대한 추가 정보

이것은 내가 아는 한 실제로 유용하지는 않지만 스크롤 막대가 Firefox에 표시되는지 여부를 제어하는 ​​속성이 ( reference link ) 임을 주목할 가치가 있습니다 .

  • 속성 :        스크롤바
  • 유형 :               nsIDOMBarProp
  • 설명 :   스크롤 막대가 창에 표시되는지 여부를 제어하는 ​​객체입니다. 이 속성은 JavaScript에서 "대체 가능"합니다. 읽기 전용

패딩은 마술과 같습니다.

다른 답변에서 이미 언급했듯이 여기에 충분히 설명이있는 그림이 있습니다.

여기에 이미지 설명을 입력하십시오


역사 수업

스크롤 바

궁금해서 스크롤바의 기원에 대해 배우고 싶었고 이것이 내가 찾은 최고의 참고 자료입니다.

여러 가지 잡다한

HTML5 사양 초안에서 seamless속성이 스크롤 막대가 iFrames에 나타나지 않도록하여 페이지의 주변 컨텐츠와 혼합 될 수 없도록 정의되었습니다 . 이 요소는 최신 개정판에는 나타나지 않습니다.

scrollbarBarProp 객체의 자식 window객체와 스크롤기구, 또는 일부 유사한 인터페이스의 개념을 포함하는 사용자 인터페이스 요소를 나타낸다. 스크롤 막대가 보이면 window.scrollbars.visible반환 true됩니다.

interface Window {
  // The current browsing context
  readonly attribute WindowProxy window;
  readonly attribute WindowProxy self;
           attribute DOMString name;
  [PutForwards=href] readonly attribute Location location;
  readonly attribute History history;
  readonly attribute UndoManager undoManager;
  Selection getSelection();
  [Replaceable] readonly attribute BarProp locationbar;
  [Replaceable] readonly attribute BarProp menubar;
  [Replaceable] readonly attribute BarProp personalbar;
  [Replaceable] readonly attribute BarProp scrollbars;
  [Replaceable] readonly attribute BarProp statusbar;
  [Replaceable] readonly attribute BarProp toolbar;
  void close();
  void focus();
  void blur();
  // Truncated

히스토리 API에는 페이지로드시 스크롤 위치를 유지하기 위해 페이지 탐색시 스크롤 복원 기능도 포함되어 있습니다.

window.history.scrollRestoration를 사용하여 스크롤 복원 상태를 확인하거나 상태를 변경할 수 있습니다 (추가 : ="auto"/"manual"자동이 기본값입니다. 수동으로 변경하면 사용자가 앱의 기록을 탐색 할 때 필요할 수있는 스크롤 변경 사항을 개발자가 소유 함을 의미 함) 필요한 경우 history.pushState ()로 히스토리 항목을 푸시 할 때 스크롤 위치를 추적 할 수 있습니다.

---

더 읽을 거리 :


27
이 답변은 현재지지 된 답변이 아닌 훨씬 더 많은 브라우저 (즉, IE)에 적용됩니다.
매트 젠슨

훌륭한 추가. 실제로 동일한 솔루션을 오늘 구현했습니다! 다른 요소가 오버플로되어야한다는 점을 언급 할 가치가 있습니다. hidden;
매트 젠슨

2
정답이며 모든 기능을 갖춘 답변입니다. 사용자가 스크롤하지 못하게하려면 오버플로 규칙을 사용할 수 있다고 설명합니다. 당신은 또한 자신의 집에서 만든 스크롤 기능을 구현할 수 있습니다. 충분하지 않으면 브라우저마다 다른 규칙을 사용하여 스크롤 막대 속성을 직접 설정할 수 있습니다.
newshorts

1
이것은 엄청나게 잘 알려진 대답이며 매우 상세하고 많은 리소스가 연결되어 있지만 스크롤을 비활성화하고 javascript를 사용하여 모든 스크롤을 처리 할 때 보조 기술 사용자에게는 큰 문제가 있습니다. 사용자를 스크롤 할 때마다 요소에 초점을 설정하지 않으면 AT 사용자가 완전히 손실됩니다. 또한 사용자는 이제 자신이 보는 것에 대한 모든 미세 조정 된 제어를 잃었습니다. UX가 사용자의 스크롤을 넘겨 줄 수 없습니다.
ShiningLight

MacOS High Sierra의 Firefox Quantum 63.0.1은 'overflow : -moz-scrollbars-none'규칙을 사용하더라도 스크롤 막대를 숨기지 않습니다. 아무도 이것에 대한 해결책을 알고 있습니까? 다른 모든 브라우저는 제안 된 솔루션으로 작동하는 것 같습니다.
Simona Adriani

106

div오버플로가 숨겨져 있고 내부가로 div설정된 래퍼 로이 작업을 수행 할 수 있습니다 auto.

내부 div의 스크롤 막대 를 제거하려면 내부 div에 음수 여백을 적용 하여 외부의 스크롤 막대를 잡아 당겨 외부 의 뷰포트 에서 빼낼 수 있습니다 div. 그런 다음 내용을 그대로 유지하기 위해 내부 div에 동일한 패딩을 적용하십시오.

JSFiddle

HTML

<div class="hide-scroll">
    <div class="viewport">
        ...
    </div>
</div>

CSS

.hide-scroll {
    overflow: hidden;
}

.viewport {
    overflow: auto;

    /* Make sure the inner div is not larger than the container
     * so that we have room to scroll.
     */
    max-height: 100%;

    /* Pick an arbitrary margin/padding that should be bigger
     * than the max width of all the scroll bars across
     * the devices you are targeting.
     * padding = -margin
     */
    margin-right: -100px;
    padding-right: 100px;
}

8
허용되는 답변 imo 여야합니다. 내가 추가 한 유일한 것은이었다 height: inherited.viewportCSS.
Helzgate

4
이 답변의 유일한 문제는 이동 한 스크롤 막대가 남은 "죽은"공간입니다. 실제로 스크롤 막대 너비를 알지 못하기 때문에 패딩에서이를 뺄 수 있습니다.
Frondor

3
또한 패딩 및 여백에 고정 값을 사용할 필요가 없습니다. 100%더 다재다능하고 일을합니다.
Frondor

IE11, Operah 및 Chrome에서 일하면서 아직 Firefox를 테스트하지 않았습니다. 이것은 좋은 대답입니다, +1.
거의 초보자

-100px그리고 100px??
oldboy 2016 년

61

이것은 간단한 CSS 속성으로 저에게 효과적입니다.

.container {
    -ms-overflow-style: none;  // Internet Explorer 10+
    scrollbar-width: none;  // Firefox
}
.container::-webkit-scrollbar { 
    display: none;  // Safari and Chrome
}

이전 버전의 Firefox의 경우 다음을 사용하십시오. overflow: -moz-scrollbars-none;


2
불행히도 macOS Sierra의 FireFox 48.0.2에서는 작동하지 않습니다. 그렇게 overflow: -moz-scrollbars-none;하면 스크롤 막대를 성공적으로 제거 할 수 있지만 스크롤 기능도 제거됩니다. 당신은뿐만 아니라 단지 설정할 수 있습니다 overflow: hidden받는 사람 .container.
Martyn Chamberlin

1
아, 그리고 developer.mozilla.org/en-US/docs/Web/CSS/overflow 에서 다음과 같은 내용을 읽었습니다 -moz-scrollbars-none. "이것은 쓸모없는 API이며 더 이상 작동하지 않을 것입니다."
Martyn Chamberlin

1
Firefox에 대한 최신 지원으로 답변을 업데이트했습니다. :)
Hristo Eftimov

56

이론적으로 모든 최신 브라우저를 다루는 내 솔루션은 다음과 같습니다.

html {
    scrollbar-width: none; /* For Firefox */
    -ms-overflow-style: none; /* For Internet Explorer and Edge */
}

html::-webkit-scrollbar {
    width: 0px; /* For Chrome, Safari, and Opera */
}

html 스크롤 막대를 숨기려는 요소로 바꿀 수 있습니다.

참고 : 내가 게시 한 코드가 이미 포함되어 있는지 확인하기 위해 다른 19 개의 답변을 생략했으며 2019 년에 상황을 요약 한 답변이 하나도없는 것처럼 보입니다. 많은 세부 사항은 훌륭합니다. 이것이 다른 사람에 의해 말되었고 나는 그것을 놓쳤다면 사과드립니다.


3
여기에서 가장 과소 평가 된 답변
AGrush

내 스크롤 악몽을 해결 한 유일한 솔루션 : D 감사합니다!
boomdrak

21

여전히 관심이 있으시면 해결 방법을 찾았습니다. 이번이 첫 주이지만 나를 위해 일했습니다 ...

<div class="contentScroller">
    <div class="content">
    </div>
</div>

.contentScroller {overflow-y: auto; visibility: hidden;}
.content {visibility: visible;}

크롬 및 파이어 폭스에서 나를 위해 작동하며 IE 또는 다른 브라우저를 테스트하지 않았습니다. jsfiddle.net/8xtfk729
Ben Davis

1
크롬 (최소 v54)에서는 어떤 이유로 스크롤 휠을 통한 스크롤을 비활성화합니다. 화살표 키를 통해 스크롤, 홈 / 종료 / pg 다운 / pg 업, 터치 플릭 및 마우스 3 클릭 n 드래그가 계속 작동합니다.
House3272

이 답변은 합법적이며 실제로 작동하며 브라우저에서 작동하는 것으로 보입니다.
Sam

그것은 내 편에 전체 div를 숨 깁니다
Jonny

16

모바일 장치의 스크롤 막대를 숨길 수있는 솔루션을 찾고 있다면 Peter의 대답을 따르십시오 !

여기의 jsfiddle 수평 스크롤을 숨기려면 아래의 솔루션을 사용합니다.

.scroll-wrapper{
    overflow-x: scroll;
}
.scroll-wrapper::-webkit-scrollbar { 
    display: none; 
}

Android 4.0.4 (기본 브라우저 및 Chrome의 아이스크림 크림 샌드위치)가 포함 된 Samsung 태블릿과 iOS 6 (iPad 및 Chrome)의 iPad에서 테스트되었습니다.


그의 답변은 iOS 12.3의 Chrome 및 Safari에서 작동하지 않습니다
oldboy


11

다른 사람들이 이미 말했듯이 CSS를 사용하십시오 overflow.

그러나 사용자가 여전히 스크롤 막대를 보지 않고 해당 내용을 스크롤 할 수있게하려면 JavaScript를 사용해야합니다.

해결책은 여기 내 대답 : 마우스 / 키보드로 스크롤 할 수 있지만 스크롤 막대 숨기기


1
이것이 정답이며 먼저해야합니다. 이 이상의 모든 것이 당면한 질문에 대한 답은 아닙니다. OP는 스크롤 비활성화를 요구하지 않습니다. zhe는 스크롤 막대를 숨기려고합니다.
pixelpax

11

베드로의 답변 외에도

#element::-webkit-scrollbar {
    display: none;
}

이것은 Internet Explorer 10에서도 동일하게 작동합니다.

 #element {
      -ms-overflow-style: none;
 }

10

스크롤바를 숨기는 브라우저 간 접근.

Edge, Chrome, Firefox 및 Safari에서 테스트되었습니다.

마우스 휠로 스크롤하면서 스크롤바를 숨길 수 있습니다!

코드 펜

/* Make parent invisible */
#parent {
    visibility: hidden;
    overflow: scroll;
}

/* Safari and Chrome specific style. Don't need to make parent invisible, because we can style WebKit scrollbars */
#parent:not(*:root) {
  visibility: visible;
}

/* Make Safari and Chrome scrollbar invisible */
#parent::-webkit-scrollbar {
  visibility: hidden;
}

/* Make the child visible */
#child {
    visibility: visible;
}

1
이 작품을 감상 할 수 방법에 대한 설명 - 스크롤 막대를 숨기려면 부모 / 자식 가시성 재생 끔찍하다
JackyJohnson

1
@believesInSanta 더 나은 설명을 위해 주석과 코드 펜을 추가했습니다. 나는 가시성을 가지고 노는 것이 스크롤 막대를 숨기는 끔찍한 방법이라는 귀하의 평가에 동의하지 않습니다. 나는 그것이 해킹이라는 것을 이해하지만이 효과를 얻는 올바른 방법은 모든 브라우저가 크롬 및 사파리 허용과 같이 스크롤 막대를 개별적으로 스타일 지정하는 방법을 지원하는 것입니다.
Blake Plumb

2
방금 당신의 솔루션과 사랑에 빠졌습니다. 완벽하게 작동합니다 (최신 브라우저에서 사용하도록 설계된 앱에서 사용). 정말 고맙습니다!
Maxime Lafarie 18

7

스크롤이 작동하려면 스크롤 막대를 숨기기 전에 스타일을 고려하십시오. 최신 버전의 OS X 및 모바일 OS에는 스크롤바가있어 마우스로 잡기에는 비현실적이지만 상당히 아름답고 중립적입니다.

John Kurlak의 기술인 스크롤바를 숨기려면 패드가없는 Firefox 사용자에게 바퀴가 달린 마우스가 없으면 스크롤을 할 수없는 경우를 제외하고는 잘 작동하지만 일반적으로 세로 스크롤 만 가능합니다 .

요한의 기술은 세 가지 요소를 사용합니다.

  • 스크롤바를 가리는 외부 요소입니다.
  • 스크롤바가있는 중간 요소.
  • 그리고 중간 요소의 크기를 설정하고 스크롤 막대를 갖도록하는 내용 요소.

외부 및 내용 요소의 크기를 동일하게 설정하여 백분율을 사용하지 않아도되지만 올바른 조정으로 작동하지 않는 다른 것은 생각할 수 없습니다.

가장 큰 관심사는 모든 버전의 브라우저가 스크롤 막대를 설정하여 오버플로 된 컨텐츠를 볼 수 있도록하는 것입니다. 최신 브라우저에서는 테스트했지만 이전 브라우저에서는 테스트하지 않았습니다.

SASS를 용서하십시오 ; P

%size {
    // set width and height
}

.outer {
    // mask scrollbars of child
    overflow: hidden;
    // set mask size
    @extend %size;
    // has absolutely positioned child
    position: relative;
}

.middle {
    // always have scrollbars.
    // don't use auto, it leaves vertical scrollbar showing
    overflow: scroll;
    // without absolute, the vertical scrollbar shows
    position: absolute;
}
// prevent text selection from revealing scrollbar, which it only does on
// some webkit based browsers.
.middle::-webkit-scrollbar {
    display: none;
}

.content {
    // push scrollbars behind mask
    @extend %size;
}

테스팅

OS X은 10.6.8입니다. Windows는 Windows 7입니다.

  • Firefox 32.0 스크롤바가 숨겨져 있습니다. 클릭하여 초점을 맞춘 후에도 화살표 키가 스크롤되지 않지만 트랙 패드에서 마우스 휠과 두 손가락이 작동합니다. OS X 및 Windows.
  • Chrome 37.0 스크롤바가 숨겨져 있습니다. 클릭하여 초점을 맞춘 후 화살표 키가 작동합니다. 마우스 휠 및 트랙 패드 작동 OS X 및 Windows.
  • Internet Explorer 11 스크롤 막대가 숨겨져 있습니다. 클릭하여 초점을 맞춘 후 화살표 키가 작동합니다. 마우스 휠이 작동합니다. Windows.
  • Safari 5.1.10 스크롤바가 숨겨져 있습니다. 클릭하여 초점을 맞춘 후 화살표 키가 작동합니다. 마우스 휠 및 트랙 패드 작동 OS X.
  • 안드로이드 4.4.4 및 4.1.2. 스크롤바가 숨겨져 있습니다. 터치 스크롤이 작동합니다. 4.4.4의 Chrome 37.0, Firefox 32.0 및 HTMLViewer에서 테스트했습니다. HTMLViewer에서 페이지는 마스크 된 콘텐츠의 크기이며 스크롤 할 수도 있습니다! 스크롤은 페이지 확대 / 축소와 호환됩니다.

1
관련이없는 메모 (질문이있는 한). 이 경우 @extend와 @include를 사용해야합니다. 그래서 대신에 @mixin{}, 당신은 할 거라고 %size{}는 CSS 선택기, 호출 후 @extend %size;. 믹스 인은 일반적으로 변수를 가져 와서 결과를 반환 할 때 사용됩니다. 자리 표시 자 (일명 @extend)는 "함수"가 필요없는 간단한 반복 코드를위한 것입니다.
Mike Barwick

1
@extend를 사용하도록 편집했습니다. 결과는 SCSS를 모르지만 충분히 이해하는 사람들에게는 이해하기 어려울 것입니다.
세스 W. 클라인

6

방금이 질문을 읽는 다른 사람에게 그 설정 overflow: hidden(또는 오버플로 -y)을 지적한다고 생각 했습니다.body 요소의 이 스크롤 막대를 숨기지 않았다고이 .

나는 그 html요소 를 사용해야했다 .


3
몇 달 전부터 정확히 기억할 수는 없지만 본문에서 오버플로를 설정하면 Chrome에서는 작동하지만 Firefox에서는 그렇지 않다고 생각합니다. 그러나 HTML 태그를 사용하면 두 가지 모두에서 작동했습니다.
Brad Azevedo

메모리에서 이것은 기이 한 모드 차이 일 수 있습니다.
thomasrutter

5

auto hide , little version , scroll only-y 또는 only-x 와 같은 몇 가지 옵션으로 WebKit 버전을 작성했습니다 .

._scrollable{
    @size: 15px;
    @little_version_ratio: 2;
    @scrollbar-bg-color: rgba(0,0,0,0.15);
    @scrollbar-handler-color: rgba(0,0,0,0.15);
    @scrollbar-handler-color-hover: rgba(0,0,0,0.3);
    @scrollbar-coner-color: rgba(0,0,0,0);

    overflow-y: scroll;
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    height: 100%;

    &::-webkit-scrollbar {
        background: none;
        width: @size;
        height: @size;
    }

    &::-webkit-scrollbar-track {
        background-color:@scrollbar-bg-color;
        border-radius: @size;
    }

    &::-webkit-scrollbar-thumb {
        border-radius: @size;
        background-color:@scrollbar-handler-color;
        &:hover{
            background-color:@scrollbar-handler-color-hover;
        }
    }

    &::-webkit-scrollbar-corner {
      background-color: @scrollbar-coner-color;
    }

    &.little{
        &::-webkit-scrollbar {
            background: none;
            width: @size / @little_version_ratio;
            height: @size / @little_version_ratio;
        }
        &::-webkit-scrollbar-track {
            border-radius: @size / @little_version_ratio;
        }
        &::-webkit-scrollbar-thumb {
            border-radius: @size / @little_version_ratio;
        }
    }

    &.autoHideScrollbar{
        overflow-x: hidden;
        overflow-y: hidden;
        &:hover{
            overflow-y: scroll;
            overflow-x: scroll;
            -webkit-overflow-scrolling: touch;
            &.only-y{
                overflow-y: scroll !important;
                overflow-x: hidden !important;
            }

            &.only-x{
                overflow-x: scroll !important;
                overflow-y: hidden !important;
            }
        }
    }

    &.only-y:not(.autoHideScrollbar){
        overflow-y: scroll !important;
        overflow-x: hidden !important;
    }

    &.only-x:not(.autoHideScrollbar){
        overflow-x: scroll !important;
        overflow-y: hidden !important;
    }
}

http://codepen.io/hicTech/pen/KmKrjb


5

스크롤 막대를 숨기려면이 CSS 코드를 고객 코드에 복사하십시오.

<style>

    ::-webkit-scrollbar {
       display: none;
    }

    #element::-webkit-scrollbar {
       display: none;
    }

</style>

4

내 HTML은 다음과 같습니다

<div class="container">
  <div class="content">
  </div>
</div>

div스크롤 막대를 숨길 위치에 이것을 추가하십시오 .

.content {
  position: absolute;
  right: -100px;
  overflow-y: auto;
  overflow-x: hidden;
  height: 75%; /* This can be any value of your choice */
}

그리고 이것을 컨테이너에 추가하십시오

.container {
  overflow-x: hidden;
  max-height: 100%;
  max-width: 100%;
}

3

세로 스크롤 막대를 비활성화하려면을 추가하십시오 overflow-y:hidden;.

그것에 대해 자세히 알아보십시오 : overflow .


3

overflow:hidden;jQuery를 사용하여 언제라도 내 대답이 스크롤됩니다 .

예를 들어, 마우스 휠로 가로로 스크롤하십시오.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type='text/javascript' src='/js/jquery.mousewheel.min.js'></script>
<script type="text/javascript">
    $(function() {

       $("YourSelector").mousewheel(function(event, delta) {

          this.scrollLeft -= (delta * 30);
          event.preventDefault();
       });
    });
</script>

2
스크롤 재킹은 작동하지만 거의 항상 사용자 환경이 좋지 않습니다.
Brandon Anzaldi

1
이것이 좋은 예이지만, 스크롤을 비활성화하고 자바 스크립트를 사용하여 스크롤을 처리 할 때 보조 기술 사용자에게는 큰 문제가 있습니다. 사용자를 스크롤 할 때마다 요소에 초점을 설정하지 않으면 AT 사용자가 완전히 손실됩니다. 또한 모든 사용자는 이제 자신이 보는 것에 대한 모든 미세 조정 된 제어를 잃었습니다. UX가 사용자의 스크롤을 넘겨 줄 수 없습니다. 마우스 휠 외에도 위 / 아래 키, 스크린 리더 로터, 마우스 클릭 및 터치 패드 컨트롤도 처리해야합니다. 이것은 개발자에게는 다루기 어려워지고 사용자에게는 끔찍합니다.
ShiningLight

2

overflowCSS 속성으로 조작 할 수 있다고 생각 하지만 브라우저 지원은 제한적입니다. 한 소식통은 인터넷 익스플로러 5 이상, 파이어 폭스 1.5 이상 및 사파리 3 이상이라고 말했는데 목적에 충분할 것입니다.

스크롤, 스크롤, 스크롤 은 좋은 토론입니다.


1
좋은 링크. 멀티 브라우저에서 결과가 어떻게 나타나는지 아는 것이 좋습니다. 불행히도 완성 된 결과의 스크린 샷 수치는 깨졌습니다
Chetabahana

0

나는 모든 것을 시도했고 내 솔루션에 가장 효과가 있었던 것은 항상 세로 스크롤 막대를 표시 한 다음 음수 여백을 추가하여 숨기는 것입니다.

body {
  overflow-y: scroll;
  margin-right: -20px;
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.