2012-08-31 5 views
7

Tengo la frase Client Testimonial y quiero cambiar solo Client solo he usado pero hay algún método en css para cambiar el color ... no javascript por favor.cambiar color css solo primero 6 caracteres de texto

+2

No hay: pseudo-elemento de primera palabra en CSS, por lo que no es posible (sin, como no quieres, javascript). Ver http://stackoverflow.com/questions/55612/css-to-increase-size-of-first-word para referencia. –

+0

En caso de que cambie de opinión con respecto al uso de js: http://www.dynamicsitesolutions.com/javascript/first-word-selector/ –

+0

¡Gracias !, entonces necesito usar javascript. – Rafee

Respuesta

11

¿Qué le parece usar :before?

que cambiaría el texto de "Testimonio del Cliente" a "Testimonio", y luego con CSS aplicar la regla :before:

HTML:

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

CSS:

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

Ejemplo: http://jsfiddle.net/LvZt7/

+0

¡Guau! ¡Gracias! y código simple. Realmente ahorrado tiempo y trabajo. – Rafee

+4

Si bien esto es viable en términos de la apariencia visual de la página, es TERRIBLE para el acceso. La mayoría de los lectores de pantalla se saltan el contenido generado por CSS (http: // cssgallery.info/testing-the-accessibility-of-the-css-generated-content /). Además, esto viola el concepto de separar contenido/estructura del formato. –

0

Puede envolver la palabra en un span y darle un estilo en su lugar. Como dijo Henrik Ammer en un comentario, no hay :first-word.

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

así que sí, simplemente diseñarlo con <span></span> es perfecto para ese tipo de situaciones.

Editar:

Esta edición no está dirigido para el puesto autor, pero para alguien que acaba de aprender a utilizar CSS: basado en las "mejores prácticas" que uno debe considerar el uso de archivos .css independiente para el establecimiento de estilos de una manera como:

.client { 
    color: #c0ff33; 
} 

y usarlo como:

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

Si desea especificar más y ser cert ain que sólo utilice su estilo span dentro <p></p> también podría introducirlo como:

p span.client { 
    color: #c0ff33; 
} 

violín: http://jsfiddle.net/LvZt7/97/

También podría hacerlo revés especificando su p class y no abarcar:

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

y

p.client span { 
    color: #c0ff33; 
} 

o simplemente especificando todas las marcas p lapso de html para que el texto dentro de lapso de color #c0ff33:

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

y

p span { 
    color: #c0ff33; 
} 
+0

No puedo agregar ningún elemento html. Los valores provienen de CMS, es decir, Drupal – Rafee

+1

Luego, javascript es la única forma de hacerlo. –

+0

Sí, no se dijo en el tema, espero que esto sea útil para alguien que no sea :) –

6

Como han dicho otros, no es (por desgracia *) sin :first-word pseudo-selector disponibles en CSS (incluso la versión 3 o 4, hasta donde yo sé). Sin embargo, existen dos posibilidades sin JavaScript, aunque ambas tienen sus fallas.

La primera, y más fácil, es simplemente envolver la primera palabra en un lapso:

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

Y el estilo en el tramo con el punto culminante:

p span { 
    color: #f90; 
} 

JS Fiddle demo.

Si bien este enfoque requiere agregar un elemento extra, en este caso, span para el diseño, es simple de implementar y funciona de manera confiable entre navegadores.

El segundo es un poco más frágil, aunque evita la adición de la span etiqueta extraña, sino que requiere, en cambio, que se agrega un atributo:

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

Con el siguiente 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 .

Este enfoque se basa en la adición de un único atributo a un solo elemento, pero requiere CSS adicional y solo funcionará en navegadores compatibles. Que es casi todos ellos, ahora, con solo IE 8, o tal vez 9, y debajo resulta problemático.

+0

¿Qué pasa con los problemas de soporte del navegador usando data-hihglightword o: before? para: antes de encontrar al menos este http://css-tricks.com/browser-support-pseudo-elements/ En mi humilde opinión usaría "cosas" básicas para soluciones más sencillas que probablemente funcionan con mayor cantidad de navegadores anteriores :) pero definitivamente estilos interesantes que compartiste incluso para mí, jeje. –

+0

El problema de soporte del navegador es la razón precisa del último párrafo de la respuesta. Tal vez no planteé el problema lo suficiente, pero, honestamente, me estoy convirtiendo, a medida que pasa el tiempo, cada vez más hastiado por la necesidad de soportar IE. Yo * apoyaré * IE, y felizmente, pero me he acostumbrado un poco al hecho de su complacencia (previa) con respecto a los estándares. Ahora, IE 10, por otro lado en realidad me excita ... –

+1

bien, entonces para una explicación - y raramente hay desarrolladores que se emocionen por IE :) –

0

te recomiendo hacer algo como esto:

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

CSS:

.redcolor 
{ 
    color: red 
} 

De esta forma si quieres algo de rojo, sólo le dan un div/span con esa clase

Cuestiones relacionadas