div 스크롤바를 왼쪽에 배치하는 방법은 무엇입니까?


82

div에 세로 스크롤바를 배치 할 위치 (왼쪽 또는 오른쪽)를 지정할 수 있습니까?

예를 들어 , overflow 속성을 사용하는 방법을 설명하는 이 페이지 를보십시오. 스크롤 가능 영역의 왼쪽에 해당 스크롤 막대를 배치하는 방법이 있습니까?


이 스레드를 살펴보십시오. 이것에 대한 몇 가지 제한 사항을 보여줍니다. stackoverflow.com/questions/5123417/...
그레엄 Leighfield에게

답변:


55

작업 예 : JSFiddle

또는

모든 주요 브라우저에서 작동하는 잘라 내기 및 붙여 넣기 솔루션 (사파리 포함)

모든 높이 또는 너비가 작동합니다.

<style>
  .list_container {
    direction: rtl;
    overflow:auto;
    height: 50px;
    width: 50px;
  }

  .item_direction {
    direction:ltr;
  }
</style>
<div class="list_container">
  <div class="item_direction">1</div>
  <div class="item_direction">2</div>
  <div class="item_direction">3</div>
  <div class="item_direction">4</div>
  <div class="item_direction">5</div>
  <div class="item_direction">6</div>
  <div class="item_direction">7</div>
  <div class="item_direction">8</div>
  <div class="item_direction">9</div>
  <div class="item_direction">10</div>
  <div class="item_direction">11</div>
  <div class="item_direction">12</div>
</div>

선택적 class="item_direction으로 각 항목에 추가 하여 컨테이너 방향을 유지하면서 텍스트 흐름의 방향을 변경합니다.


의무에 행복합니다.
jasonleonhard

3
참고로 :이 답변은 중복 ID가 있으므로 유효한 HTML이 아닙니다. class="item_direction"대신 id="item_direction".item_direction {대신 이어야합니다 #item_direction {.
movabo

2
죄송합니다. 신속하게 응답하고 실수를했습니다. 귀하는 정확하며 제 답변을 업데이트했습니다.
jasonleonhard

다른 CSS 규칙을 사용하여 모든 직계 자식에 대한 방향을 재설정 할 수도 있습니다..list_container > * { direction: ltr; }
Erich Schreiner

74

direction:rtl;CSS에서 시도해 볼 수 있습니다. 그런 다음 내부의 텍스트 방향을 재설정하십시오.div

#scroll{
    direction:rtl; 
    overflow:auto; 
    height:50px; 
    width:50px;}

#scroll div{
    direction:ltr;
}

테스트되지 않았습니다.


2
IE와 Opera가 RTL 콘텐츠의 왼쪽에 스크롤바를 배치하는 유일한 브라우저라고 생각합니다.
Joey

2
@Joey 또한 우분투에서 진정한 크롬하지

Chrome 32가 왼쪽에 있는지 확인하고 싶습니다. 그리고이 시점에서 그없는 놀라운 파이어 폭스는 CSS에서 느림보는 것을
조지 마우어

1
크롬 / 맥 및 파이어 폭스 / 맥하지만 사파리 / 맥에서 작업
막심 schoeni

1
@GeorgeMauer Mozilla는 의도적으로 RTL 콘텐츠를 위해 오른쪽에있는 스크롤 막대를 남겼습니다. 당시 우리는 사용자가 현재 페이지 콘텐츠를 기반으로 근육 메모리를 변경해야하는 경우 사용성 문제라고 믿었습니다. Mozilla의 Bugzilla에서 찾을 수있는 토론에 참여했습니다.
Tsahi Asher

32

나도 같은 문제를 안고있어. 하지만 direction: rtl;탭과 아코디언 콤보를 추가하면 구조가 충돌합니다.

이를 수행하는 방법 direction: rtl;은 부모 요소로 div를 추가 하고 자식 div set direction: ltr;.

이 첫 번째 https://api.jquery.com/wrap/ 사용합니다.

