如何从下拉列表(选择元素)中删除默认箭头图标?

Posted

技术标签:

【中文标题】如何从下拉列表(选择元素)中删除默认箭头图标?【英文标题】:How to remove the default arrow icon from a dropdown list (select element)? 【发布时间】:2013-05-12 07:45:01 【问题描述】:

我想从 html <select> 元素中删除下拉箭头。例如:

<select style="width:30px;-webkit-appearance: none;">
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    ...
</select>

在 Opera、Firefox 和 Internet Explorer 中如何操作?

【问题讨论】:

一些将其隐藏在 Firefox 中的答案/技巧 - ***.com/questions/5912791/… appearance#slectType -webkit-appearance: none; appearance: none /*menulist*/ !important; max-width: 300px; line-height: 0px; input[type='text'], select max-height: 30px;max-width: 300px; text-align-last: center; /*text-indent: 5px;*/ button:hover color: #FFF;background-color: #566977;box-shadow:none;border-color: #759AB5; #errorMSGz-index: 2147483647; 浏览[CH:-webkit, FF:-moz, IE:-ms, Oprea:-o]; Remove Select arrow on IE的可能重复 HTML hide Select drop down arrow with css的可能重复 【参考方案1】:

如果你使用TailwindCSS 您可以利用 appearance-none 类。

<select class="appearance-none">
  <option>Yes</option>
  <option>No</option>
  <option>Maybe</option>
</select>

【讨论】:

【参考方案2】:

就我而言(在最新的 Mozilla 版本 94.0.2 上),

select 
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;

不起作用,但在检查 css 后我找到了解决方案:

箭头包含在background-image 中,所以我通过添加background-image: none; 解决了它

我建议使用所有规则

select 
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  background-image: none;
 

【讨论】:

【参考方案3】:

前面提到的解决方案适用于 chrome,但不适用于 Firefox。

我找到了一个Solution,它在 Chrome 和 Firefox 中都能很好地工作(不是在 IE 上)。将以下属性添加到您的 SELECT 元素的 CSS 并调整 margin-top 以满足您的需要。

select 
  -webkit-appearance: none;
  -moz-appearance: none;
  text-indent: 1px;
  text-overflow: '';
<select>
  <option>one</option>
  <option>two</option>
  <option>three</option>

</select>

【讨论】:

这个技巧在 Firefox 版本 31 上停止工作(在 2014 年 5 月的 Nightly 版本中)。让我们看看同时可以做些什么。我写的这个要点有完整的内幕:gist.github.com/joaocunha/6273016 Joäo Cunha 的方法检查并成功使用。看的时候别忘了在firefox里打开链接! 它对我有用。我想将它用于 wkhtmltopdf 以从 html 生成 pdf。谢谢 text-indent 仅影响活动选项,而 padding-left 影响所选选项和下拉菜单中的选项,这看起来更清晰 IMO。如果您只是想删除箭头,我认为不需要文本溢出。【参考方案4】:

无需破解或溢出。 IE上的下拉箭头有一个伪元素:

select::-ms-expand 
    display: none;

【讨论】:

因为问题是如何删除 IE 中的下拉箭头。 IE9 没有此功能,但在 IE10 中有效。因此,除非您使用的是 Windows XP,否则无论如何您都应该使用 IE10。 IE11 差不多了。另一个选项是一个丑陋的 CSS hack 来隐藏实际的下拉按钮并自己制作。 link 这是隐藏溢出的丑陋技巧 在 IE11 中工作。谢谢! 这在 Firefox 中不起作用。在 Firefox 中使用 Varun Rathore 的解决方案。 这仅适用于 IE。当然它不会在 Firefox 中工作。【参考方案5】:

从选择中删除下拉箭头的简单方法

select 
  /* for Firefox */
  -moz-appearance: none;
  /* for Chrome */
  -webkit-appearance: none;


/* For IE10 */
select::-ms-expand 
  display: none;
<select>
  <option>2000</option>
  <option>2001</option>
  <option>2002</option>
</select>

【讨论】:

我刚刚将 appearance: none 用于 Chrome 和 Firefox Quantum(v59 及更高版本)。 IE。 不再需要vendor prefixes了。 @Cphpython 截至此评论的大多数浏览器仍然有一个“部分支持前缀”标签...... @CPHPython 您需要在您的项目中安装Autoprefixer 才能使无前缀的appearance: none 工作。大多数浏览器仍然需要前缀。 @DanielTonon 哦,也许我正在使用一些类似的 postcss 包。我不记得确切,但我想我在评论之前检查了浏览器的检查器。 这应该是公认的答案,因为它实际上回答了问题:-)【参考方案6】:

正如我在Remove Select arrow on IE 中回答的那样

