Arkusz stylów klienta użytkownika dla przeglądarki Chrome zapewnia promień obramowania wynoszący 5 pikseli we wszystkich rogach <select>
elementu. Próbowałem się tego pozbyć, stosując promień 0px w moim zewnętrznym arkuszu stylów, a także wbudowany w sam element; Wypróbowałem oba border-radius:0px
i -webkit-border-radius:0px;
wypróbowałem jeszcze bardziej szczegółowy border-top-left-radius:0px
(wraz z jego odpowiednikiem -webkit).
Żaden nie działa.
Kiedy badam element w narzędziach programistycznych webkit, styl obliczony nadal podaje promień jako 5px. Ale jeśli kliknę strzałkę ekspandera obok niego, aby zobaczyć szczegóły, brzmi: element.style - 0px. A poniżej pokazuje zewnętrzną specyfikację css, którą podałem, 0px, wraz ze specyfikacją arkusza stylów agenta użytkownika wynoszącą 5 pikseli. Oba te ostatnie są przekreślone, tak jak powinny.
Jakieś pomysły?
Odpowiedzi:
To działa dla mnie (style pierwszy wygląd, a nie lista rozwijana):
http://jsfiddle.net/fMuPt/
źródło
border: 0
i dodasz konspekt, taki jak:outline: 1px inset black; outline-offset:-1px
background-color: #yourbg
aborder-style: none
następnie utwórz element div bezpośrednio przed nim za pomocąposition: absolute
iborder-bottom: 1px solid #youpick
idisplay: inline
. Strzały zachowane, nienaruszone UX, lepsza naprawa.Tylko moje rozwiązanie z rozwijanym obrazem
(inline svg)
Używam bootstrap, dlatego użyłem
select.form-control
You can use
select{
orselect.your-custom-class{
zamiast.źródło
width: auto;
dodana strzałka svg nakłada się na zawartość zaznaczenia. Wymaga to dodatkowego wypełnienia po prawej stronie 16 pikseli. To wypełnienie jest jednak widoczne we wszystkich przeglądarkach, przełamując projekt w innych przeglądarkach. Nie mam jeszcze na to rozwiązania ...Jeśli chcesz kwadratowe obramowania i nadal chcesz mieć małą strzałkę ekspandera, polecam:
źródło
outline
temat:focus
. Jeśli zamierzasz użyć tej odpowiedzi, powinieneś zmienić swójselect:focus
styl, aby wizualnie pokazać, żeselect
element staje się aktywny lub zmieniony:focus
po kliknięciu.Kilka dobrych rozwiązań tutaj, ale ten nie potrzebuje SVG, zachowuje obramowanie przez
outline
i ustawia go w jednej linii na przycisku.źródło
Podczas gdy górna odpowiedź usuwa obramowanie, usuwa również strzałkę, co bardzo utrudnia, jeśli nie uniemożliwia użytkownikowi zidentyfikowanie elementu jako zaznaczonego.
Moim rozwiązaniem było po prostu umieszczenie białego div (z border-radius: 0px) za zaznaczeniem. Ustaw jego pozycję na wartość bezwzględną, jej wysokość na wysokość zaznaczenia i powinieneś być gotowy!
źródło
Rozwiązanie z niestandardową strzałką rozwijaną w prawo, używa tylko CSS (bez obrazów)
źródło
background-position: calc(100% - 4px) center, 100% center;
Przenosi strzałkę na środek zaznaczenia i do końca w prawo. Wielkie dzięki za wspaniały początek!Jednym ze sposobów, aby zachować prostotę i uniknąć mieszania się ze strzałkami i innymi tego typu funkcjami, jest umieszczenie go w elemencie div z tym samym kolorem tła co znacznik wyboru.
źródło
Należy unikać eliminowania strzał. Rozwiązaniem, które zachowuje strzałki rozwijane, jest najpierw usunięcie stylów z listy rozwijanej:
Następnie utwórz div bezpośrednio przed listą rozwijaną w kodzie HTML:
I stylizuj element div w ten sposób:
Display inline zapobiegnie przechodzeniu elementu div do nowego wiersza, pozycja bezwzględna usunie go z przepływu strony. Efektem końcowym jest ładne, wyraźne podkreślenie, które możesz stylizować, jak chcesz, a lista rozwijana nadal zachowuje się tak, jak oczekiwałby użytkownik.
źródło
Wstawiony box-shadow załatwia sprawę.
Próbny
źródło
Z jakiegoś powodu wpływa na to kolor obramowania ??? Kiedy używasz standardowego koloru, rogi pozostają zaokrąglone, ale jeśli zmienisz kolor nawet nieznacznie, zaokrąglenie zniknie.
https://jsfiddle.net/hLg70o70/2/
źródło
dobrze, mam rozwiązanie. mam nadzieję, że może ci pomóc :)
źródło
Oto sposób na zrobienie tego;
źródło
Użyłem rozwiązania jordan314, ale potem dodałem do wyboru klasę „border-light”. Jeśli masz domyślną klasę border-light zdefiniowaną w css, możesz jej bezpośrednio użyć. Po prostu definiuje obramowanie jako białe). Zmieniłem ramkę na kwadrat / usunąłem promień i zachowałem strzałkę.
Oto co zrobiłem:
jeśli nie masz predefiniowanego border-light, po prostu dodaj swój css:
źródło
firefox: 18
źródło
Ustaw CSS jako
Spróbuj, czy to działa.
źródło