2010-02-13 19 views
50

Ho cercato per questo in tutto il web e non riesco nemmeno a trovare nessun altro chiedendo anche questo, per non parlare di una soluzione ...Cambiare il colore di evidenziazione quando si seleziona il testo in un input di testo HTML

C'è un modo per cambiare il colore dell'area evidenziata all'interno di un input di testo quando il testo è selezionato? Non il bordo di evidenziazione o lo sfondo, ma la porzione che appare intorno al testo quando hai effettivamente selezionato il testo.

+0

vorrei raccomandare, che se si utilizza text-shadow, si dovrebbe essere molto attenti a questo, come descritto qui, http://www.jqui.net/tips-tricks/highlight-text-and-common-design-failure/e anche qui http://www.welcomebrand.co.uk/thoughts/using-text-shadow-dont-forget-highlighting/ :) – Val

risposta

0

Grazie per il link, ma sembra come se il testo vero e mettendo in evidenza solo non è esposto

Per quanto riguarda il problema attuale, ho finito per optare per un approccio diverso, eliminando la necessità di un input di testo del tutto e utilizzando innerHTML con JavaScript. Oltre a evidenziare il testo, non sembra solo molto più pulito.

Questo granulare di un tweak per un controllo di modulo HTML è solo un'altra buona argomentazione per eliminare del tutto i controlli di modulo. Haha!

+7

potresti usare tag modificabili del contenuto HTML5 su un elemento per creare lo stesso effetto con il :: selection CSS, anche se questo non funzionerà con i browser più vecchi – Alex

+0

@Alex Il contenuto modificabile è sorprendentemente efficace per i browser più vecchi, ha funzionato da IE 5.5 . –

+0

Controlla la risposta di Saeed em, ti copre completamente – bobbdelsol

42
+0

Questo non è esattamente ciò che io sto cercando, anche se è sicuramente una bella cosa da sapere. Devo farlo ma all'interno di una casella di testo. Ho provato ad applicare il codice dagli esempi a un input e questo non ha funzionato. – Eric

+3

@Eric: temo che non possa essere fatto all'interno della casella di testo come non ho mai trovato una cosa del genere, potrebbe essere qualcun altro. – Sarfraz

+2

