스크롤 막대를 숨기지 만 여전히 스크롤 할 수는 있지만


1127

스크롤 막대가 표시되지 않고 전체 페이지를 스크롤 할 수 있기를 원합니다.

Chrome에서는 다음과 같습니다.

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

그러나 Mozilla Firefox 및 Internet Explorer는 그렇게 작동하지 않는 것 같습니다.

나는 또한 CSS에서 이것을 시도했다 :

overflow: hidden;

스크롤 막대가 숨겨 지지만 더 이상 스크롤 할 수 없습니다.

전체 페이지를 계속 스크롤하면서 스크롤 막대를 제거 할 수있는 방법이 있습니까?

CSS 나 HTML 만 있으면됩니다.

답변:


787

잘 작동하는 테스트 일뿐입니다.

#parent{
    width: 100%;
    height: 100%;
    overflow: hidden;
}

#child{
    width: 100%;
    height: 100%;
    overflow-y: scroll;
    padding-right: 17px; /* Increase/decrease this value for cross-browser compatibility */
    box-sizing: content-box; /* So the width will be 100% + 17px */
}

일 바이올린

자바 스크립트 :

스크롤바 너비는 브라우저마다 다르기 때문에 JavaScript로 처리하는 것이 좋습니다. 그렇게 Element.offsetWidth - Element.clientWidth하면 정확한 스크롤 막대 너비가 나타납니다.

자바 스크립트 작업 바이올린

또는

사용하여 Position: absolute,

#parent{
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}

#child{
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: -17px; /* Increase/Decrease this value for cross-browser compatibility */
    overflow-y: scroll;
}

일 바이올린

자바 스크립트 작업 바이올린

정보:

이 답변을 바탕으로 간단한 스크롤 플러그인을 만들었습니다 .


16
마지막으로 "작업 바이올린"나는 너무 많이 봤어요 !important: 나는 그들 모두를 제거했습니다 있도록 jsfiddle.net/5GCsJ/954
로코 C. Buljan

2
내용의 너비가 자동으로 설정되어 있으면이 솔루션이 작동하지 않습니다. 맨 오른쪽으로 스크롤해도 내용의 일부가 여전히 보이지 않습니다. 왜 그런 겁니까? 어떤 솔루션? 여기서 문제를 확인하십시오 : jsfiddle.net/50fam5g9/7 참고 : 내 경우에는 콘텐츠의 너비를 미리 알 수 없으므로 자동으로 설정해야합니다.
Sprout Coder

35
이 방법은 모든 브라우저를 다룰 수는 없으며 개발 중에 사용중인 브라우저 버전에 따라 달라집니다.
Itsik Avidan

2
가로 스크롤 막대는 어떻습니까? 어떻게 숨길 수 있습니까?
www139

11
왜 스크롤 막대 너비를 복잡하고 계산합니까? box-sizing: border-box; width: calc(100% + 50px);패딩에 대해 동일한 값을 설정 하십시오. 단순히 ... 그들 모두를 포함해야한다, 그래서 어떤 브라우저, 50 픽셀 스크롤 너비 / 높이가 없습니다
로버트 Koritnik

360

선택적 스타일링으로 WebKit에서 쉽게 수행 할 수 있습니다.

html {
    overflow: scroll;
    overflow-x: hidden;
}
::-webkit-scrollbar {
    width: 0px;  /* Remove scrollbar space */
    background: transparent;  /* Optional: just make scrollbar invisible */
}
/* Optional: show position indicator in red */
::-webkit-scrollbar-thumb {
    background: #FF0000;
}

1
cordova앱에서 이것을 시도해 보았습니다 . overflow:scroll요소 에 적용해야 했습니다.
Kishor Pawar

41
Firefox에서는 작동하지 않습니다. 순전히 웹킷이라고 명시되어 있습니다. 감사합니다 :)
Zohair

3
크롬이기 때문에 예상대로 Electron 앱에서 훌륭하게 작동합니다. +1 감사 : D
rococo

iOS8 이후로, 다음과 함께 사용하면 작동하지 않습니다-webkit-overflow-scrolling: touch
aleclarson

4
크롬과 함께 작동합니다. 그러나 mozilla firefox에서는 작동하지 않습니다.
romal tandel

298

이것은 간단한 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;


