2013-03-12 146 views
67

因此,使用Mozilla和WebKit,我有一个半体面的解决方案,使用appearance: none;替代select框中的箭头并具有父元素。删除IE10选择元素箭头

在大多数情况下,我禁用了这个功能。对于IE10我实际上不能禁用它,因为我的条件注释实际上不工作。

这里是我的标记:

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]--> 
<!--[if IE 7 ]> <html class="ie7"> <![endif]--> 
<!--[if IE 8 ]> <html class="ie8"> <![endif]--> 
<!--[if IE 9 ]> <html class="ie9"> <![endif]--> 
<!--[if (gt IE 9)]> <html class="ie10plus"> <![endif]--> 
<!--[if !(IE)]><!--> <html> <!--<![endif]--> 

ie10plus并不能使它的方式来标记。

我也觉得有可能是一种合法的方式来取代IE中的箭头。我并不反对真正解决问题。然而,appearance: none;不起作用。那么我能在这里做什么?

+0

什么?你想设置外观:没有为ie10,就像你正在为壁虎和Firefox的样式? ie10应该在样式表中设置它的样式。您可以使用条件来定位其他对象,并为真正的浏览器提供主样式表 – albert 2013-03-12 03:18:38

+0

@albert外观:没有任何作品。它不会删除选择框的箭头。 – Parris 2013-03-12 03:57:32

+0

啊。 MB。所以你的问题是什么?如何检测和一个类为ie10? – albert 2013-03-12 04:03:54

回答

270

避免浏览器嗅探和条件注释(它们在Internet Explorer 10中不受支持),而是采用更标准的方法。有了这个特殊的问题,您应该瞄准::-ms-expand伪元素:

select::-ms-expand { 
    display: none; 
} 
+1

@Parris谢谢。我希望您比其他常用方法更适合实施此解决方案。 – Sampson 2013-04-11 01:42:39

+0

@JonathanSampson我实际上是在寻找像这样的改变。 – Parris 2013-04-11 01:56:18

+2

这真棒谢谢:不幸的是,它不工作在IE9虽然:( – Pawcu 2013-10-01 12:31:25

1

Internet Explorer 10 doesn't support conditional comments,所以你必须做别的。一种解决方案是嗅出用JavaScript的用户代理,并添加类自己:

<script> 
if (navigator.userAgent.indexOf("MSIE 10.0") !== -1) { 
    document.documentElement.className += " ie10"; 
} 
</script> 

你或许应该在<head>所以加这一点,你没有的无样式内容的闪光灯,但可能不会是一个问题。

另外,如果你使用jQuery,你可能想要做这样的事情:

if (navigator.userAgent.indexOf("MSIE 10.0") !== -1) { 
    $("html").addClass("ie10"); 
} 

如果你想检查IE10以上,复制粘贴功能getInternetExplorerVersionfrom this Microsoft page然后更改if到这样的事情:

if (getInternetExplorerVersion() >= 10) { 
    // whatever implementation you choose 
} 
-1

仍然不知道你想什么来完成,但这会检测并添加一类IE10:
<!--[if !IE]><!--<script> if (/*@[email protected]*/false) { document.documentElement.className+=' ie10plus'; } </script>!--<![endif]-->

+0

不知道为什么这得到了downvoted ...我认为约翰纳森桑普森的答案更优雅,应该选择。但下来投票? weak.sauce。 – albert 2013-04-11 02:10:21

+0

这是downvoted,因为它是一个黑客试图迫使IE10识别条件注释。被接受的答案的“标准方法”是使用这些供应商伪元素:http://msdn.microsoft.com/en-us/library/windows/apps/hh767361.aspx – Benxamin 2013-06-13 17:39:40

+0

1.您的技术在IE标准模式按照Evan的回答中的链接(在IE11中删除了HTML条件,在IE11中删除了JS条件 - 因为它们是非标准的)。 2.供应商前缀是处理浏览器特定功能的标准方式。 – robocat 2014-10-13 02:37:38

0

我有一个问题与IE 10和11的隐藏下拉箭头的网站上,我的工作,它使用Zurb基金会。有在_form.scss一行其中有

select::-ms-expand { 
    display: none; 
} 

删除它和下拉箭头开始正常显示在所有broswers。谢谢乔纳森在这里给你答案。这帮助我搜索了很多解决方案。

+0

请使用评论这种事情,而不是一个额外的答案。 – 2014-05-14 16:59:31

+0

Zurb基金会的意外的行为带我到这里,感谢您的答案,或评论!) – 2014-08-25 20:03:48

+0

这是怎么样的不同被接受的答案? – 2017-03-16 09:52:32

2

但是!如果我们想要增加宽度,我们不能也这样做:

display:none

所以

select::-ms-expand { 
/* IE 8 */ 
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; 
/* IE 5-7 */ 
filter: alpha(opacity=0); 
/* Good browsers :) */ 
opacity:0; 
}