【问题标题】:Browser (Webkit, IE, Firefox) Change background for select浏览器(Webkit、IE、Firefox)更改选择的背景
【发布时间】:2013-08-04 23:29:18
【问题描述】:

我一直在尝试摆脱网站中的默认渐变背景。我知道如果我设置 -webkit-appereance:none 这将是可能的,但我会失去我想要的下拉菜单中的箭头和其他行为。是否可以使用 -webkit-appearance: menulist 将背景设置为白色?

这是我有的,但背景没有改变

.ius select{
    -webkit-appearance: menulist;
    -moz-appearance: menulist;
    appearance: menulist;
    height:32px;
    border:1px solid #c8c8c8;
    width:250px;
    background:rgba(255, 255, 255, 0);
    background: transparent;
}

【问题讨论】:

  • 你有例子吗?我不确定我是否理解您的问题。
  • 我认为只替换背景而不去掉选择的其他功能是不可能的。你总是可以使用像 msDropDown 这样的 jQuery 插件来设置你想要的样式。

标签: css cross-browser


【解决方案1】:

外观属性一般用于两件事:

  1. 模仿其他元素的原生样式
  2. 或移除所有原生样式(将外观设置为无)

这是一个非常奇怪的属性。

由于您要移除原生默认背景,您需要将外观设置为无。这将删除 all 样式(渐变和默认箭头图标)。不过这没什么大不了的,因为您可以使用 css 对其应用更多样式。

使用标记:

<select id="menulist">
    <option value="one">One</option>
    <option value="two">Two</option>
    <option value="three">Three</option>
</select>

还有 CSS:

#menulist {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    height:20px;
    border:1px solid rgb(156,156,156);
    width:250px;
    text-indent: 8px;
    /**
    * replace this background url with a proper arrow asset
    **/
    background: url('http://placehold.it/5x10') no-repeat 95% 50%;
}

完整的 jsfiddle 在这里:http://jsfiddle.net/gwwar/vR53Q/2/

由于此属性仅在 Chrome、Safari 和 Firefox 上受支持,我可能会采用不同的方法,要么使用本机选择样式,要么使用您可以完全控制的下拉组件。

【讨论】:

  • 此解决方案不适用于 Firefox。浏览器在背景图片之上呈现自己的下拉菜单。
  • 看起来有 2 个 FF 错误与此相关:bugzilla.mozilla.org/show_bug.cgi?id=649849bugzilla.mozilla.org/show_bug.cgi?id=605985 但是,您可以使用 text-indent 将箭头推开。不过它看起来确实很奇怪,理想情况下,您不应该使用外观属性,而是创建自己的组件。
  • 仅供参考:我能够使用相互重叠的 unicode ▲ 和 ▼(而不是背景图像)来重新创建箭头。我在
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多