左側にdivスクロールバーを配置するにはどうすればよいですか?


85

divに垂直スクロールバーを配置する位置(左側または右側)を指定することはできますか?

たとえば、オーバーフロー属性の使用方法を説明しているこのページを見てください。そのスクロールバーをスクロール可能な領域の左側に配置する方法はありますか?


このスレッドを見てください。このIm恐れの制限のいくつかを示しています。stackoverflow.com/questions/5123417/...
グレアムLeighfield

回答:


61

実例:JSFiddle

または

すべての主要なブラウザで機能するカットアンドペーストソリューション(Safariでも)

任意の高さまたは幅で機能します

<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 2018

2
申し訳ありませんが、私は迅速に対応して間違いを犯しました。あなたは正しいです。回答を更新しました。
jasonleonhard 2018

1
また、すべての直接の子に方向をリセットするために、別のCSSルールを使用することができます.list_container > * { direction: ltr; }
エリック・シュレイナー

74

あなたはdirection:rtl;あなたのCSSで試すことができます。次に、内側のテキストの方向をリセットしますdiv

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

#scroll div{
    direction:ltr;
}

テストされていません。


2
RTLコンテンツの左側にスクロールバーを配置するブラウザはIEとOperaだけだ​​と思います。
ジョーイ

2
@Joeyは真実ではないubuntuの下でもクロム
トム

Chrome32が左側にあることを確認したいと思います。そしてこの時点で、FirefoxがCSSの遅れであるのは当然のことです
George Mauer

1
chrome / macとfirefox / macで作業していますが、safari / macでは作業していません
maxime schoeni 2016年

1
@GeorgeMauer Mozillaは、意図的にRTLコンテンツ用に右側のスクロールバーを残しました。当時、ユーザーが現在のページのコンテンツに基づいて筋肉の記憶を変更しなければならない場合、それはユーザビリティの問題になると考えていました。私はその議論に参加していました。それはMozillaのBugzillaにあります。
TsahiAsher18年

32

私は同じ問題を抱えています。しかしdirection: rtl;、タブとアコーディオンコンボを追加すると、構造がクラッシュします。

これを行う方法はdirection: rtl;、親要素としてdivを追加し、子divセットの場合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 {}
johnktejik19年

32

ちょっと古い質問ですが、この質問をしたときに広く利用できなかった方法を投入すべきだと思いました。

最近のブラウザtransform: scaleX(-1)では、親を使用してスクロールバーの側面<div>を反転してから、同じ変換を適用して子の「スリーブ」要素を反転させることができます。

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
これは、最も優れたソリューションの1つです。
ミロン2017

1
ありがとう!私の理解では、テキストの方向を変えることもできます。変換プロパティはもっと...エレガントに感じますか?少なくとも、より意味的に正しいです。:)
Dom Ramirez

2
この方法を使用すると、GPUの機能強化の恩恵も受けられると思います。画面の右側からメニューを飛んでいますが、ページのスクロールバーの横にあるメニューのスクロールバーが必要ではありません...混乱しすぎています。これを使用すると、方向の切り替えよりもアニメーションのジャンクが少なくなります。
Davin Studer 2017年

私はそのLOOOTが好きです..ありがとう男
Hady Shaltout 2018

2
また、このメソッドは、最上部に水平スクロールバーを置くために使用することができます:transform: scaleY(-1)
ダニエル・ウィリアムズ

9

いいえ、追加の問題なしにスクロールバーの配置を変更することはできません。

テキストの方向を右から左(rtl)に変更できますが、ブロック内のテキストの位置も変更されます。

このコードは役に立ちますが、すべてのブラウザとOSで機能するかどうかはわかりません。

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

RTLコンテンツの左側にスクロールバーを配置するブラウザはIEとOperaだけだ​​と思います。
ジョーイ

0

これが、右のスクロールバーを機能させるために私が行ったことです。考慮する必要があるのは、「方向: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.