从Chrome/Webkit中的<select>元素中删除圆角

max*_*son 135 css select webkit css3

Chrome的用户代理样式表为<select>元素的所有角提供了5px的边框半径.我已经尝试通过外部样式表应用半径为0px来解决这个问题,以及元素本身的内联; 我已经尝试了两种border-radius:0px,-webkit-border-radius:0px;并且我已经尝试了更具体的border-top-left-radius:0px(以及它的-webkit等价物).

没有人工作.

当我在webkit的开发人员工具中检查元素时,Computed Style仍将半径列为5px.但是,如果我单击旁边的展开箭头来查看具体内容,则会显示:element.style - 0px.在下面它显示了我给出的0px的外部css规范,以及5px的用户代理样式表规范.后两者都被划掉了,因为它们应该是.

有任何想法吗?

ant*_*onj 233

这对我有用(样式第一次出现而不是下拉列表):

select {
  -webkit-appearance: none;
  -webkit-border-radius: 0px;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/fMuPt/

  • 有没有办法删除圆角但保持右边的箭头? (175认同)
  • @Adam如果您使用`border:0`并添加如下轮廓,它对我有用:`outline:1px inset black; 轮廓偏移:-1px` (23认同)
  • 这消除了右侧的箭头,这无法接受地损害用户体验.相反,设置下拉列表`background-color:#yourbg`和`border-style:none`然后在下拉列表前直接创建一个div,其中`position:absolute`和`border-bottom:1px solid#youpick`和`display: inline`.保留箭头,UX不受伤害,更好地修复. (6认同)
  • 你需要添加箭头,例如位置为100%50%和无重复属性的背景图像.我还在css中使用了base64编码的图像来避免额外的http请求. (3认同)

Afz*_*ain 79

只是我的下拉图片解决方案 (inline svg)

select.form-control {
    -webkit-appearance: none;
    -webkit-border-radius: 0px;
    background-image: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='24' height='24' viewBox='0 0 24 24'><path fill='#444' d='M7.406 7.828l4.594 4.594 4.594-4.594 1.406 1.406-6 6-6-6z'></path></svg>");
    background-position: 100% 50%;
    background-repeat: no-repeat;
}
Run Code Online (Sandbox Code Playgroud)

替代方案(因为上面的一个不适用于最新的Firefox)

select.form-control {
    -webkit-appearance: none;
    -moz-appearance: none;
    -webkit-border-radius: 0px;
    background-image: url("https://image.flaticon.com/icons/svg/60/60781.svg");
    background-position: 99% 50%;
    background-repeat: no-repeat;
    background-size: 16px;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用bootstrap,这就是我使用的原因select.form-control
你可以使用select{select.your-custom-class{代替.

  • 这是解决我的问题的唯一答案,但要注意使用背景与背景图像,因为svg的填充颜色将覆盖您为输入设置的任何背景颜色. (4认同)
  • 内联SVG其实并不是很难获得在Firefox中的工作 - 只是编码图像为Base64:'URL( “数据:图像/ SVG + XML; BASE64,PHN2ZyB2ZXJzaW9uPScxLjEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0Jz48cGF0aCBmaWxsPScjNDQ0JyBkPSdNNy40MDYgNy44MjhsNC41OTQgNC41OTQgNC41OTQtNC41OTQgMS40MDYgMS40MDYtNiA2LTYtNnonPjwvcGF0aD48L3N2Zz4 =”)`。您仍然必须使用替代代码中的“ -moz-appearance:none;”,并且可能还想添加一些“ padding-right”以为箭头留出足够的空间。 (2认同)

jor*_*314 30

如果你想要方形边框并仍然想要小扩展箭头,我推荐这个:

select.squarecorners{
     border: 0;
     outline: 1px solid #CCC;
     background-color: white;
}
Run Code Online (Sandbox Code Playgroud)

  • 这个问题是你将覆盖`:focus`的默认`outline`.如果您要使用此答案,则_should_更改您的`select:focus`样式以直观地显示`select`元素变为活动状态,或者`:focus`ed,点击. (2认同)
  • 这在osx chrome上效果不佳:( (2认同)

ale*_*emb 8

这里有一些很好的解决方案,但是这个不需要SVG,保留边框outline并在按钮上设置齐平.

select {
  height: 20px;
  -webkit-border-radius: 0;
  border: 0;
  outline: 1px solid #ccc;
  outline-offset: -1px;
}
Run Code Online (Sandbox Code Playgroud)
<select>
 <option>Apple</option>
 <option>Ball</option>
 <option>Cat</option>
</select>
Run Code Online (Sandbox Code Playgroud)


Ree*_*tin 6

虽然最顶层的答案会删除边框,但它也会移除箭头,这使得用户极难(如果不是不可能)将元素标识为选择.

我的解决方案是在选择后面粘贴一个白色div(边界半径:0px).将它的位置设置为绝对值,将其高度设置为选择的高度,你应该好好去!