13
나를 위해 overflow: -moz-scrollbars-noneFirebox에서 스크롤 막대를 숨기고 스크롤을 비활성화합니다. 이것이 효과가있는 데모를 제공 할 수 있습니까?
chipit24

1
불행히도이 -moz-scrollbars-none속성은 최신 Firefox 버전에 대해 삭제됩니다. developer.mozilla.org/en-US/docs/Web/CSS/overflow
Hristo Eftimov

2
iOS8 이후로, 다음과 함께 사용하면 작동하지 않습니다-webkit-overflow-scrolling: touch
aleclarson

3
사용되지 않는 Firefox의 경우을 -moz-scrollbars-none사용할 수 있습니다 @-moz-document url-prefix() { .container { overflow: hidden; } }. stackoverflow.com/questions/952861/…을 참조하십시오 .
Martin Ždila

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

292

최신 정보:

Firefox는 이제 CSS를 사용하여 스크롤바 숨기기를 지원하므로 모든 주요 브라우저 (Chrome, Firefox, Internet Explorer, Safari 등)에 적용됩니다.

스크롤바를 제거하려는 요소에 다음 CSS를 적용하기 만하면됩니다.

.container {
    overflow-y: scroll;
    scrollbar-width: none; /* Firefox */
    -ms-overflow-style: none;  /* Internet Explorer 10+ */
}
.container::-webkit-scrollbar { /* WebKit */
    width: 0;
    height: 0;
}

이것은 내가 현재 알고있는 가장 해킹 된 크로스 브라우저 솔루션입니다. 데모를 확인하십시오.


원래 답변 :

아직 언급되지 않은 다른 방법이 있습니다. 정말 간단하며 두 개의 div와 CSS 만 포함됩니다. JavaScript 또는 독점 CSS가 필요하지 않으며 모든 브라우저에서 작동합니다. 컨테이너의 너비를 명시 적으로 설정할 필요가 없으므로 유동적입니다.

이 방법은 음수 여백을 사용하여 스크롤 막대를 부모 밖으로 이동 한 다음 같은 양의 패딩을 사용하여 내용을 원래 위치로 되돌립니다. 이 기술은 수직, 수평 및 양방향 스크롤에 사용됩니다.

시민:

수직 버전의 예제 코드 :

HTML :

<div class="parent">
  <div class="child">
    Your content.
  </div>
</div>

CSS :

.parent {
  width: 400px;
  height: 200px;
  border: 1px solid #AAA;
  overflow: hidden;
}

.child {
  height: 100%;
  margin-right: -50px; /* Maximum width of scrollbar */
  padding-right: 50px; /* Maximum width of scrollbar */
  overflow-y: scroll;
}

39
나는 이것이 오래된 질문에 대한 새로운 대답이라는 것을 알고 있지만 이것이 지금 받아 들여지는 대답이어야합니다. 좋은 물건.
벡터

3
이것은 절대적으로 가장 좋은 대답입니다. 이제 가로 스크롤 막대를 숨기려면 어떻게 수정합니까?
CeeMoney 2018 년

1
@CeeMoney 가로 데모를 추가했습니다. 이미지와 같은 고정 너비 내용 요소의 경우 작동하지만 텍스트의 경우 줄 바꿈을 비활성화해야합니다.
Richrd

1
@Richrd-데모 덕분에 완벽하게 작동합니다. 왜 우리 모두가 그렇게 힘들게하는지 모르지만 이것은 매우 간단합니다.
CeeMoney

4
@Richrd에게 감사합니다! 나는 당신의 대답으로 스크롤되어 매우 기쁩니다. SO에 "강제로 허용되는 답변"이 있으면 지금 당장 사용할 것입니다.
Martin D

78

사용하다:

<div style='overflow:hidden; width:500px;'>
   <div style='overflow:scroll; width:508px'>
      My scroll-able area
   </div>
</div>

이것은 스크롤 막대가없는 겹치는 div로 스크롤 막대를 약간 겹치는 트릭입니다.

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

이것은 WebKit 브라우저 에만 해당됩니다 . 또는 브라우저 별 CSS 컨텐츠를 사용할 수도 있습니다 (향후에있을 경우). 모든 브라우저는 각각의 막대에 대해 서로 다른 특성을 가질 수 있습니다.

