Aquí está mi HTML:
<a href="#" class="link">small caps</a> &
<a href="#" class="link">ALL CAPS</a>
Aquí está mi CSS:
.link {text-transform: capitalize;}
El resultado es:
Small Caps & ALL CAPS
y quiero que la salida sea:
Small Caps & All Caps
¿Algunas ideas?
Respuestas:
No hay forma de hacer esto con CSS, podría usar PHP o Javascript para esto.
Ejemplo de PHP:
Ejemplo de jQuery (¡ahora es un complemento!):
fuente
Casi puedes hacerlo con:
Te dará el resultado:
fuente
Convierte con JavaScript usando
.toLowerCase()
ycapitalize
haría el resto.fuente
¡Interesante pregunta!
capitalize
transforma cada primera letra de una palabra en mayúsculas, pero no transforma las otras letras en minúsculas. Ni siquiera el:first-letter
pseudo-clase lo cortará (porque se aplica a la primera letra de cada elemento, no a cada palabra), y no puedo ver una forma de combinar minúsculas y mayúsculas para obtener el resultado deseado.Por lo que puedo ver, esto es realmente imposible de hacer con CSS.
@Harmen muestra buenas soluciones PHP y jQuery en su respuesta.
fuente
Me gustaría sugerir una solución CSS pura que sea más útil que la solución de primera letra presentada pero que también sea muy similar.
Aunque esto se limita a la primera línea, puede ser útil para más casos de uso que la solución de la primera letra , ya que aplica mayúsculas a toda la línea y no solo a la primera palabra. (todas las palabras en la primera línea) En el caso específico del OP esto podría haberlo resuelto.
Notas: ¡ Como se menciona en los comentarios de la solución de la primera letra , el orden de las reglas CSS es importante! También tenga en cuenta que he cambiado la
<a>
etiqueta de una<div>
etiqueta, porque por alguna razón el pseudo-elemento::first-line
no funciona con<a>
etiquetas de forma nativa , pero cualquiera<div>
o<p>
están muy bien. EDITAR: el<a>
elemento funcionará sidisplay: inline-block;
se agrega a la.link
clase. ¡Gracias a Dave Land por ver eso!Nueva Nota: si el texto se ajusta , perderá las mayúsculas porque de hecho ahora está en la segunda línea (la primera línea todavía está bien).
fuente
( not working )
ejemplo puede hacerse funcionar agregandodisplay: inline-block;
al.link
estilo.JavaScript:
CSS:
Lo que Khan "terminó haciendo" (que es más limpio y funcionó para mí) está en los comentarios de la publicación marcada como la respuesta.
fuente
captialize
solo afecta a la primera letra de la palabra. http://www.w3.org/TR/CSS21/text.html#propdef-text-transformfuente
Puede ser útil para java y jstl.
En JSP
1)
2)
En CSS
3)
fuente
${fn:toLowerCase(some.key)}
directamente, sin tener que usarfmt:message
. Gracias.¡Puedes hacerlo con css primera letra! Por ejemplo, lo quería para el menú:
Solo funciona con elementos de bloque, ¡por lo tanto, el bloque en línea!
fuente
Si los datos provienen de una base de datos, como en mi caso, puede reducirlos antes de enviarlos a una lista de selección / lista desplegable. Es una pena que no puedas hacerlo en CSS.
fuente
Después de investigar mucho, encontré que jquery function / expression cambiaba el texto en la primera letra solo en mayúscula, modifico ese código en consecuencia para que sea viable para el campo de entrada. Cuando escribes algo en el campo de entrada y luego te mueves a otro archivo o elemento, el texto de ese campo cambiará solo con mayúsculas en la primera letra. No importa el tipo de texto del usuario en mayúsculas o minúsculas completas:
Sigue este código:
Paso 1: Llame a la biblioteca jquery en html head:
Paso 2: escriba el código para cambiar el texto de los campos de entrada:
Paso 3: cree campos de entrada HTML con los mismos ID que usa en el código jquery como:
El id de este campo de entrada es: edit-submit-first-name (Se usa en código jquery en el paso 2)
** Resultado: asegúrese de que el texto cambiará después de mover su enfoque de ese campo de entrada a otro elemento. Porque usamos foco fuera de evento de jquery aquí. El resultado debería ser el siguiente: Tipo de usuario: "gracias", cambiará con "Gracias". ** **
La mejor de las suertes
fuente
La solución PHP, en backend:
fuente
Sé que esta es una respuesta tardía, pero si desea comparar el rendimiento de varias soluciones, tengo un jsPerf que creé.
Las soluciones Regex son las más rápidas con seguridad.
Aquí está el jsPerf: https://jsperf.com/capitalize-jwaz
Hay 2 soluciones regex.
El primero usa
/\b[a-z]/g
. El límite de palabras será palabras en mayúscula, como no divulgación a No divulgación.Si solo desea poner en mayúscula las letras precedidas por un espacio, use la segunda expresión regular
fuente
si está usando jQuery; Esta es una forma de hacerlo:
Aquí hay una versión más fácil de leer que hace lo mismo:
Manifestación
fuente
todo mal existe -> variante de fuente: minúsculas;
transformación de texto: capitalizar; solo la primera letra mayúscula
fuente
text-transform: capitalize;
no altera el texto que ya está en mayúsculas. Vea la pregunta nuevamente: el usuario ya lo intentó.