text-align:<select>または<option>の右側


84

それが右に整列したテキストに可能かどう誰もが知っている<select>か、より具体的<option>で要素のWebKitを。これは、IEを含むクロスブラウザーソリューションである必要はありませんが、可能であれば純粋なCSSである必要があります。

私は両方を試しました:

select { text-align: right }およびoption { text-align: right }、ただし、どちらもWebKit(Chrome、Safari、またはMobile Safari)では機能していないようです。

どんな助けもありがたく受けました!


4
どこかで、うまくoption {text-align: right;}いかないという本当にばかげた理由があります。
ボブ・スタイン

回答:


80

「dir」属性を使用してみることができますが、それで目的の効果が得られるかどうかわかりません。

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

ここでのデモ:http//jsfiddle.net/fparent/YSJU7/


2
実際、それは完璧です。appearance: none;とにかく属性を使用していたので、ドロップダウンの位置は関係ありません。ありがとう!
BenM 2011年

32
これはすべての場合に機能するわけではありません。<option> 23 "x 42" </ option>は "x 42" 23になります。rtlは、スクリーンリーダーでの読み取り方法も変更します。
ジェイソンTフェザリンガム2012

10
特別な場合にどのように処理されるかを考えずに、適切な外観を与えるためだけに、汚いハックのように見えませんか?
セルゲイバシャロフ2013年

29
私見これは2つの理由で悪いです。1.意味的に間違っています。2. Chrome 30ではdir="rtl"、ドロップダウンを示す矢印を左に移動します。
feklee 2013年

14
これはひどい考えの人です。RTLは、文字を右から左の順序で描画する言語を対象としており、そのコンテンツがLTR言語で記述されている場合、そのようなオプションに入力したコンテンツを非常に台無しにします。たとえば、「2017年8月10日」のような日付は「2017年8月10日」として描画されます。あなたはそれがあなたのテキストに何をするかを制御することはできません。これは使用しないでください。
devios1 2017

74

次のCSSは、矢印とオプションの両方を右揃えにします。

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
ありがとう@ Laiacy-これは素晴らしいです!私はあなたがもっと多くの賛成票を得ると期待しています。
elPastor 2017年

@ pshep123に感謝します。私はあなたのコメントに本当に感謝します:)
Laiacy 2017年

ドロップダウンをクリックしたときのオプション値では、これは機能しないようです(少なくともWindows Google Chromeでは)。ドロップダウンが切り替わる前にのみ機能します。
ライアン

1
@ライアン、私は私の答えを編集しました。これで、ドロップダウンの選択値とオプション値に適用されます。それがあなたのために働くかどうか私に知らせてください
Laiacy 2017年

私にとってこれが答えです。右側に小さな矢印を残したかったのですが、オプションを右揃えにする必要があります=>これがそれを実現する答えです
Unchained

31

私にとって最善の解決策は

select {
    direction: rtl;
}

その後

option {
    direction: ltr;
}

再び。したがって、スクリーンリーダーでのテキストの読み方に変更はなく、フォーマットの問題もありません。


1
IE6-8(IE8 +については知らない)がそれを正しくレンダリングしないことがわかった…:-/
Martin Schilliger 2013

また、Firefoxではこれは正しく機能しません。Webkitでのみ良いアイデアのようです…
Martin Schilliger

オプションhtmlに()が含まれている場合、)は行の先頭(つまり、左側の最初の文字の前)に移動します。> _ <
rm- 2016年

また、「()」を&#40;&#41;
Martin Schilliger

1
ただし、Firefoxでは、現在の(選択された)値は左側に「AM」(「AM9:30」)で表示されます。
マークシュナイダー


1

選択したプレースホルダーの値を選択ボックスの右側に揃える必要があり、オプションも右側に揃える必要があるという同じ問題に直面していましたが、方向を使用した場合:rtl; 選択していくつかの右パディングを適用して選択すると、選択したプレースホルダーにのみパディングを適用したいので、すべてのオプションもパディングによって右にシフトします。

次のスタイルで問題を修正しました。

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

select option{
  direction: rtl;
}

要件に応じて、テキストのインデントを変更できます。それがあなたを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.