2012-02-16 10 views
6

Rozglądałem się wokół partii i zobaczyć ludzi sugerujące, że:Czy mogę pokolorować tła wybranych elementów w opcjach zaznaczania HTML za pomocą tylko CSS?

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

..works do malowania tła aktualnie wybranych elementów w wielu select elementu formularza. (Uwaga: mam na myśli wybrane przedmioty, a nie przedmioty z naciskiem).

Nie mogę tego uruchomić. Czy robię to źle?

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

Okrzyki:/

Setup: Korzystanie z Chrome dla Mac

+0

podobne: http://stackoverflow.com/questions/8619406/css-selected-pseudo-klasa-podobne-do-sprawdzone-ale-do-wybierz-elementy – BoltClock

Odpowiedz

23

Zamiast tylko ustawienie background-color Można również ustawić liniowym gradientem w tle:

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

Działa to w IE11 i najnowszy Chrome i Firefox. Safari po prostu je ignoruje. Nie przetestowałem IE/Edge.

Jeśli chcesz ustawić kolor tła tylko dla skupia wielu wybiera można użyć tego fragmentu:

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

Zobacz pełną wersję demo tutaj: http://codepen.io/marceltschopp/pen/PNyqKp

+2

Myślę, że to powinna być wybrana odpowiedź. –

+0

Widocznie można tylko zastąpić domyślny kolor podświetlenia obrazem, a nie innym kolorem? Ma sens ... – BoltClock

+1

To działa na Microsoft Edge. "IE/Edge" zwykle odnosi się do trybu Edge w IE11, który jest taki sam jak IE11. Jeśli chcesz porozmawiać o nowej przeglądarce, nazwij ją "Microsoft Edge" lub "Edge", ale nie nazwij tego IE. To nie jest IE. – BoltClock

2

::selection nie stosuje się do wybranych opcji; dotyczy podświetlonego tekstu. Albo źle interpretujesz ich sugestie, albo to, co powiedzieli, jest błędne.

Według this answer, masz za zadanie, aby móc korzystać z option:checked do stylizacji wybrane pozycje:

#dropdowns option:checked { 
    background: red; 
} 

Ale nie udało się dostać do pracy <select> lub <select multiple> elementów this test fiddle .

+0

Cześć, dziękuję, że zredagowałeś zanim miałem okazję powiedzieć, że to nie działa :) - Wierd! Dzięki za skrzypce.Widzę, że [wybrane] rodzaje prac, jeśli widzisz tutaj skrzypce zmodyfikowane: http://jsfiddle.net/vzDvK/1/ - Nieparzyste wyniki, czy możesz spojrzeć? –

+2

@Mere Development: Możesz użyć '[selected]' zamiast ': checked', ale dotyczy to tylko tych opcji, które zostały wybrane w momencie wczytania strony (ponieważ jest to selektor atrybutu). Jeśli zmienisz wybór, style nie zostaną zaktualizowane. – BoltClock

+0

Ok, dzięki za trzymanie się tego! więc mówimy, że: zaznaczone po prostu nie działa z opcjami z jakiegoś powodu (odwołując się do oryginalnego jsfiddle)? Czy uważasz, że to błąd? –

0

Prawo Selektor CSS dla ciebie byłoby :checked

:: wybór jest tylko dla tekstu, które zostało podkreślone: ​​

+0

Dzięki za połączenie z dokumentami, wygląda na to: sprawdzone nie działa zgodnie z oczekiwaniami, będę komentować powyżej w min. Twoje zdrowie! –

0

Znalazłem bo mającego ten sam problem, znalazłem dziwne rozwiązanie, które wydaje się działać conleast z chrome i może innym. Rozwiązaniem było użycie selektora atrybutów. To wydawało się działać z chromem, testowałem to w js fiddle. Zauważyłem, że pudełko nie zmieniło od razu koloru na czerwony, ale gdy wybrałem inną opcję, mogłem wyraźnie zobaczyć, że rzeczywiście zmieniło kolor na czerwony. Możesz to sprawdzić w jsfiddle wymienionym powyżej.

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

#dropdowns option[selected] { 
    background: red; 
} 
Powiązane problemy