2012-08-31 13 views
7

Ho la frase Client Testimonial e voglio cambiare solo il Client ho usato solo first-letter ma c'è un metodo in css per cambiare colore .. no javascript per favore.cambia colore css solo prima 6 caratteri di testo

+2

Non esiste uno pseudo-elemento di prima parola in CSS, quindi non è possibile (senza, come tu non vuoi, javascript). Vedi http://stackoverflow.com/questions/55612/css-to-increase-size-of-first-word per riferimento. –

+0

Nel caso in cui cambiare idea per quanto riguarda l'uso di JS: http://www.dynamicsitesolutions.com/javascript/first-word-selector/ –

+0

Grazie !, poi ho bisogno di usare javascript. – Rafee

risposta

11

Come sull'utilizzo :before?

vorrei cambiare il testo da "Client Testimonial" a "Testimonial", e poi con i CSS applicare la :before regola:

HTML:

<div class="word">Testimonial</div>​​​​​​​​ 

CSS:

.word { 
color: black;  
} 
.word:before { 
color: red; 
content: "Client "; 
} 

Esempio: http://jsfiddle.net/LvZt7/

+0

Wow questo uno rocks! Grazie! e un codice semplice. Davvero risparmiato tempo e lavoro. – Rafee

+4

Sebbene questo sia fattibile in termini di visualizzazione visiva della pagina, è TERRIBILE per l'accessibilità. La maggior parte degli screen reader salta il contenuto generato da CSS (http: // cssgallery.informazioni/test-the-all'accessibilità-of-the-css-generated-content del /). Inoltre, questo viola il concetto di separazione di contenuto/struttura dalla formattazione. –

0

È possibile suddividere la parola in un span e modificarla. Come ha affermato Henrik Ammer in un commento, non esiste lo :first-word.

3
<p><span style="color: #c0ff33;">Client</span> Testimonial</p> 

quindi sì, proprio lo stile con <span></span> la sua perfetta per questo tipo di situazioni.

Edit:

Questa modifica non è diretto per il posto dell'autore, ma per qualcuno solo imparare ad usare i CSS: sulla base di "buone pratiche" si dovrebbe considerare l'utilizzo di file .css separato per impostare gli stili in maniera come:

.client { 
    color: #c0ff33; 
} 

e di utilizzarlo come:

<p><span class="client">Client</span> Testimonial</p> 

Se si desidera specificare più ed essere cert ain di utilizzare solo il tuo stile span all'interno <p></p> si potrebbe anche introdurre le cose come:

p span.client { 
    color: #c0ff33; 
} 

Fiddle: http://jsfiddle.net/LvZt7/97/

Si potrebbe anche fare viceversa specificare la classe p e non estendersi:

<p class="client"><span>Client</span> Testimonial</p> 

e

p.client span { 
    color: #c0ff33; 
} 

o semplicemente specificando tutti marcature p campata html avere testo all'interno lunghi, con colore #c0ff33:

<p><span>Client</span> Testimonial</p> 

e

p span { 
    color: #c0ff33; 
} 
+0

Non riesco ad aggiungere alcun elemento html al suo interno. I valori provengono dal CMS ovvero Drupal – Rafee

+1

Quindi javascript è l'unico modo per farlo. –

+0

Sì, non è stato detto nel tema spero che questo tornare utile a qualcuno, allora :) –

6

Come notato da altri, v'è (purtroppo *) non :first-word pseudo-selettore disponibili in CSS (anche versione 3 o 4, per quanto ne so attualmente). Tuttavia, esistono due possibilità che esistono senza JavaScript, sebbene entrambe abbiano i loro difetti.

Il primo, e più semplice, è quello di avvolgere semplicemente la prima parola in un arco:

<p><span>Client</span> Testimonial</p>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

E lo stile l'arco con il momento clou:

p span { 
    color: #f90; 
} 

JS Fiddle demo.

Mentre questo approccio richiede l'aggiunta di un elemento aggiuntivo, in questo caso, l'elemento span per motivi di stile è semplice da implementare e funziona in modo affidabile tra browser.

Il secondo è leggermente più fragile, anche se evita l'aggiunta del span tag estranei, ma richiede, invece, che si aggiunge un attributo:

<p data-highlightword="Client">Client Testimonial</p>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

Con il seguente CSS:

p[data-highlightword] { 
    position: relative; 
} 

p[data-highlightword]::before { 
    content: attr(data-highlightword); 
    color: #f90; 
    position: absolute; 
    top: 0; 
    left: 0; 
}​ 

JS Fiddle demo .

Questo approccio si basa sull'aggiunta di un singolo attributo di un singolo elemento, ma richiede più CSS e funziona solo nei browser compatibili. Il che è quasi tutto, ora, con solo IE 8, o forse 9, e al di sotto si rivela problematico.

+0

per quanto riguarda i problemi di supporto del browser utilizzando i dati-hihglightword o: prima? per: prima di aver trovato almeno questo http://css-tricks.com/browser-support-pseudo-elements/ IMHO avrei usato "roba" di base per soluzioni più semplici che molto probabilmente funzionano con una maggiore quantità di browser più vecchi :) ma stili decisamente interessanti che hai condiviso anche per me hehe. –

+0

Il problema del supporto del browser è il motivo preciso del paragrafo finale nella risposta. Forse non ho sollevato il problema abbastanza, ma, onestamente, sto diventando, col passare del tempo, sempre più stanco della necessità di supportare IE. Io * sosterrò IE, e felicemente, ma sono diventato piuttosto abituato al fatto che il suo (precedente) compiacimento per quanto riguarda gli standard. Ora, IE 10, d'altra parte in realtà mi emoziona ... –

+1

ok, thnx per la spiegazione - e ci sono raramente eventuali sviluppatori che si emoziona a causa di IE :) –

0

vi consiglio di fare qualcosa di simile:

<span class = "redcolor">Client </span> Testimonial 

CSS:

.redcolor 
{ 
    color: red 
} 

In questo modo se si desidera qualcosa di rosso, basta dargli un div/span con quella classe

Problemi correlati