Sebbene ciò possa teoricamente rispondere alla domanda, [sarebbe preferibile] (// meta.stackoverflow.com/q/8259) includere qui le parti essenziali della risposta e fornire il link per riferimento. –

-5

Credo che questo può aiutare:

stili di selezione

E 'possibile definire il colore e lo sfondo per il testo l'utente seleziona .

Provalo qui sotto. Se selezioni qualcosa e assomigli a questo, il tuo browser supporta gli stili di selezione.

Questo è il paragrafo con normal ::selection.

Questo è il paragrafo con ::-moz-selection.

Questo è il paragrafo con ::-webkit-selection.

Testsheet:

p.normal::selection { 
    background:#cc0000; 
    color:#fff; 
} 

p.moz::-moz-selection { 
    background:#cc0000; 
    color:#fff; 
} 

p.webkit::-webkit-selection { 
    background:#cc0000; 
    color:#fff; 
} 

Citato da Quirksmode

+2

Ma funziona all'interno di un campo di inserimento del testo (al contrario di un tag p), come richiesto dall'OP? –

18

Mi rendo conto che questa è una vecchia questione, ma per tutti coloro che vengono attraverso di esso questo può essere fatto utilizzando contenteditable come mostrato in this JSFiddle.

Complimenti a Alex che ha menzionato questo nei commenti (non l'ho visto fino ad ora!)

+5

+1 * Questa * dovrebbe essere la risposta accettata. –

+2

I browser OMG sono così stupidi da non supportare questo fuori dagli schemi! –

0

@ Mike Eng,

Selezionando il colore di sfondo del testo, colore del testo può essere modificato con l'aiuto di :: selezione, notare che :: selezione opere in in cromo, per far sì che lavoro in browser basati su firefox prova questo :: - moz-selection

Provare il seguente frammento di codice in reset.css o nella pagina css dove esattamente si desidera applicare l'effetto.

::selection{ 
    //Works only for the chrome browsers 
    background-color: #CFCFCF; //This turns the background color to Gray 
    color: #000; // This turns the selected font color to Black 
} 

::-moz-selection{ 
    //Works for the firefox based browsers 
    background-color: #CFCFCF; //This turns the background color to Gray 
    color: #000; // This turns the selected font color to Black 
} 

Il codice sopra funzionerà anche nelle caselle di input.

25

questo è il codice.

/*** Works on common browsers ***/ 
::selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

/*** Mozilla based browsers ***/ 
::-moz-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

/***For Other Browsers ***/ 
::-o-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

::-ms-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 

/*** For Webkit ***/ 
::-webkit-selection { 
    background-color: #352e7e; 
    color: #fff; 
} 
+3

Nice funziona per tutti i browser. Mi piacciono anche i colori che ha scelto – bobbdelsol

+3

Questa è la risposta corretta – mdikici

+2

Bello, tranne che questo non risponde alla domanda, ovviamente. –

5

Tutte le risposte qui sono corrette quando si tratta di l'elemento pseudo ::selection, e come funziona. Tuttavia, la domanda in effetti chiede in particolare come utilizzarla sugli ingressi di testo .

L'unico modo per farlo è quello di applicare la regola tramite un genitore di ingresso (qualsiasi genitore è per questo):

.parent ::-webkit-selection, [contenteditable]::-webkit-selection { 
 
\t background: #ffb7b7; 
 
} 
 

 
.parent ::-moz-selection, [contenteditable]::-moz-selection { 
 
\t background: #ffb7b7; 
 
} 
 

 
.parent ::selection, [contenteditable]::selection { 
 
\t background: #ffb7b7; 
 
} 
 

 
/* Aesthetics */ 
 
input, [contenteditable] { 
 
    border:1px solid black; 
 
    display:inline-block; 
 
    width: 150px; 
 
    height: 20px; 
 
    line-height: 20px; 
 
    padding: 3px; 
 
}
<span class="parent"><input type="text" value="Input" /></span> 
 
<span contenteditable>Content Editable</span>

-1

Prova questo codice da usare:

/* For Mozile Firefox Browser */ 

::-moz-selection { background-color: #4CAF50; } 

/* For Other Browser*/ 
::selection { background-color: #4CAF50; } 
+0

Questo non aggiunge nulla alla risposta esistente di Conspiria. –

+0

Mozile? Devono davvero farti causa ... –

1

Ecco il problema:

 ::selection { 
     background: #ffb7b7; /* WebKit/Blink Browsers / 
    } 
    ::-moz-selection { 
     background: #ffb7b7; / Gecko Browsers */ 
    }
All'interno del selettore di selezione, il colore e lo sfondo sono le uniche proprietà che funzionano. Quello che puoi fare per un tocco in più, è cambiare il colore di selezione per diversi paragrafi o diverse sezioni della pagina.

Tutto quello che ho fatto è stato utilizzare diversi colori selezione per i paragrafi con classi diverse:

 p.red::selection { 
     background: #ffb7b7; 
    } 
    p.red::-moz-selection { 
     background: #ffb7b7; 
    } 
    p.blue::selection { 
     background: #a8d1ff; 
    } 
    p.blue::-moz-selection { 
     background: #a8d1ff; 
    } 
    p.yellow::selection { 
     background: #fff2a8; 
    } 
    p.yellow::-moz-selection { 
     background: #fff2a8; 
    }
Si noti come i selettori non sono combinati, anche se> il blocco di stile sta facendo la stessa cosa. Non funziona se si combinano:

<pre>/* Combining like this WILL NOT WORK */ 
p.yellow::selection, 
p.yellow::-moz-selection { 
    background: #fff2a8; 
}</pre> 

Questo perché i browser ignorano l'intero selettore se v'è una parte di esso che non capiscono o non è valido. Ci sono alcune eccezioni a questo (IE 7?) Ma non in relazione a questi selettori.

DEMO

LINK WHERE INFO IS FROM

Problemi correlati