마이크로 소프트 에지 사용을 위해 : -ms-overflow-style: -ms-autohiding-scrollbar;-ms-overflow-style: none;같은 MSDN 당 .

Firefox에는 해당 사항이 없습니다. 이를 달성하기위한 jQuery 플러그인이 있지만 http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html


ictacademie.info/oussamaelbachiri 이 사이트 @Oussama Dobby는 media = 'screen'을 사용하고 CSS에 '::-webkit-scrollbar'속성을 사용합니다
Arpit Singh

그리고 특정 CSS 속성은 무엇입니까?
Oussama el Bachiri

해키 레이아웃이나 jquery가 대안입니다
Arpit Singh

첫 번째 솔루션은 나에게이 문제 s24.postimg.org/idul8zx9w/Naamloos.jpg을 제공합니다 그리고 당신은 해키 레이아웃 @ArpitSingh 무엇을 의미합니까
사마 엘 Bachiri

4
다음 날 iOS7에 & iOS8의에 jQuery를 모바일 1.4 코르도바 기본 스크롤을 가능하게 할 수 // CSS ::-webkit-scrollbar { display: none; } .ui-content { -webkit-overflow-scrolling: touch; } // jQuery를 모바일 onMobileInit () $.mobile.touchOverflowEnabled = true;
라이언 윌리엄스

33

이 답변 에는 코드가 포함되어 있지 않으므로 다음 페이지 의 해결책이 있습니다 . .

페이지에 따르면이 접근법은 작동하기 위해 미리 스크롤 막대의 너비를 알 필요가 없으며 솔루션은 모든 브라우저에서도 작동하며 여기에서 볼 수 있습니다 .

좋은 점은 스크롤 막대를 숨기기 위해 패딩이나 너비 차이를 사용하지 않아야한다는 것입니다.

또한 줌 안전합니다. 패딩 / 너비 솔루션은 최소로 확대했을 때 스크롤 막대를 보여줍니다.

Firefox 수정 : http://jsbin.com/mugiqoveko/1/edit?output

.element,
.outer-container {
  width: 200px;
  height: 200px;
}
.outer-container {
  border: 5px solid purple;
  position: relative;
  overflow: hidden;
}
.inner-container {
  position: absolute;
  left: 0;
  overflow-x: hidden;
  overflow-y: scroll;
  padding-right: 150px;
}
.inner-container::-webkit-scrollbar {
  display: none;
}
<div class="outer-container">
  <div class="inner-container">
    <div class="element">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vehicula quam nibh, eu tristique tellus dignissim quis. Integer condimentum ultrices elit ut mattis. Praesent rhoncus tortor metus, nec pellentesque enim mattis nec. Nulla vitae turpis ut
      dui consectetur pellentesque quis vel est. Curabitur rutrum, mauris ut mollis lobortis, sem est congue lectus, ut sodales nunc leo a libero. Cras quis sapien in mi fringilla tempus condimentum quis velit. Aliquam id aliquam arcu. Morbi tristique
      aliquam rutrum. Duis tincidunt, orci suscipit cursus molestie, purus nisi pharetra dui, tempor dignissim felis turpis in mi. Vivamus ullamcorper arcu sit amet mauris egestas egestas. Vestibulum turpis neque, condimentum a tincidunt quis, molestie
      vel justo. Sed molestie nunc dapibus arcu feugiat, ut sollicitudin metus sagittis. Aliquam a volutpat sem. Quisque id magna ultrices, lobortis dui eget, pretium libero. Curabitur aliquam in ante eu ultricies.
    </div>
  </div>
</div>


모든 브라우저에서 작동하지는 않습니다 ... 웹킷 브라우저 만 해당됩니다. 웹킷 전용 선택기를 사용하고 있습니다::-webkit-scrollbar {}
Prefix

질문에 대답하기 전에 모든 새 브라우저에서 테스트했습니다. 또한 FF. FF에서 일부 변경이 발생 했습니까?
Timo Kähkönen

나는 대답을 업데이트했다. 추가하면 문제가 padding-right: 150px;해결 되는 것 같습니다 . FF, Chrome, Safari 및 Edge에서 테스트되었습니다. 오른쪽 패딩이 커서 낮은 줌 레벨에서도 작동합니다.
Timo Kähkönen

