【问题标题】: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 中如何操作?

【问题讨论】:

标签: html css drop-down-menu html-select


【解决方案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 设置为选择标签的焦点。就是这样

                    【讨论】:

                    • 我无法从这些提示中获得任何帮助。有人可以在这里给出足够的代码吗?谢谢。
                    猜你喜欢
                    • 2022-12-18
                    • 2012-06-07
                    • 2014-09-28
                    • 2013-02-27
                    • 1970-01-01
                    • 2015-09-23
                    • 2014-07-25
                    相关资源
                    最近更新 更多