metin hizalama: sağ <seç> veya <seçenek>


85

Bir sağındaki hizalama metne mümkün olmadığını biliyor mu <select>veya daha spesifik <option>içinde eleman WebKit . Bunun, IE'yi içeren tarayıcılar arası bir çözüm olması gerekmez, ancak mümkünse saf CSS olmalıdır.

İkisini de denedim:

select { text-align: right }ve option { text-align: right }, ancak WebKit'te (Chrome, Safari veya Mobile Safari) çalışmadığı görülüyor.

Herhangi bir yardım minnetle alındı!


4
Bir yerlerde işe yaramamasının gerçekten aptalca bir nedeni var option {text-align: right;}.
Bob Stein

Yanıtlar:


81

"Dir" özelliğini kullanmayı deneyebilirsiniz, ancak bunun istenen etkiyi yaratacağından emin değilim?

<select dir="rtl">
    <option>Foo</option>    
    <option>bar</option>
    <option>to the right</option>
</select>

Demo burada: http://jsfiddle.net/fparent/YSJU7/


2
Aslında bu mükemmel. appearance: none;Yine de özniteliği kullanıyordum , bu nedenle açılır menünün konumu önemli değil. Teşekkürler!
BenM

32
Bu her durumda çalışmaz: <seçenek> 23 "x 42" </option>, "x 42" 23 değerini verir. rtl ayrıca bir ekran okuyucuda okunma biçimini de değiştirir.
Jason T Featheringham

10
Bazı özel durumlarda nasıl işleneceğini düşünmeden ona düzgün bir görünüm vermek kirli bir hack gibi görünmüyor mu?
Sergei Basharov

29
IMHO bu iki nedenden dolayı kötü. 1. Anlamsal olarak yanlış. 2. Chrome 30'da, dir="rtl"açılır menüyü gösteren oku sola hareket ettirir.
feklee

14
Bu KORKUNÇ bir fikir çocuklar. RTL, karakterleri sağdan sola sırayla çizen diller içindir ve bu tür bir seçeneğe koyduğunuz içeriği, eğer bu içerik LTR dilinde yazılmışsa, çok fazla bozacaktır. Örneğin "10 Ağustos 2017" gibi bir tarih "Ağustos 2017 10" olarak çizilecektir. Metninize ne yaptığı üzerinde HİÇBİR kontrole sahip değilsiniz. Bunu KULLANMAYIN.
devios1

74

Aşağıdaki CSS, hem oku hem de seçenekleri sağa hizalayacaktır:

select { text-align-last: right; }
option { direction: rtl; }
<!-- example usage -->
Choose one: <select>
  <option>The first option</option>
  <option>A second, fairly long option</option>
  <option>Last</option>
</select>


2
Teşekkürler @Laiacy - Bu harika! Daha çok oy alacağınızı umuyorum.
elPastor

Teşekkürler @ pshep123.
Yorumunuz

Açılır menüyü tıkladığımda bu seçenek değerleri için çalışmıyor gibi görünüyor (en azından Windows Google Chrome'da). Yalnızca açılır menü değiştirilmeden önce çalışır.
Ryan

1
@Ryan, cevabımı düzenledim. Artık açılır menüdeki seçme ve seçenek değerleri için geçerlidir. Sizin için işe
yarayıp yaramadığını

Benim için cevap bu. Küçük oku sağ tarafta tutmak istedim ama seçenekler doğru hizalanmalı => bunu başaran cevap bu
Unchained

31

Benim için en iyi çözüm yapmaktı

select {
    direction: rtl;
}

ve sonra

option {
    direction: ltr;
}

tekrar. Dolayısıyla, bir ekran okuyucuda metnin nasıl okunduğunda bir değişiklik veya biçimlendirme sorunu yoktur.


1
IE6-8'in (IE8 + hakkında bilmiyorum) bunu doğru yapmadığını öğrendim…: - /
Martin Schilliger

Ayrıca Firefox'ta bu doğru çalışmıyor. Yalnızca Webkit'te iyi bir fikir gibi görünüyor…
Martin Schilliger

html seçeneğiniz satırın başına (yani soldaki ilk karakterden önce) taşıyacak () içeriyorsa. > _ <
rm-

Ayrıca &#40;ve olarak "()" yapıştırırsanız &#41;?
Martin Schilliger

1
Bununla birlikte, Firefox'ta mevcut (seçilen) değer solda "AM" ("AM 9:30") ile gösterilir.
Mark Schneider


1

Seçili yer tutucu değerini seçim kutusunun sağına hizalamam ve aynı zamanda seçenekleri sağa hizalamam gerektiği, ancak yönü kullandığımda aynı sorunla karşı karşıyaydım: rtl; Seçmek için bazı sağ dolguyu seçmek ve uygulamak, ardından tüm seçenekler de yalnızca seçili yer tutucuya dolgu uygulamak istediğim için dolgu ile sağa kayıyor.

Sorunu aşağıdaki stille düzelttim:

select:first-child{
  text-indent: 24%;
  direction: rtl;
  padding-right: 7px;
}

select option{
  direction: rtl;
}

Metin girintisini ihtiyacınıza göre değiştirebilirsiniz. Umarım size yardımcı olur.

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.