2
Edge, IE 11, IE10 (아마도 더 낮음) 지원 html { -ms-overflow-style: none;}. 이 브라우저에서는 padding-hack을 사용할 필요가 없습니다.
Timo Kähkönen

overflow-y: scroll@Timo 의 답변을 사용 하고 Edge23에서 작동하도록 스크롤 동작을 얻었지만 Chrome과 같이 숨겨져 있어야했습니다.
jojo

21

다음 세 줄을 사용하면 문제가 해결됩니다.

#liaddshapes::-webkit-scrollbar {
    width: 0 !important;
}

여기서 liaddshapes는 스크롤이 오는 div의 이름입니다.


바이올린 문제를 보여주십시오
Innodel

1
쉽고 유용합니다. 감사합니다! 또한 작업; : {0 폭} 대신 : 나는 {없음 표시} 사용
산티 누네즈

2
MS Edge 또는 Firefox에서는 작동하지 않습니다.
Dpedrinha

18

이것은 크로스 브라우저에서 작동합니다. 그러나 이것은 모바일 브라우저에서 기본 스크롤 막대를 숨기지 않습니다.

에서 SCSS

.hide-native-scrollbar {
  scrollbar-width: none; /* Firefox 64 */
  -ms-overflow-style: none; /* Internet Explorer 11 */
  &::-webkit-scrollbar { /** WebKit */
    display: none;
  }
}

에서 CSS

.hide-native-scrollbar {
  scrollbar-width: none; /* Firefox 64 */
  -ms-overflow-style: none; /* Internet Explorer 11 */
}
.hide-native-scrollbar::-webkit-scrollbar { /** WebKit */
  display: none;
}

중첩 블록 ( {})은 무엇을 의미합니까? 어떻게 해석해야합니까? 그리고 &? 아마도 당신의 대답이 정교합니까?
피터 Mortensen

그것은 (분명히, LESS도)를 SASS의 일이 : css-tricks.com/the-sass-ampersand
vipatron

@PeterMortensen 지금 막 당신의 코멘트를보고 &::-webkit-scrollbar하게 .hide-native-scrollbar::-webkit-scrollbar { }CSS에서
Murhaf Sousli

단지 할 { width: 0; height: 0;}대신 웹킷 - 스크롤 - ::위한 display: noneiOS 용.
adriendenat

FF71에서는 모든 스크롤이 차단됩니다.
유전자 b.

11

다음은 특정 div 요소에 대해 Microsoft, Chrome 및 Mozilla에서 작동했습니다.

div.rightsidebar {
    overflow-y: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
}
div.rightsidebar::-webkit-scrollbar { 
    width: 0 !important;
}

참고 scrollbar-width(FF 만) "실험"으로 플래그가
cimak

예 @ cimak이지만 FF에서는 문제없이 숨길 수 있으므로 실제로는 Chrome에만 사용됩니다.
Meloman

9

HTML :

<div class="parent">
    <div class="child">
    </div>
</div>

CSS :

.parent{
    position: relative;
    width: 300px;
    height: 150px;
    border: 1px solid black;
    overflow: hidden;
}

.child {
    height: 150px;   
    width: 318px;
    overflow-y: scroll;
}

이에 따라 CSS를 적용하십시오.

여기에서 확인 하십시오 (Internet Explorer 및 Firefox에서 테스트).


8

2018 년 12 월 11 일 (Firefox 64 이상)부터 Firefox 64 이상에서 CSS Scrollbar Styling spec을 구현하므로이 질문에 대한 답변은 매우 간단 합니다.

다음 CSS를 사용하십시오.

scrollbar-width: none;

Firefox 64 릴리스 정보 링크는 여기를 클릭 하십시오 .


3
이것은 매우 반갑습니다! 브라우저가 진전을 보이고있는 것 같습니다, 하하!
Oussama el Bachiri

7

사용하다:

CSS

#subparent {
    overflow: hidden;
    width: 500px;
    border: 1px rgba(0, 0, 0, 1.00) solid;
}

#parent {
    width: 515px;
    height: 300px;
    overflow-y: auto;
    overflow-x: hidden;
    opacity: 10%;
}

#child {
    width: 511px;
    background-color: rgba(123, 8, 10, 0.42);
}

HTML