$( ".your selector of child element" ).wrap( "<div class='scroll'></div>" );

그런 다음 단순히 CSS로 작업하십시오. :)

어린이 div에서 CSS에 추가

 .your_class {
            direction: ltr;    
        }

그리고 클래스 .scroll과 함께 jQuery에 의해 추가 된 부모 div에

.scroll {
            unicode-bidi:bidi-override;
            direction: rtl;
            overflow: scroll;
            overflow-x: hidden!important;
        }

나를 위해 지사 작품

http://jsfiddle.net/jw3jsz08/1/


또는 다음과 같이 CSS를 수행 할 수 있습니다. .scrollBarOnLeft {unicode-bidi : bidi-override; 방향 : rtl; 오버플로 : 스크롤; 오버플로 -x : 숨김! 중요; } .scrollBarOnLeft> div {방향 : ltr; } .scrollBarOnLeft> div> div {}
john ktejik

30

일종의 오래된 질문이지만이 질문을 받았을 때 널리 사용되지 않는 방법을 던져야한다고 생각했습니다.

transform: scaleX(-1)부모를 사용하여 최신 브라우저에서 스크롤바의 측면을 뒤집은 <div>다음 동일한 변환을 적용하여 자식 "sleeve"요소를 뒤집을 수 있습니다.

HTML

<div class="parent">
  <div class="sleeve">
    <!-- content -->
  </div>
</div>

CSS

.parent {
  overflow: auto;
  transform: scaleX(-1); //Reflects the parent horizontally
}

.sleeve {
  transform: scaleX(-1); //Flips the child back to normal
}

참고 : IE 9 이전의 브라우저 에는 -ms-transform또는 -webkit-transform접두사 를 사용해야 할 수 있습니다. CanIUse를 선택 하고 "모두 표시"를 클릭하여 이전 브라우저 요구 사항을 확인하십시오.


3
이것은 가장 뛰어난 솔루션 중 하나입니다.
Miron

1
감사! 내가 이해하는 바에 따르면 텍스트 방향 변경도 작동합니다. transform 속성이 더 ... 우아하게 느껴지나요? 적어도 의미 상 더 정확합니다. :)
Dom Ramirez

2
이 방법을 사용하면 GPU 향상의 이점을 얻을 수도 있습니다. 나는 화면의 오른쪽에서 메뉴로 날아가고 있고 페이지 스크롤바 옆에 메뉴의 스크롤바가있는 것을 원하지 않는다 ... 너무 혼란스러워. 방향 전환보다 이것을 사용하면 애니메이션 버벅 거림이 적습니다.
Davin Studer

내가 같이하는 LOOOT .. 감사합니다 남자
Hady Shaltout

2
이 방법은 수평 스크롤바를 맨 위에 놓는 데에도 사용할 수 있습니다.transform: scaleY(-1)
Daniel Williams

9

아니요, 추가 문제없이 스크롤바 위치를 변경할 수 없습니다.

텍스트 방향을 오른쪽에서 왼쪽 (rtl)으로 변경할 수 있지만 블록 내부의 텍스트 위치도 변경합니다.

이 코드는 도움이 될 수 있지만 모든 브라우저와 OS에서 작동하는지 확신 할 수 없습니다.

<element style="direction: rtl; text-align: left;" />

IE와 Opera가 RTL 콘텐츠의 왼쪽에 스크롤바를 배치하는 유일한 브라우저라고 생각합니다.
Joey

0

다음은 오른쪽 스크롤 막대가 작동하도록하기 위해 수행 한 작업입니다. 고려해야 할 유일한 것은 'direction : rtl'을 사용할 때이며 전체 테이블도 변경해야하는 경우입니다. 바라건대 이것은 당신에게 그것을하는 방법에 대한 아이디어를 제공합니다.

예:

<table dir='rtl'><tr><td>Display Last</td><td>Display Second</td><td>Display First</td></table>

이것을 확인하십시오 : JSFiddle


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