有在移动端使用 select 选择器并去除边框和默认的下拉箭头的需求,边框直接 border:0 就好,下拉箭头的隐藏没用过,找了一下相关 CSS,直接上代码:

/* 去掉 select 箭头*/
.not-arrow{
    appearance:none;
    -moz-appearance:none; /*火狐*/
    -webkit-appearance:none; /*苹果和谷歌*/
    background: initial;
}
.not-arrow::-ms-expand { display: none; }

上面一个是适配了大部分浏览器的 CSS 样式,下面一段是针对 IE 浏览器的,主要通过设置 appearance 样式实现,直接应用到 select 上。

我在隐藏 select 箭头的基础上另加了一句:background: initial;,这是因为有的前端框架会改写原生的 html 控件,从而统一展现样式。

我碰到的情况就是被改写过的,在加上 appearance 后,箭头并未隐藏,这让我都开始怀疑 CSS 样式是否正确了。回过头仔细检查了一下 select 具体样式,发现被改写。原生的箭头是个实心的倒三小角,而通过 background 改写后的是类似向下的中括号的符号。