Jak zmienić kolor tła opcji zaznacz pole?

Mam pole wyboru i próbuję zmienić kolor tła opcji po kliknięciu pola wyboru i wyświetleniu wszystkich opcji.

Patrz Fiddle

Html

<select>
    <option val="">Please choose</option>
    <option val="1">Option 1</option>
    <option val="2">Option 2</option>
    <option val="3">Option 3</option>
    <option val="4">Option 4</option>
</select>

Css

select{
    margin:40px;
    background: rgba(0,0,0,0.3);
    color:#fff;
    text-shadow:0 1px 0 rgba(0,0,0,0.4);
}
Author: neophyte, 2012-10-11

10 answers

Musisz umieścić background-color na znaczniku option, a nie select...

select option {
    margin: 40px;
    background: rgba(0, 0, 0, 0.3);
    color: #fff;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4);
}

Jeśli chcesz stylizować każdy z tagów option.. użyj selektora css attribute:

select option {
    margin: 40px;
    background: rgba(0, 0, 0, 0.3);
    color: #fff;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4);
}

select option[value="1"] { /* value not val */
    background: rgba(100, 100, 100, 0.3);
}

select option[value="2"] { /* value not val */
    background: rgba(200, 200, 200, 0.3);
}

/* ... */
 113
Author: udidu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-16 14:18:07

Nie wiem, czy to rozważałeś, czy nie, ale jeśli Twoja aplikacja opiera się na kolorowaniu różnych grup przedmiotów, prawdopodobnie powinieneś użyć znacznika <optgroup> połączonego z klasą do dalszego odwoływania się. Na przykład:

<select>
    <optgroup label="Numbers" class="green">
        <option value="1">One</option>
        <option value="2">Two</option>
        <option value="3">Three</option>
    </optgroup>

    <optgroup label="Letters" class="blue">
        <option value="a">A</option>
        <option value="b">B</option>
        <option value="c">C</option>
    </optgroup>
</select>

A następnie w nagłówku dokumentu napisz css w następujący sposób:

<style type="text/css">
    .green option{
        background-color:#0F0;
    }

    .blue option{
        background-color:#00F;
    }
</style>
 12
Author: rfoo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-21 21:30:41

Tak możesz to ustawić używając tego,

option:not(:checked) { }

Sprawdź to demo jsFiddle

HTML

<select>
    <option val="">Please choose</option>
    <option val="1">Option 1</option>
    <option val="2">Option 2</option>
    <option val="3">Option 3</option>
    <option val="4">Option 4</option>
</select>

CSS

select{
    margin:40px;
    background: rgba(0,0,0,0.3);
    color:#FFF;
    text-shadow:0 1px 0 rgba(0,0,0,0.4);
}
option:not(:checked) { 
    background-color: white; 
    color:#000;
}
 8
Author: Jay Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-20 10:37:31

Tutaj wpisz opis obrazka

Podobne do niektórych odpowiedzi, ale tak naprawdę nie podane, jest dodanie klasy do rzeczywistego znacznika opcji i użycie klas css...to obecnie działa dla mnie bez problemu na IE(patrz wyżej ss).

<select id="reviewAction">
<option class="greenColor">Accept and Advance Status</option>
<option class="redColor">Return for Modifications</option>
</select>

CSS:

.greenColor{
    background-color: #33CC33;
}
.redColor{
    background-color: #E60000;
}
 5
Author: dah97765,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-08 21:21:52

Jeśli naprawdę chcesz stylizować within a, rozważ przejście do rozwijanej listy opartej na Javascript/CSS, takiej jak http://getbootstrap.com/2.3.2/components.html#dropdowns lub https://silviomoreto.github.io/bootstrap-select/examples/. dzieje się tak dlatego, że przeglądarki takie jak IE nie pozwalają na stylizowanie opcji w elementach . Chrome / OSX również ma ten problem - nie można stylować opcji.

Do tego podejścia dołączone jest jednak Ostrzeżenie. Tego typu Menu Działa bardzo inaczej na platformach mobilnych, ponieważ nie są używane elementy natywne. Mogą również mieć irytujące dziwactwa na pulpicie. Moja rada to 1) nie pisz własnych i 2) Znajdź bibliotekę, która została naprawdę dobrze przetestowana.

 1
Author: Charlie Dalsass,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:24
$htmlIngressCss='<style>';
$multiOptions = array("" => "All");
$resIn = $this->commonDB->getIngressTrunk();
while ($row = $resIn->fetch()) {
    if($row['IsActive']==0){
        $htmlIngressCss .= '.ingressClass select, option[value="'.$row['TrunkInfoID'].'"] {color:red;font-weight:bold;}';
    }
    $multiOptions[$row['TrunkInfoID']] = $row['IngressTrunkName'];
}
$htmlIngressCss.='</style>';

Dodaj $htmlIngressCss w swojej części html:)

 1
Author: Chintan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-02 09:18:22

Po prostu zmień kolor bg

select { background: #6ac17a; color:#fff; }

 1
Author: Thomas Mathew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-07 06:32:14

Inną opcją jest użycie Javascript:

if (document.getElementById('selectID').value == '1') {
       document.getElementById('optionID').style.color = '#000';

(nie tak czysty jak selektor atrybutów CSS, ale bardziej wydajny)

 0
Author: Travis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 20:53:09

Moje selekcje nie będą kolorować tła, dopóki nie dodam !ważne dla stylu.

    input, select, select option{background-color:#FFE !important}
 0
Author: Bob Brunius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 19:26:46

Oto czego się nauczyłem na ten temat!

Specyfikacja CSS 2 nie rozwiązała problemu w jaki sposób elementy formularza powinny być prezentowane użytkownikom!

Przeczytaj tutaj: smashing magazine

Ostatecznie , nigdy nie znajdziesz żadnego artykułu technicznego z w3c lub innego zaadresowanego do tego tematu. Stylizacja elementów formularzy w poszczególnych polach wyboru nie jest w pełni obsługiwana, można jednak poruszać się po niej... z niektórymi wysiłek!

Stylizacja elementów formularza HTML

Tworzenie Własnych Widżetów

Nie trać czasu na hacki E takie przeczytaj linki i dowiedz się, jak profesjonaliści wykonują swoją pracę!

 0
Author: obinoob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-05 19:15:17