您已要求 IE8 和 IE9 的解决方案。
让我们从 IE8 开始。简短的回答:这是不可能的。由于 IE8 和更早版本呈现选择框的方式,您根本无法隐藏下拉箭头。选择框控件无法在旧 IE 中设置样式,并且总是出现在任何其他内容之上。
除了用 Javascript 重写整个选择框控件之外,根本没有任何解决方案。
现在IE9。您可以隐藏下拉箭头。这不是标准的东西,但你可以破解它。
您需要从<div>
选择框周围的包装元素(例如 a )开始。然后,您可以使用:before
选择器对其进行样式设置,以在下拉箭头的顶部放置额外的内容,从而有效地隐藏它。
这是CSS:
div {
position:relative;
display:inline-block;
z-index:0
}
div select {
z-index:1;
}
div:before {
display:block;
position:absolute;
content:'';
right:0px;
top:0px;
height:1em;
width:1em;
margin:2px;
background:red;
z-index:5;
}
...并在此处查看 jsFiddle 以查看它的实际效果。
请注意,我使用red
了覆盖颜色以使正在发生的事情变得明显。显然,在正常使用中,您会想要使用白色,这样它就不会突出。
您还会注意到,正如我上面所说,这在 IE8 中不起作用。
显然,这与 IE10 和其他浏览器的“正确”解决方案不同,后者实际上删除了箭头;我们在这里所做的只是隐藏它。这意味着我们最终会在箭头所在的选择框末端出现一个恼人的白色补丁。
我们可以做进一步的样式来解决这个问题:例如,如果我们将容器元素设置为固定宽度并使用overflow:hidden
,我们可以摆脱白色补丁,但是我们会遇到选择框的边框被破坏的问题,所以我们必须做进一步的样式修复;这一切都会变得有点混乱。另外,当然,此选项仅在选择框本身是已知的固定宽度时才有效。
所以你有它:在 IE9 中有执行此操作的选项。虽然它们并不漂亮,坦率地说可能不值得付出努力。但如果你很绝望,你可以做到。
哦,别忘了把这个 CSS 代码具体化,这样它就只能在 IE9 上运行,否则会在其他浏览器上引起问题。