Come posso rimuovere la lucentezza su un elemento selezionato in Safari su Mac?


112

Su Mac e dispositivi iOS, in Safari, un <select>elemento con un colore di sfondo genera una lucentezza su se stesso. Questo non sembra accadere in altri sistemi operativi.

Ad esempio, ho un elemento di selezione con queste proprietà di stile:

select {
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
padding: 3px 6px;
margin: 10px 0 7px;
width: 250px;
background-color: #BD2786;
color: white;
letter-spacing: -.04em;
font-weight: bold;
border: 0;
}

E il mio elemento ha il colore di sfondo che desidero, ma la brillantezza è ancora lì. Qualcuno sa come renderlo un colore piatto?

Risposte:


194

@beanland; Devi scrivere

-webkit-appearance:none;

nel tuo css.

leggi questo http://trentwalton.com/2010/07/14/css-webkit-appearance/


4
non c'è bisogno di ringraziamenti perché ci sono molte cose che non sapevo :)
sandeep

123
C'è un modo per mantenere la freccia sul lato destro? Voglio sovrascrivere solo il colore. Grazie
Marc

19
@sandeep: E per renderlo cross-browser:-moz-appearance: none; -webkit-appearance: none; appearance: none;
Dorian

6
@Marc Se dopo 3 anni sei ancora interessato .. ho aggiunto una soluzione che ho trovato per far vedere le frecce.
alicjasalamon

2
La soluzione per IE è usare select :: - ms-expand {display: none; } per nascondere l'icona a discesa della casella di selezione nativa di IE, quindi utilizzare un'immagine png effettiva come sfondo per la nuova icona. Il problema si verifica perché le immagini SVG non sono sempre posizionate correttamente tramite CSS in IE.
Phyllis Sutherland

106

L'utilizzo -webkit-appearance:none;rimuoverà anche le frecce che indicano che si tratta di un menu a discesa.

Guarda questo frammento che lo fa funzionare su diversi browser e aggiunge frecce personalizzate senza includere file di immagine:

select{
	background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2ZmZjt9LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmFycm93czwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB3aWR0aD0iNC45NSIgaGVpZ2h0PSIxMCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIxLjQxIDQuNjcgMi40OCAzLjE4IDMuNTQgNC42NyAxLjQxIDQuNjciLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMy41NCA1LjMzIDIuNDggNi44MiAxLjQxIDUuMzMgMy41NCA1LjMzIi8+PC9zdmc+) no-repeat 95% 50%;
	-moz-appearance: none; 
	-webkit-appearance: none; 
	appearance: none;
    /* and then whatever styles you want*/
	height: 30px; 
	width: 100px;
	padding: 5px;
}
<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>


16
dolce, apprezza le frecce aggiustate! Ecco una versione con sfondo trasparente: selezionare {background: url (dati: image / svg + xml; base64, PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIj48ZGVmcz48c3R5bGU + LmNscy0ye2ZpbGw6IzQ0NDt9PC9zdHlsZT48L2RlZnM + PHRpdGxlPmFycm93czwvdGl0bGU + PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjEuNDEgNC42NyAyLjQ4IDMuMTggMy41NCA0LjY3IDEuNDEgNC42NyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMiIgcG9pbnRzPSIzLjU0IDUuMzMgMi40OCA2LjgyIDEuNDEgNS4zMyAzLjU0IDUuMzMiLz48L3N2Zz4 =) no-repeat 95% al 50%; }
Ingo Renner

1
ha creato una freccia trasparente (impossibile incollare qui a causa della lunghezza): pastebin.com/HQ0x4Rka
mga

5
Se hai elementi di selezione ampia, questo sembrerà un po 'fuori posto. Per risolverlo, puoi utilizzare gli offset del bordo della posizione dello sfondo di CSS3 per allineare meglio lo sfondo. Quindi sostituisci no-repeat 95% 50%conno-repeat right 2px center
iSWORD

3
Le stesse frecce ma in bianco e trasparente pastebin.com/07iS41b5
Andreas Gassmann

2
Ho notato che le frecce aggiunte includono una freccia su / giù: qualche soluzione rapida solo per mostrare la solita freccia giù?
Brett

14

Versione 2019

URL dell'immagine in linea più breve, mostra solo la freccia in giù, colore della freccia personalizzabile ...

Da https://codepen.io/jonmircha/pen/PEvqPa

L'autore è probabilmente Jonathan MirCha

select {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%238C98F2'><polygon points='0,0 100,0 50,50'/></svg>") no-repeat;
  background-size: 12px;
  background-position: calc(100% - 20px) center;
  background-repeat: no-repeat;
  background-color: #efefef;
}

1
La background-colorproprietà si applica allo sfondo dell'elemento select. Per cambiare il colore della freccia giù, è necessario modificare la proprietà di riempimento SVG nell'URL, ad esempiofill='%23fc0000'
Noel Abrahams,

Meglio usare background-position senza calc: background-position: right .8em top 60%; e qualche cursore: è necessario
Iggy