<body>
    <div id="subparent">
        <div id="parent">
            <div id="child">
                <!- Code here for scroll ->
            </div>
        </div>
     </div>
</body>

왜 이것이 다운 보트인지 확실하지 않지만 올바른 방향으로 진행되면서 방금 올랐습니다. 다른 솔루션은 실제로 제 경우에는 효과가 없었습니다. 오버플로 -x : 숨겨 짐; + overflow-y : 스크롤; > 100 % 너비와 함께 트릭을 수행 한 것입니다 (제 경우에는 110 %가 훌륭하게 작동했습니다).
dAngelov

1
스크롤 막대를 숨기려고 가장 많이 제기 된 솔루션과 동일합니다. 이것은 브라우저마다 다르기 때문에 이상적이지 않습니다
mwm

6

사용하다

function reloadScrollBars() {
    document.documentElement.style.overflow = 'auto';  // Firefox, Chrome
    document.body.scroll = "yes"; // Internet Explorer only
}

function unloadScrollBars() {
    document.documentElement.style.overflow = 'hidden';  // firefox, chrome
    document.body.scroll = "no"; // Internet Explorer only
}

스크롤바를로드하거나 언로드하거나 다시로드하려는 지점에 대해이 함수를 호출하십시오. Chrome에서 테스트 한 결과 여전히 Chrome에서 스크롤 가능하지만 다른 브라우저는 확실하지 않습니다.


6

이것은 나를 위해 작동합니다 :

scroll-content {
    overflow-x: hidden;
    overflow-y: scroll;
}

scroll-content::-webkit-scrollbar {
    width: 0;
}

5

최신 브라우저에서는 다음을 사용할 수 있습니다 wheel event.

// Content is the element you want to apply the wheel scroll effect to
content.addEventListener('wheel', function(e) {
    const step = 100; // How many pixels to scroll

    if (e.deltaY > 0) // Scroll down
        content.scrollTop += step;
    else // Scroll up
        content.scrollTop -= step;
});

이것이 내가 찾던 대답입니다. 감사. (물론 각도 5로) 스크롤 가능 하고이 문제를 해결하기 overflow: hidden위해이 코드를 사용했습니다 mat-card-content. 참고 : 나는 e.deltaYstep것으로 사용했으며 일반 스크롤처럼 작동 했으므로 정상적으로 스크롤하는 것으로 생각하지만 스크롤 막대가 숨겨져 있으면 이것이 가장 일치합니다.
imans77

1
여기에 링크 된 페이지는이 방법이 적합하지 않다고 경고합니까?
jnnnnn

5

내 문제 : HTML 콘텐츠에 스타일을 원하지 않습니다. 스크롤 막대없이 화면을 직접 스크롤 할 수 있고 세로 스크롤 만 사용하여 모든 화면 크기의 CSS 그리드 로 작업하고 싶습니다 .

상자 크기 조정 값에 미치는 영향 패딩이나 마진 솔루션, 그들은 함께 작동 컨텐츠 상자 : 상자 크기 조정 .

여전히 "-moz-scrollbars-none"지시문이 필요하며 gdoron 및 Mr_Green과 같이 스크롤 막대를 숨겨야했습니다. 나는 시도 -moz-transform하고 -moz-padding-start, 충격 단지 파이어 폭스,하지만 너무 많은 작업을 필요로 반응하는 부작용이 있었다.

이 솔루션은 "display : grid"스타일의 HTML 본문 내용에 적합하며 반응 형입니다.

/* Hide HTML and body scroll bar in CSS grid context */
html, body {
  position: static; /* Or relative or fixed ... */
  box-sizing: content-box; /* Important for hidding scrollbar */
  display: grid; /* For CSS grid */

  /* Full screen */
  width: 100vw;
  min-width: 100vw;
  max-width: 100vw;
  height: 100vh;
  min-height: 100vh;
  max-height: 100vh;
  margin: 0;
  padding: 0;
}

html {
  -ms-overflow-style: none;  /* Internet Explorer 10+ */
  overflow: -moz-scrollbars-none; /* Should hide the scroll bar */
}

/* No scroll bar for Safari and Chrome */
html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none; /* Might be enough */
  background: transparent;
  visibility: hidden;
  width: 0px;
}

