Sol tarafa bir div kaydırma çubuğu nasıl yerleştirilir?


85

Bir div üzerindeki dikey kaydırma çubuğunun yerleşimi için bir konum (sol veya sağ taraf) belirtmek mümkün mü?

Örneğin , overflow niteliğinin nasıl kullanılacağını açıklayan bu sayfaya bakın . Bu kaydırma çubuğunu kaydırılabilir alanın sol tarafına yerleştirmenin bir yolu var mı?


Bu konuya bir göz atın. Korkarım bu konuda bazı sınırlamalar gösteriyor. stackoverflow.com/questions/5123417/…
Graeme Leighfield

Yanıtlar:


61

Çalışma Örneği: JSFiddle

veya

Tüm büyük tarayıcılar için çalışan kes ve yapıştır çözümü (Safari bile)

Herhangi bir yükseklik veya genişlik çalışacaktır

<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_directionKap yönünü korurken metin akışının yönünü değiştirmek için isteğe bağlı olarak her bir öğeye ekleyin .


Yardım etmekten mutlu olmak.
jasonleonhard

3
Bir yan not olarak: Bu cevap, yinelenen kimlikler içerdiğinden geçerli HTML değildir. Bunun class="item_direction"yerine id="item_direction"ve .item_direction {yerine olmalıdır #item_direction {.
movabo

2
Özür dilerim, çabuk cevap verdim ve bir hata yaptım, haklısınız ve cevabımı güncelledim.
jasonleonhard

1
Tüm doğrudan çocuklarda yönü sıfırlamak için başka bir CSS kuralı da kullanabilirsiniz:.list_container > * { direction: ltr; }
Erich Schreiner

74

direction:rtl;CSS'nizde deneyebilirsiniz . Ardından iç kısımdaki metin yönünü sıfırlayın.div

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

#scroll div{
    direction:ltr;
}

Test edilmemiş.


2
RTL içeriği için kaydırma çubuğunu sola yerleştiren tek tarayıcıların IE ve Opera olduğunu düşünüyorum.
Joey

2
@Joey, ubuntu altında krom da doğru değil
Tom

Soldaki Chrome 32 konumlarını onaylamak istiyorum. Ve bu noktada, Firefox'un css'de geride kalması şaşırtıcı değil
George Mauer

1
Chrome / mac ve firefox / mac üzerinde çalışıyor ancak safari / mac değil
maxime schoeni

1
@GeorgeMauer Mozilla, RTL içeriği için sağdaki kaydırma çubuğunu kasıtlı olarak bıraktı. O zamanlar, kullanıcının kas hafızasını mevcut sayfa içeriğine göre değiştirmek zorunda kalmasının bir kullanılabilirlik sorunu olacağına inandık. Mozilla'nın Bugzilla'sında bulunan bu tartışmanın bir parçasıydım.
Tsahi Asher

32

Bende de aynı sorun var. ama direction: rtl;sekme ve akordeon kombosu eklediğimde yapımı çökertiyor.

Bunu yapmanın yolu direction: rtl;, üst öğe olarak ve alt div kümesi için div eklemektir direction: ltr;.

Bu ilk https://api.jquery.com/wrap/ kullanıyorum

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

o zaman sadece css ile çalışın :)

Çocuklarda div css'ye ekle

 .your_class {
            direction: ltr;    
        }

Ve jQuery tarafından class .scroll ile eklenen üst div öğesine

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

Benim için kaymakam çalışıyor

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


Veya şu şekilde css yapabilirsiniz: .scrollBarOnLeft {unicode-bidi: bidi-override; yön: rtl; taşma: kaydırma; overflow-x: gizli! önemli; } .scrollBarOnLeft> div {yön: ltr; } .scrollBarOnLeft> div> div {}
john ktejik

32

Biraz eski bir soru, ama bu soru sorulduğunda pek yaygın olmayan bir yöntemi eklemem gerektiğini düşündüm.

Modern tarayıcılarda kaydırma çubuğunun kenarını transform: scaleX(-1)bir üst <div>öğe üzerinde kullanarak ters çevirebilir, ardından aynı dönüşümü çocuk "kılıf" öğesini ters çevirmek için uygulayabilirsiniz.

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
}

Not: IE 9 kadar eski tarayıcılar için bir -ms-transformveya -webkit-transformönek kullanmanız gerekebilir. CanIUse'u kontrol edin ve eski tarayıcı gereksinimlerini görmek için "tümünü göster" i tıklayın.


3
Bu, en göze çarpan çözümlerden biridir.
Miron

1
Teşekkürler! Anladığım kadarıyla metin yönünü değiştirmek de işe yarıyor. Dönüştürme özelliği daha şık hissettiriyor mu? En azından anlamsal olarak daha doğru. :)
Dom Ramirez

2
Bu yöntemi kullanarak bazı GPU geliştirmelerinden de yararlanacağınızı düşünüyorum. Ekranın sağ tarafından bir menüde uçuyorum ve menü kaydırma çubuğunun sayfa kaydırma çubuğunun yanında olmasını istemiyorum ... çok kafa karıştırıcı. Bunu kullanarak yön değiştirmeye göre daha az animasyon şakası elde ediyorum.
Davin Studer

Bunu çok beğendim .. Teşekkürler dostum
Hady Shaltout

2
Bu yöntem aynı zamanda yatay kaydırma çubuğunu en üste koymak için de kullanılabilir:transform: scaleY(-1)
Daniel Williams

9

Hayır, herhangi bir ek sorun olmadan kaydırma çubuklarının yerleşimini değiştiremezsiniz.

Metin yönünü sağdan sola (rtl) olarak değiştirebilirsiniz, ancak aynı zamanda blok içindeki metnin konumunu da değiştirir.

Bu kod size yardımcı olabilir, ancak tüm tarayıcılarda ve işletim sistemlerinde çalıştığından emin değilim.

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

RTL içeriği için kaydırma çubuğunu sola yerleştiren tek tarayıcıların IE ve Opera olduğunu düşünüyorum.
Joey

0

İşte doğru kaydırma çubuğunun çalışması için yaptığım şey. Dikkate alınması gereken tek şey, 'direction: rtl' kullanılırken ve tüm tablonun da değiştirilmesi gerektiğidir. Umarım bu size nasıl yapılacağına dair bir fikir verir.

Misal:

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

Şunu kontrol edin: JSFiddle


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.