文本对齐:在<select>或<option>上


82

有谁知道是否有可能将文本对齐到WebKit中一个<select>或更具体的<option>元素的右边。这不必是包括IE的跨浏览器解决方案,但如果可能的话,应该是纯CSS。

我都尝试过:

select { text-align: right }option { text-align: right },但似乎都无法在WebKit中使用(Chrome,Safari或Mobile Safari。

任何帮助表示感谢!


3
在某个地方,确实有一个愚蠢的原因为什么option {text-align: right;}不起作用。
鲍勃·斯坦

Answers:


81

您可以尝试使用“ 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年

31
这并非在所有情况下都有效:<option> 23“ x 42” </ option>产生“ x 42” 23。rtl还更改了在屏幕阅读器中的阅读方式。
杰森·T·费瑟辛汉姆

9
只是为了给它适当的外观而没有考虑在某些特殊情况下将如何处理它,这看起来像是一个肮脏的hack吗?
谢尔盖·巴沙罗夫

28
恕我直言,这是不好的,有两个原因。1.从语义上讲是错误的。2.在Chrome 30中,dir="rtl"将指示下拉列表的箭头向左移动。
feklee

12
这是一个可怕的主意。RTL适用于按从右到左顺序绘制字符的语言,并且如果以LTR语言编写该内容,则会极大地破坏您在这种选项中放置的内容。例如,日期如“ 2017年8月10日”将绘制为“ 2017年8月10日”。您无法控制它对文本的作用。请勿使用。
devios1

71

以下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

感谢@ pshep123。非常感谢您的评论:)
Laiacy

当我单击下拉列表时(至少在Windows Google Chrome上),这似乎对选项值不起作用。它仅在切换下拉菜单之前有效。
瑞安

1
@Ryan,我已经编辑了答案。现在适用于下拉菜单中的select和option值。让我知道它是否对您
有用-Laiacy

对我来说,这就是答案。我想将小箭头保留在右侧,但选项应正确对齐=>这就是实现的答案
Unchained

31

对我来说最好的解决方案是

select {
    direction: rtl;
}

然后

option {
    direction: ltr;
}

再次。因此,在屏幕阅读器中阅读文本的方式没有改变,也没有格式问题。


1
刚刚发现IE6-8(不了解IE8 +)并没有提供正确的答案……:-/
Martin Schilliger 2013年

而且在Firefox中这也无法正常工作。在Webkit中似乎只有一个好主意…
Martin Schilliger 2013年

如果您的html包含(),则将()移动到行的开头(在左边第一个字符之前)。> _ <
rm-

另外,如果您将“()”粘贴为&#40;&#41;
Martin Schilliger

1
但是,在Firefox上,当前(选定)值的左侧显示为“ AM”(“ AM 9:30”)。
Mark Schneider


1

我面临着同样的问题,我需要将选择的占位符值对齐到选择框的右边,还需要将选项对齐到右边,但是当我使用了Direction时:选择并应用一些右填充来选择,然后所有选项也会通过填充向右移,因为我只想将填充应用于所选的占位符。

我已通过以下样式解决了此问题:

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

select option{
  direction: rtl;
}

您可以根据需要更改文本缩进。希望对您有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.