Can I colour backgrounds of selected items in HTML select options with CSS only?

感情迁移 提交于 2020-01-19 03:51:04

问题


I've searched around a lot and see people suggesting that:

::-moz-selection {background: red;}
::selection {background: red; }

..works for colouring the background of the currently selected items in a multiple select form item. (Note: I mean the selected items, not the items with focus).

I can't get this to work. Am I doing it wrong?

#dropdowns select::selection {
    background: red;
}

Cheers :/

Setup: Using Chrome for Mac


回答1:


Instead of only setting a background-color you can also set a linear-gradient as background:

option:checked {
  background: red linear-gradient(0deg, red 0%, red 100%);
}

This works in IE11 and latest Chrome and Firefox. Safari just ignores it. Did not test IE/Edge.

If you want to set the background color only for focused multi-selects you can use this snippet:

select[multiple]:focus option:checked {
  background: red linear-gradient(0deg, red 0%, red 100%);
}

See the full demo here: http://codepen.io/marceltschopp/pen/PNyqKp




回答2:


::selection doesn't apply to selected options; it applies to highlighted text. Either you're misinterpreting their suggestions, or what they said is flat-out wrong.

According to this answer, you're supposed to be able to use option:checked for styling the selected items:

#dropdowns option:checked {
    background: red;
}

But I haven't been able to get it to work for <select> or <select multiple> elements in this test fiddle.




回答3:


The right CSS Selector for you would be :checked

::selection is only for text that has been highlighted:

  • http://reference.sitepoint.com/css/pseudoelement-selection



回答4:


I found this because I was having the same problem, I did find an odd solution that seems to work atleast with chrome and maybe others. The solution was to use an attribute selector. This seemed to work with chrome, I tested it in the js fiddle. A side note that the box did not immediately change color to background red but once I selected another option I could clearly see that it had indeed turned red. You can check it out in the jsfiddle listed above.

http://jsfiddle.net/vzDvK/1/

#dropdowns option[selected] {
    background: red;
}


来源:https://stackoverflow.com/questions/9309844/can-i-colour-backgrounds-of-selected-items-in-html-select-options-with-css-only

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!