什么是正确的“-moz-appearance”值来隐藏<select>元素的下拉箭头

我试图使用CSS对<select>元素的下拉箭头进行样式化,它在Chrome / Safari中完美工作:

 select { -webkit-appearance: button; -webkit-border-radius: 2px; -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); -webkit-padding-end: 20px; -webkit-padding-start: 2px; -webkit-user-select: none; background-image: url('./select-arrow1.png') ; background-position: center right; background-repeat: no-repeat; border: 1px solid #AAA; margin: 0; padding-top: 2px; padding-bottom: 2px; width: 200px; } 

在这里看到的精美呈现

通过这个逻辑,我必须做的唯一事情就是把所有的-webkit-*东西join到Firefox中:

 -moz-appearance: button; -moz-border-radius: 2px; -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); -moz-padding-end: 20px; -moz-padding-start: 2px; -moz-user-select: none; 

它适用于99%,唯一的问题是默认的下拉箭头不会消失,并保持在背景图像的顶部

它看起来像-moz-appearance: button; 不适用于<select>元素。 另外-moz-appearance: none; 无法删除默认的下拉箭头。

那么删除默认下拉箭头的-moz-appearance的正确值是什么?

更新:

2014年12月11日停止发明新的黑客 。 经过4年半的时间, -moz-appearance:none自Firefox 35以来, -moz-appearance:none开始工作。虽然moz-appearance:button仍然是坏的,但是无论如何你都不需要使用它。 这是一个非常基本的工作例子。

2014年4月28日 :提到的css hack工作了几个月,但自2014年4月初以来,这个bug在所有平台上每天晚上都回到Firefox 31.0.a1。

这是他们! 固定!


等着瞧: https : //bugzilla.mozilla.org/show_bug.cgi?id = 649849

或解决方法


对于那些想知道的人:

https://bugzilla.mozilla.org/show_bug.cgi?id=649849#c59

首先,因为这个bug有很多敌意的垃圾邮件,所以任何被分配到这个垃圾邮件的人都会造成一个敌对的工作场所。

其次,有能力这样做(包括重写)的人暂时被分配到另一个项目(b2g),并且没有时间直到项目接近完成。

第三,即使这个人再次有时间,也不能保证这将是一个优先事项,因为尽pipewebkit有这个,它打破了应该如何工作的规范(这是我被告知,我不亲自知道规格)

现在看到https://wiki.mozilla.org/B2G/Schedule_Roadmap ;)


该页面不再存在,错误尚未解决,但JoãoCunha 可以接受的解决方法 ,你们现在可以感谢他了!

更新:这是固定在Firefox v35。 详情请参阅完整要点 。


== 如何隐藏Firefox中的select箭头 ==

只是想出了如何做到这一点。 诀窍是使用-prefix-appearancetext-indenttext-overflow 。 这是纯CSS,不需要额外的标记。

 select { -moz-appearance: none; text-indent: 0.01px; text-overflow: ''; } 

长话短说,把它向右推一点,溢出就会摆脱箭头。 漂亮整洁,是吧?

关于这个我刚刚写的主旨的更多细节。 在Ubuntu,Mac和Windows上进行testing,都是最新的Firefox版本。

要摆脱默认的下拉箭头使用:

 -moz-appearance: window; 

尝试把不透明度:0; 你的select元素将是不可见的,但是当你点击它时,这些选项将是可见的。

在Mac OS -moz-appearance: window; 将删除MDN文档中的箭头: https : //developer.mozilla.org/en-US/docs/CSS/-moz-appearance 。 在Mac OS X 10.8.2上testingFirefox 13。 另见: https : //bugzilla.mozilla.org/show_bug.cgi?id = 649849#c21 。

当我们仍然在等待FF35中的修复时,值得尝试以下两个选项:

 select { -moz-appearance: scrollbartrack-vertical; } 

要么

 select { -moz-appearance: treeview; } 

他们只会隐藏你已经放入的任何箭头背景图像自定义样式您的select元素。 所以你得到一个沼泽标准的浏览器箭头,而不是一个可怕的浏览器箭头和自己的自定义箭头组合。

虽然你还不能让Firefox删除下拉箭头(见MatTheCat的post),你可以隐藏你的“风格化”的背景图像显示在Firefox中。

 -moz-background-position: -9999px -9999px!important; 

这将把它定位在框架外,留下默认的select框箭头 – 同时保持Webkit中的风格化版本。

它正在工作时添加:

select{width:115%}