HTML <select> 选定选项背景色 CSS 样式

IT技术 javascript html css
2021-01-24 15:58:36

选择选项的“选定”颜色是否有样式?例如:

<HTML>
<BODY>
<FORM NAME="form1">
<SELECT NAME="mySelect" SIZE="7" style="background-color:red;">
<OPTION>Test 1
<OPTION>Test 2
<OPTION>Test 3
<OPTION>Test 4
<OPTION>Test 5
<OPTION>Test 6
<OPTION>Test 7
</SELECT>
</FORM>
</BODY>
</HTML>

当我选择一个选项时它会变成蓝色,我想覆盖它并使它成为不同的颜色。在我期望的风格中,像“selected-color”这样的东西,但它不存在。

6个回答
您可能无法使用纯 CSS 执行此操作。但是,一点点 javascript 就可以很好地做到这一点。

一个粗略的方法 -

var sel = document.getElementById('select_id');
sel.addEventListener('click', function(el){
    var options = this.children;
    for(var i=0; i < this.childElementCount; i++){
        options[i].style.color = 'white';
    }
    var selected = this.children[this.selectedIndex];
        selected.style.color = 'red';
    }, false);
我想要做同样的事情..我在悬停和slected ...变色jsfiddle.net/7m2sY/34 但它不工作..
2021-03-24 15:58:36
谢谢,我会去一些 jQuery 并完成它。可以发帖了 亲爱的
2021-03-28 15:58:36
一个注意事项,我必须将此代码段放在里面,$(document).ready()以便我的控件呈现并且元素 ID 存在,所以sel不是null.
2021-04-08 15:58:36
@J.Hendrix:我发布的作品。但是最好使用 JS 库,这样它就可以在所有浏览器中运行。目前在 linux 上的 Chrome 和 Firefox 中运行良好。
2021-04-09 15:58:36
@arieltools:是的。使用 jquery 会很容易。
2021-04-12 15:58:36
<select name=protect_email size=1 style="background: #009966; color: #FFF;" onChange="this.style.backgroundColor=this.options[this.selectedIndex].style.backgroundColor">    
<option value=0 style="background: #009966; color: #FFF;" selected>Protect my email</option>;  
<option value=1 style="background: #FF0000; color: #FFF;">Show email on advert</option>;
</select>; 

http://pro.org.uk/classified/Directory?act=book&category=120

在 FF、Opera、Konqueror 中测试它工作正常......

表单元素不能依赖 CSS。结果在所有浏览器中都有很大差异。我认为 Safari 根本不允许您自定义任何表单元素。

最好的办法是使用像jqTransform这样的插件(使用 jQuery)。

编辑:该页面目前似乎不起作用。还有支持 MooTools 的自定义表单元素,将来可能会支持 jQuery。

@ari:有很多这样的插件 - 我今天刚看到两个新插件:swizec.com/code/styledButtonpixelmatrixdesign.com/uniform
2021-03-15 15:58:36
所有这些到图书馆的链接都被破坏了
2021-03-26 15:58:36
是的,如果不使用 jQuery,就必须这样做。干杯。
2021-04-09 15:58:36

我认为您可能正在寻找的解决方案是:

option:checked {
  box-shadow: 0 0 10px 100px #FFFF00 inset; }
@Muhammed 确实如此。但实际上您需要检查浏览器版本。看一看:w3schools.com/cssref/sel_checked.asp
2021-04-08 15:58:36

目前 CSS 不支持此功能。

您可以构建自己的或使用插件来模拟使用 DIV/CSS 的这种行为。