2015-10-07 13 views
12

ho questo campione:Come mettere colore di sfondo solo una sezione di una selezione? CSS

link

codice HTML:

<div class="select-style"> 
    <select> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
    </select> 
</div> 

codice CSS:

.select-style { 
    padding: 0; 
    margin: 0; 
    border: 1px solid #ccc; 
    width: 120px; 
    border-radius: 3px; 
    overflow: hidden; 
    background-color: #fff; 
    background: #fff url("http://www.scottgood.com/jsg/blog.nsf/images/arrowdown.gif") no-repeat 90% 50%; 
} 

.select-style select { 
    padding: 5px 8px; 
    width: 130%; 
    border: none; 
    box-shadow: none; 
    background-color: transparent; 
    background-image: none; 
    -webkit-appearance: none; 
     -moz-appearance: none; 
      appearance: none; 
} 

.select-style select:focus { 
    outline: none; 
} 

ho messo una foto per capire meglio quello che ho voglio fare.

enter image description here

Come posso fare questo sul mio struttura?

La struttura attuale? Oppure un'altra struttura ha creato l'HTML?

Grazie in anticipo!

+0

aggiungere il colore di sfondo immagine Freccia sfondo stesso per rendere più semplice .. –

+0

e senza questa opzione, 's non un altro per?Voglio usare solo CSS e HTML – Marius

+0

Sarebbe meglio fare una selezione falsa che può essere facilmente personalizzata (come select2 o scelta) – Justinas

risposta

3

Volevi qualcosa del genere?

http://codepen.io/anon/pen/bVWmgP

.select-style:after { 
      content: ''; 
      background-color: #000; 
      position: absolute; 
      border-left: 3px solid #F00; 
      z-index: 0; 
      top: 0; 
      right: 0; 
      bottom: 0; 
      left: 85px; 
     } 

    .select-style:before { 
     content: ''; 
     background-color: white; 
     position: absolute; 
     z-index: -20; 
     top: 0; 
     right: 0; 
     bottom: 0; 
     left: 0; 
    } 

Nota: Non sarà in grado di cambiare elenchi di selezione freccia di colore senza l'aggiunta di un'immagine in più che rappresenterà quella freccia.

+0

http://codepen.io/anon/pen/bVWmvb guarda questo aggiornamento ... la mia selezione è rossa e voglio avere sfondo-colore: bianco; – Marius

+1

Hai visto la soluzione @Manoj Kumar? Sembra che faccia quello che vuoi. – Paran0a

+0

sì ma voglio sapere come fare con la vostra soluzione ... entrambi sono molto interessanti – Marius

4

È possibile utilizzare uno pseudo-elemento per eseguire questa operazione.

Collegare uno pseudoelemento allo div e applicare le proprietà desiderate background-color e border-left. Per renderlo visibile, applicare background-color: transparent a .select-style.

.select-style { 
 
    position: relative; 
 
    padding: 0; 
 
    margin: 0; 
 
    border: 1px solid #ccc; 
 
    width: 120px; 
 
    border-radius: 3px; 
 
    overflow: hidden; 
 
    background: transparent url("http://www.scottgood.com/jsg/blog.nsf/images/arrowdown.gif") no-repeat 90% 50%; 
 
} 
 
.select-style select { 
 
    padding: 5px 8px; 
 
    width: 130%; 
 
    border: none; 
 
    background-color: transparent; 
 
    background-image: none; 
 
    -webkit-appearance: none; 
 
    -moz-appearance: none; 
 
    appearance: none; 
 
} 
 
.select-style select:focus { 
 
    outline: none; 
 
} 
 
.select-style:after { 
 
    position: absolute; 
 
    content: ''; 
 
    width: 36px; 
 
    height: 100%; 
 
    background-color: #ddd; 
 
    border-left: 1px solid #ccc; 
 
    top: 0; 
 
    right: -1px; 
 
    z-index: -1; 
 
    border-radius: 0 1px 1px 0; 
 
}
<div class="select-style"> 
 
    <select> 
 
    <option value="volvo">Volvo</option> 
 
    <option value="saab">Saab</option> 
 
    <option value="mercedes">Mercedes</option> 
 
    <option value="audi">Audi</option> 
 
    </select> 
 
</div>

+0

https://jsfiddle.net/852aseb0/8/ guarda questo aggiornamento. Come posso rendere il tag select avere backgrlound-color: blue? Ora è rosso perché ha lo sfondo: trasparente – Marius

6

È possibile fare uso di linear-gradient combinato con background-image.

  1. La proprietà background-image consente combinazione di url() e linear-gradient() così si può tentare che separa i valori. Lo stesso vale per lo background-position poiché stiamo controllando la posizione dell'immagine dell'URL con il valore 95px mentre il gradiente lineare non è disturbato dal centro.
  2. Uso del gradiente lineare, il primo 70% viene riempito con il colore di sfondo bianco, mentre l'altro 30% sarà grigio chiaro nell'esempio.
  3. Creare un bordo utilizzando una piccola frazione del valore percentuale, ovvero 70% gray a 71% gray nel gradiente lineare.

.select-style { 
 
    background-image: url("http://www.scottgood.com/jsg/blog.nsf/images/arrowdown.gif"), linear-gradient(to right, white 70%, gray 70%, gray 71%, lightgray 71%, lightgray 100%); 
 
    background-position: 95px center, center center; 
 
    background-repeat: no-repeat; 
 
    border: 1px solid #ccc; 
 
    border-radius: 3px; 
 
    margin: 0; 
 
    overflow: hidden; 
 
    padding: 0; 
 
    width: 120px; 
 
} 
 
.select-style select { 
 
    padding: 5px 8px; 
 
    width: 130%; 
 
    border: none; 
 
    box-shadow: none; 
 
    background-color: transparent; 
 
    background-image: none; 
 
    -webkit-appearance: none; 
 
    -moz-appearance: none; 
 
    appearance: none; 
 
} 
 
.select-style select:focus { 
 
    outline: none; 
 
}
<div class="select-style"> 
 
    <select> 
 
    <option value="volvo">Volvo</option> 
 
    <option value="saab">Saab</option> 
 
    <option value="mercedes">Mercedes</option> 
 
    <option value="audi">Audi</option> 
 
    </select> 
 
</div>

+1

Stavo per rispondere alla domanda proprio come hai fatto tu. Soluzione molto liscia e semplice! – Chris

Problemi correlati