/* Firefox only workaround */
@-moz-document url-prefix() {
  /* Make HTML with overflow hidden */
  html {
    overflow: hidden;
  }

  /* Make body max height auto */
  /* Set right scroll bar out the screen  */
  body {
    /* Enable scrolling content */
    max-height: auto;

    /* 100vw +15px: trick to set the scroll bar out the screen */
    width: calc(100vw + 15px);
    min-width: calc(100vw + 15px);
    max-width: calc(100vw + 15px);

    /* Set back the content inside the screen */
    padding-right: 15px;
  }
}

body {
  /* Allow vertical scroll */
  overflow-y: scroll;
}

4

div어떤 이유로 든 사용하려는 경우 현재 허용되는 답변과 같이 내부에 패딩을 추가 해도 작동하지 않습니다 box-model: border-box.

두 경우 모두 작동하는 것은 내부 너비 div를 100 %로 스크롤 바 너비를 더한 값으로 늘리는 것입니다.overflow: hidden 외부 div에 ).

예를 들어 CSS에서 :

.container2 {
    width: calc(100% + 19px);
}

JavaScript에서 크로스 브라우저 :

var child = document.getElementById('container2');
var addWidth = child.offsetWidth - child.clientWidth + "px";
child.style.width = 'calc(100% + ' + addWidth + ')';

4

이것이 내가 수평 스크롤을 위해하는 방법입니다. CSS 만 있고 Bootstrap / col- *와 같은 프레임 워크와 잘 작동합니다. 두 개의 추가 만 필요 div하고 부모는 width또는 max-width세트가 필요합니다.

터치 스크린이있는 경우 텍스트를 선택하여 스크롤하거나 손가락으로 스크롤 할 수 있습니다.

.overflow-x-scroll-no-scrollbar {
    overflow: hidden;
}
.overflow-x-scroll-no-scrollbar div {
    overflow-x: hidden;
    margin-bottom: -17px;
    overflow-y: hidden;
    width: 100%;
}
.overflow-x-scroll-no-scrollbar div * {
    overflow-x: auto;
    width: 100%;
    padding-bottom: 17px;
    white-space: nowrap;
    cursor: pointer
}

/* The following classes are only here to make the example looks nicer */
.row {
    width: 100%
}
.col-xs-4 {
    width: 33%;
    float: left
}
.col-xs-3 {
    width:25%;
    float:left
}
.bg-gray {
    background-color: #DDDDDD
}
.bg-orange {
    background-color:#FF9966
}
.bg-blue {
    background-color: #6699FF
}
.bg-orange-light{
    background-color: #FFAA88
}
.bg-blue-light{
    background-color: #88AAFF
}
<html><body>
  <div class="row">
    <div class="col-xs-4 bg-orange">Column 1</div>
    <div class="col-xs-3 bg-gray">Column 2</div>
    <div class="col-xs-4 bg-blue">Column 3</div>
  </div>
  <div class="row">
    <div class="col-xs-4 bg-orange-light">Content 1</div>
    <div class="col-xs-3 overflow-x-scroll-no-scrollbar">
      <div>
        <div>This content too long for the container, so it needs to be hidden but scrollable without scrollbars</div>
      </div>
    </div>
    <div class="col-xs-4 bg-blue-light">Content 3</div>
  </div>
</body></html>

게으른 사람들을위한 짧은 버전 :

.overflow-x-scroll-no-scrollbar {
    overflow: hidden;
}
.overflow-x-scroll-no-scrollbar div {
  overflow-x: hidden;
  margin-bottom: -17px;
  overflow-y: hidden;
  width: 100%;
}
.overflow-x-scroll-no-scrollbar div * {
  overflow-x: auto;
  width: 100%;
  padding-bottom: 17px;
  white-space: nowrap;
  cursor:pointer
}

/* The following classes are only here to make the example looks nicer */
.parent-style {
    width: 100px;
    background-color: #FF9966
}
<div class="parent-style overflow-x-scroll-no-scrollbar">
  <div>
    <div>This content too long for the container, so it needs to be hidden but scrollable without scrollbars</div>
  </div>
</div>


고마워, 나는 시도했다, 그것은 잘 작동한다. 한 가지는 같은 값 으로 변경 margin-bottom하는 것이 좋습니다 padding-bottom. 이것은 아래 요소의 공간 아래에서 먹지 않습니다. 겹치는 것을 방지합니다.
haxpor

