Hacer el primer caracter en mayúscula en CSS


255

¿Hay alguna manera de hacer que el primer carácter sea mayúscula en una etiqueta en CSS?

Aquí está mi HTML:

<a class="m_title" href="">gorr</a>
<a class="m_title" href="">trro</a>
<a class="m_title" href="">krro</a>
<a class="m_title" href="">yrro</a>
<a class="m_title" href="">gwwr</a>


2
Para especificar: el primer carácter y SOLO el primero. Que hace que el text-transform: capitalize;no es suficiente cuando se tiene varias palabras
wiktus239

Respuestas:


623

Hay una propiedad para eso:

a.m_title {
    text-transform: capitalize;
}

Si sus enlaces pueden contener varias palabras y solo desea que la primera letra de la primera palabra sea mayúscula, use :first-letteren su lugar una transformación diferente (aunque en realidad no importa). Nota que para que :first-letterfuncione sus aelementos necesitan ser contenedores de bloque (que puede ser display: block, display: inline-blocko cualquiera de una variedad de otras combinaciones de una o más propiedades):

a.m_title {
    display: block;
}

a.m_title:first-letter {
    text-transform: uppercase;
}

3
@alanjds: Sí, funciona en todas las versiones de IE que admiten CSS. Es una tecnología muy antigua.
BoltClock

3
es posible que desee utilizar un punto y coma doble, consulte css-tricks.com/almanac/selectors/f/first-letter
ndequeker

55
@Voles: claro, si no necesita admitir IE8 y versiones anteriores. No digo que no podrías usar dos puntos dobles si quisieras. (Por lo que vale, en el momento de esta respuesta que se publicó hace 2 años y medio, mi política personal era admitir IE8 de forma predeterminada. Hoy ya no lo hago).
BoltClock

1
Tenga en cuenta que si el display: blockrequisito (quién sabe por qué) lo dificulta, :first-lettertambién funciona display: inline-block.
Mitya

1
@Henry Garcia De Guzman: Porque eso pone todo en mayúscula, no solo la primera letra (de cada palabra u oración o lo que sea).
BoltClock

55

Tenga en cuenta que el ::first-letterselector no funciona con elementos en línea, por lo que debe ser blocko inline-block, como sigue:

.m_title {display:inline-block}
.m_title:first-letter {text-transform: uppercase}

1
En mi caso, todo el texto ya estaba en mayúsculas, así que tuve que agregar text-transform: minúsculas a .m_title y ahora funciona perfectamente.
Hjuster


15

Sugiero usar

#selector {
    text-transform: capitalize;
}

o

#selector::first-letter {
    text-transform: uppercase;
}

Por cierto, consulte este enlace de w3schools: http://www.w3schools.com/cssref/pr_text_text-transform.asp


2
Buena respuesta, pero definitivamente no es un enlace a la documentación de w3c.
Stephan

1
Hola, tenga en cuenta: la transformación de texto 'inicial' no significa 'poner en mayúscula la primera letra'. Más bien, significa 'volver al valor predeterminado inicial para esta propiedad'.
Marcos Buarque

Gracias, he aplicado las dos soluciones recomendadas.
Marcos Buarque

5

Primero en minúscula:

.m_title {text-transform: lowercase}

Luego conviértalo en la primera letra mayúscula:

.m_title:first-letter {text-transform: uppercase}

"text-transform: capitalize" funciona para una palabra; pero si quieres usar para oraciones esta solución es perfecta.


2
: la primera letra no funciona con inlineelementos, establezca display:inline-blocksi este es su caso. ( stackoverflow.com/questions/7631722/… )
Fanky

1
<script type="text/javascript">
     $(document).ready(function() {
     var asdf = $('.capsf').text();

    $('.capsf').text(asdf.toLowerCase());
     });
     </script>
<div style="text-transform: capitalize;"  class="capsf">sd GJHGJ GJHgjh gh hghhjk ku</div>

es trabajarme concepto ... párrafo cada palabra en la pantalla mayúsculas de la primera letra
Gnana Sekar

-2

Le recomendaría que use el siguiente código en CSS:

    text-transform:uppercase; 

Asegúrate de ponerlo en tu clase.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.