如果你想使用类和伪类:

.simple-control 是你的 CSS 类

:disabled 是伪类

select.simple-control:disabled
         /*For FireFox*/
        -webkit-appearance: none;
        /*For Chrome*/
        -moz-appearance: none;


/*For IE10+*/
select:disabled.simple-control::-ms-expand 
        display: none;

【讨论】:

【参考方案7】:

适用于所有浏览器和所有版本:

JS

jQuery(document).ready(function ()     
    var widthOfSelect = $("#first").width();
    widthOfSelect = widthOfSelect - 13;
    //alert(widthOfSelect);
    jQuery('#first').wrap("<div id='sss' style='width: "+widthOfSelect+"px; overflow: hidden; border-right: #000 1px solid;' width=20></div>");
);

HTML

<select class="first" id="first">
  <option>option1</option>
  <option>option2</option>
  <option>option3</option>
</select>

【讨论】:

【参考方案8】:

试试这个对我有用,

<style>
    select
        border: 0 !important;  /*Removes border*/
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        text-overflow:'';
        text-indent: 0.01px; /* Removes default arrow from firefox*/
        text-overflow: "";  /*Removes default arrow from firefox*/
    
    select::-ms-expand 
        display: none;
    
    .select-wrapper
    
        padding-left:0px;
        overflow:hidden;
    
</style>
    
<div class="select-wrapper">
     <select> ... </select>
</div>

你不能隐藏,但使用溢出隐藏你实际上可以让它消失。

【讨论】:

【参考方案9】:
select
padding: 11px 50px 11px 10px;
background: rgba(255,255,255,1);
border-radius: 7px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
color: #8ba2d4;

【讨论】:

【参考方案10】:

有一个名为 DropKick.js 的库,它用 HTML/CSS 替换了普通的选择下拉菜单,因此您可以使用 javascript 完全设置和控制它们的样式。 http://dropkickjs.com/

【讨论】:

【参考方案11】:

只是想完成线程。 很明显,这在 IE9 中不起作用,但是我们可以通过一点 css 技巧来做到这一点。

<div class="customselect">
    <select>
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    </select>
</div>

.customselect 
    width: 80px;
    overflow: hidden;
   border:1px solid;


.customselect select 
   width: 100px;
   border:none;
  -moz-appearance: none;
   -webkit-appearance: none;
   appearance: none;

【讨论】:

【参考方案12】:

试试这个:

HTML:

<div class="customselect">
    <select>
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    </select>
</div>

CSS:

.customselect 
    width: 70px;
    overflow: hidden;


.customselect select 
   width: 100px;
   -moz-appearance: none;
   -webkit-appearance: none;
   appearance: none;

【讨论】:

【参考方案13】:

试试这个:

select 
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 2px 30px 2px 2px;
    border: none;

JS斌:http://jsbin.com/aniyu4/2/edit

如果您使用 Internet Explorer:

select 
    overflow:hidden;
    width: 120%;

或者你可以使用 Choosen : http://harvesthq.github.io/chosen/

【讨论】:

你在 IE 和 Firefox 中测试过your JSBin 吗?我仍然可以在两者中看到内置的下拉箭头。 用Choosen检查,我认为这是最好的选择。 “如果您使用 Internet Explorer”?您需要考虑使用 IE 并满足他们的大部分人口,无论如何 我们网站的用户统计如下:5.21% IE 或 2.37% Edge “如果你使用 IE”是正确的,它更适合说“如果你需要支持 IE”,但在这个时代,你的技术应该适当地针对你的受众,如果您正在运行一个以 Web 开发人员为目标的网站,那么我怀疑您是否需要支持任何版本的 IE。【参考方案14】:

您无法通过功能齐全的跨浏览器支持来做到这一点。

尝试采用 50 像素的 div 并在此右侧浮动您选择的所需下拉图标

现在在该 div 中,添加宽度为 55 像素的选择标记(可能大于容器的宽度)

我想你会得到你想要的。

如果您不想在右侧放置任何下拉图标,只需执行所有步骤,除了浮动右侧的图像。将 outline:0 设置为选择标签的焦点。就是这样

【讨论】:

我无法从这些提示中获得任何帮助。有人可以在这里给出足够的代码吗?谢谢。

以上是关于如何从下拉列表(选择元素)中删除默认箭头图标?的主要内容,如果未能解决你的问题,请参考以下文章

text 从输入[type = number]和下拉列表中删除箭头

如何令comboBox不能输入,只能选择

选择删除下拉箭头 - 跨浏览器

如何从表格的下拉菜单中删除先前选择的选项?

电脑桌面图标箭头怎么取消?

更改默认的 React Native <Picker> 下拉箭头图标