@haxpor 음수입니다. 음수 값을 처리 할 margin-bottom수없는으로 변경할 padding-bottom수 없습니다.
Jean

3

내 프로젝트에서 위의 솔루션을 시도하고 어떤 이유로 div 배치로 인해 스크롤 막대를 숨길 수 없었습니다. 따라서 스크롤 막대를 표면적으로 덮는 div를 도입하여 스크롤 막대를 숨기기로 결정했습니다. 아래 예는 가로 스크롤 막대입니다.

<div id="container">
  <div id="content">
     My content that could overflow horizontally
  </div>
  <div id="scroll-cover">
     &nbsp; 
  </div>
</div>

해당 CSS는 다음과 같습니다.

#container{
   width: 100%;
   height: 100%;
   overflow: hidden;
   position: relative;
}

#content{
  width: 100%;
  height: 100%;
  overflow-x: scroll;
}
#scroll-cover{
  width: 100%;
  height: 20px;
  position: absolute;
  bottom: 0;
  background-color: #fff; /*change this to match color of page*/
}

3

이것은 몸에있을 것입니다 :

<div id="maincontainer" >
<div id="child">this is the 1st step</div>
<div id="child">this is the 2nd step</div>
<div id="child">this is the 3rd step</div>

그리고 이것은 CSS입니다.

#maincontainer
{
    background: grey;
    width: 101%;
    height: 101%;
    overflow: auto;
    position: fixed;
}

#child
{
    background: white;
    height:500px;
}

3

이것은 그럼에도 불구하고 모든 브라우저에서 작동 해야하는 divitis-esque 솔루션입니다 ...

마크 업은 다음과 같으며 상대적인 위치에있는 무언가 안에 있어야합니다 (예 : 너비는 400 픽셀로 설정되어야 함).

<div class="hide-scrollbar">
    <div class="scrollbar">
        <div class="scrollbar-inner">

        </div>
    </div>
</div>

CSS :

.hide-scrollbar {
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
}

.scrollbar {
    overflow-y: scroll;
    position: absolute;
    top: 0;
    left: 0;
    right: -50px;
    bottom: 0;
}

.scrollbar-inner {
    width: 400px;
}

3

perfect-scrollbar플러그인이 길을 가야하는 것 같다, 참조 : https://github.com/noraesae/perfect-scrollbar

스크롤바 문제에 대해 잘 문서화되고 완전한 JavaScript 기반 솔루션입니다.

데모 페이지 : http://noraesae.github.io/perfect-scrollbar/


2
이것이 어떻게 질문과 관련이 있는지 볼 수 없습니까?
Chris Nevill

3
스크롤 막대를 숨기는 데 사용하는 방법에 대한 즉각적인 계시없이 완벽한 스크롤 막대를 2 분 동안 응시했습니다 . 해당 주제에 대한 답변을 넓히면 더 많은지지를 얻을 수있을 것입니다.
Christiaan Westerbeek

3

다음 SASS 스타일은 대부분의 브라우저에서 스크롤 막대를 투명하게 만듭니다 (Firefox는 지원되지 않음).

.hide-scrollbar {
  scrollbar-width: thin;
  scrollbar-color: transparent transparent;

  &::-webkit-scrollbar {
    width: 1px;
  }

  &::-webkit-scrollbar-track {
    background: transparent;
  }

  &::-webkit-scrollbar-thumb {
    background-color: transparent;
  }
}

2

해키 접근법의 또 다른 종류는 overflow-y: hidden 다음과 같이 요소를 수동으로 스크롤하는 것입니다.

function detectMouseWheelDirection(e) {
  var delta = null, direction = false;
  if (!e) { // If the event is not provided, we get it from the window object
    e = window.event;
  }
  if (e.wheelDelta) { // Will work in most cases
    delta = e.wheelDelta / 60;
  } else if (e.detail) { // Fallback for Firefox
    delta = -e.detail / 2;
  }
  if (delta !== null) {
    direction = delta > 0 ? -200 : 200;
  }
  return direction;
}

if (element.addEventListener) {
  element.addEventListener('DOMMouseScroll', function(e) {
    element.scrollBy({
      top: detectMouseWheelDirection(e),
      left: 0,
      behavior: 'smooth'
    });
  });
}