C'è una versione a doppia freccia di questo che qualcuno può dimostrare?
evolversi il

3

Mi dispiace accumulare un vecchio oggetto. Ho trovato risposte parziali alle mie domande qui, ma ho dovuto fare un po 'di lavoro, quindi ho voluto condividere i miei risultati per la persona successiva.

Ho finito per utilizzare lo stesso approccio degli altri contributori, ma con alcune modifiche per correggere quanto segue

  1. Il testo lungo copriva le frecce nelle altre soluzioni
  2. L'immagine utilizzata era una freccia combinata su / giù un po 'vecchia e brutta.

Quanto segue ti darà una soluzione funzionante con i problemi di cui sopra risolti. Nota: ho usato una freccia bianca per il mio caso d'uso, potrebbe essere necessario cambiare il colore della freccia per il tuo.

ecco un'anteprima:

selezionare con freccia bianca

select{    
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiICAgaWQ9IkxheWVyXzEiICAgZGF0YS1uYW1lPSJMYXllciAxIiAgIHZpZXdCb3g9IjAgMCA0Ljk1IDEwIiAgIHZlcnNpb249IjEuMSIgICBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkxIHIxMzcyNSIgICBzb2RpcG9kaTpkb2NuYW1lPSJkb3dubG9hZC5zdmciPiAgPG1ldGFkYXRhICAgICBpZD0ibWV0YWRhdGE0MjAyIj4gICAgPHJkZjpSREY+ICAgICAgPGNjOldvcmsgICAgICAgICByZGY6YWJvdXQ9IiI+ICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4gICAgICAgIDxkYzp0eXBlICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPiAgICAgIDwvY2M6V29yaz4gICAgPC9yZGY6UkRGPiAgPC9tZXRhZGF0YT4gIDxzb2RpcG9kaTpuYW1lZHZpZXcgICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIgICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IiAgICAgYm9yZGVyb3BhY2l0eT0iMSIgICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiICAgICBncmlkdG9sZXJhbmNlPSIxMCIgICAgIGd1aWRldG9sZXJhbmNlPSIxMCIgICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIgICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIgICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMjciICAgICBpZD0ibmFtZWR2aWV3NDIwMCIgICAgIHNob3dncmlkPSJmYWxzZSIgICAgIGlua3NjYXBlOnpvb209Ijg0LjMiICAgICBpbmtzY2FwZTpjeD0iMi40NzQ5OTk5IiAgICAgaW5rc2NhcGU6Y3k9IjUiICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMTkyMCIgICAgIGlua3NjYXBlOndpbmRvdy15PSIyNyIgICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJMYXllcl8xIiAvPiAgPGRlZnMgICAgIGlkPSJkZWZzNDE5MCI+ICAgIDxzdHlsZSAgICAgICBpZD0ic3R5bGU0MTkyIj4uY2xzLTJ7ZmlsbDojNDQ0O308L3N0eWxlPiAgPC9kZWZzPiAgPHRpdGxlICAgICBpZD0idGl0bGU0MTk0Ij5hcnJvd3M8L3RpdGxlPiAgPHBvbHlnb24gICAgIGNsYXNzPSJjbHMtMiIgICAgIHBvaW50cz0iMy41NCA1LjMzIDIuNDggNi44MiAxLjQxIDUuMzMgMy41NCA1LjMzIiAgICAgaWQ9InBvbHlnb240MTk4IiAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MSIgLz48L3N2Zz4=) no-repeat 101% 50%;
  padding-right:20px;
}

//, Ti dispiacerebbe spiegare come e perché questo rimuove il gloss?
Nathan Basanese

1
La soluzione ha fondamentalmente due componenti: 1. Richiedere che il browser non esegua alcuno stile / visualizzazione sull'elemento. 2. Fornire uno stile ragionevole. Nei browser che non sono terribili (leggi, non safari) lo stile dell'elemento fornito dal browser è buono. In Safari, tuttavia, lo stile fornito dal browser è disgustoso e terribile. Di conseguenza dobbiamo sovrascrivere la visualizzazione fornita dal browser in ogni browser. Le linee che finiscono in apparenza: nessuna fa la parte 1 dall'alto. Le altre linee affrontano la parte 2. Questo aiuta?
Justin Edwards


0

Come accennato più volte qui

-webkit-appearance:none;

rimuove anche le frecce, che non è quello che vuoi nella maggior parte dei casi.

Una soluzione alternativa semplice che ho trovato è usare semplicemente select2 invece di select. Puoi anche modificare lo stile di un elemento select2 e, soprattutto, select2 ha lo stesso aspetto su Windows, Android, iOS e Mac.


-8

Se esamini il foglio di stile dell'agente utente di Chome, troverai questo

outline: -webkit-focus-ring-color auto 5px;

in breve la sua proprietà di contorno: rendila Nessuno

quello dovrebbe rimuovere il bagliore


8
Non sta chiedendo del contorno, ma dello sfondo lucido.
Apollo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.