deepmikoto의 블로그 onmousewheel에서 이벤트 를 감지하고 처리하는 방법에 대한 훌륭한 기사가 있습니다. 이것은 당신에게 효과적 일지 모르지만 확실히 우아한 해결책은 아닙니다.


2

방금 개발할 때 사용하는 스크롤 막대를 숨기기 위해 결합 된 스 니펫을 공유하고 싶었습니다. 인터넷에서 발견되는 몇 가지 스 니펫 모음입니다.

.container {
    overflow-x: scroll; /* For horiz. scroll, otherwise overflow-y: scroll; */

    -ms-overflow-style: none;
    overflow: -moz-scrollbars-none;
    scrollbar-width: none;
}


.container::-webkit-scrollbar {
    display: none;  /* Safari and Chrome */
}

2

아래 코드를 사용하여 스크롤 막대를 숨길 수 있지만 여전히 스크롤 할 수는 있습니다.

.element::-webkit-scrollbar { 
    width: 0 !important 
}

2

넘친 컨텐츠가있는 요소의 스크롤 막대를 숨기려면 사용하십시오.

.div{

  scrollbar-width: none; /* The most elegant way for Firefox */

}    

당신이 언급 한 FF를 제외하고는 OP가 요구 한 것에 비해 너무 적은 지원은 실제로 존재하지 않습니다. 확인 caniuse.com/#feat=mdn-css_properties_scrollbar-width
아드

@Adrien 음, 원래 질문에 다른 브라우저에 대한 솔루션이 있다고 언급했습니다. (하지만 모질라 파이어 폭스와 인터넷 익스플로러는 그렇게 작동하지 않는 것 같습니다.) 그는 이것이 파이어 폭스 솔루션을 준 이유입니다.
Alvin Moyo

나는 동등한 것과 결합했을 때 이것이 잘 작동한다는 것을 알았다. div ::-webkit-scrollbar {display : none; } 웹킷 / 크롬 용.
Sean Halls

1

또 다른 간단한 작업 바이올린 :

#maincontainer {
    background: orange;
    width: 200px;
    height: 200px;
    overflow: hidden;
}

#childcontainer {
    background: yellow;
    position: relative;
    width: 200px;
    height: 200px;
    top: 20px;
    left: 20px;
    overflow: auto;
}

부모 컨테이너에 오버플로가 숨겨지고 자식 컨테이너에 오버플로가 자동으로 나타납니다. 단순한.


스크롤 막대를 숨기지 않고 "왼쪽"값으로 스크롤을 보이지 않게합니다.
robertmiles3 3

@ robertmiles3도 똑같지 않습니까? 숨어서 볼 수 없습니까?
Bryan Willis

1
@ robertmiles3 위에서 선택한 답변은 오른쪽에서 동일한 작업을 수행합니다. FIrefox가 CSS가 스크롤 막대를 다시 숨길 수 있도록 결정할 때까지 모든 솔루션이 해킹 된 것처럼 보입니다. blogs.msdn.com/b/kurlak/archive/2013/11/03/…
geoyws

동의해야합니다. 이것은 받아 들인 대답에서 제안한 비슷한 솔루션입니다. 작동하면 작동합니다. upvoted
JSON

1

이 까다로운 솔루션 은 오래된 IE 웹 브라우저에서도 작동합니다.

[ 수직 스크롤바 ] 의 해결 방법입니다 .

<html>
<head>
<style>
html,body{
         overflow:-moz-scrollbars-vertical;
         overflow-x:hidden;
         overflow-y:hidden;
         height:100%;
         margin:0 0 0 0
         }
</style>
</head>
<body id=body
      style="overflow:auto;
             height:100%" 
      onload="document.getElementById('body').style.width=document.body.offsetWidth+20+'px'">
//your stuff here
</body> 
</html>

그냥 시도해보십시오 : jsfiddle


0

자녀 너비의 너비를 100 %로 설정하고 패딩을 15 픽셀로 설정하면됩니다. overflow-x 하고 스크롤 overflow:hidden하여 부모 및 원하는 너비를 설정하십시오.

Internet Explorer 8 이하를 제외하고 Internet Explorer 및 Edge를 포함한 모든 주요 브라우저에서 완벽하게 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.