Aqui está o meu HTML:
<a href="#" class="link">small caps</a> &
<a href="#" class="link">ALL CAPS</a>
Aqui está o meu CSS:
.link {text-transform: capitalize;}
A saída é:
Small Caps & ALL CAPS
e eu quero que a saída seja:
Small Caps & All Caps
Alguma ideia?
Respostas:
Não há como fazer isso com CSS, você pode usar PHP ou Javascript para isso.
Exemplo de PHP:
Exemplo de jQuery (agora é um plugin!):
fonte
Você quase pode fazer isso com:
Isso lhe dará a saída:
fonte
Converta com JavaScript usando
.toLowerCase()
ecapitalize
faria o resto.fonte
Pergunta interessante!
capitalize
transforma todas as primeiras letras de uma palavra em maiúsculas, mas não transforma as outras letras em minúsculas. Nem mesmo a:first-letter
pseudo-classe vai cortá-la (porque se aplica à primeira letra de cada elemento, não a cada palavra), e não vejo uma maneira de combinar letras minúsculas e maiúsculas para obter o resultado desejado.Tanto quanto eu posso ver, isso é realmente impossível com CSS.
@Harmen mostra soluções PHP e jQuery bonitas em sua resposta.
fonte
Gostaria de sugerir uma solução CSS pura que seja mais útil do que a primeira letra apresentada, mas também muito semelhante.
Embora isso seja limitado à primeira linha, pode ser útil para mais casos de uso que a solução da primeira letra , pois aplica capitalização a toda a linha e não apenas à primeira palavra. (todas as palavras na primeira linha) No caso específico do OP, isso poderia ter resolvido.
Notas: Conforme mencionado nos comentários da primeira letra da solução, a ordem das regras CSS é importante! Observe também que mudei a
<a>
tag de uma<div>
tag porque, por algum motivo, o pseudoelemento::first-line
não funciona com<a>
tags nativamente, mas é bom<div>
ou<p>
não. EDIT: o<a>
elemento funcionará sedisplay: inline-block;
for adicionado à.link
classe. Obrigado a Dave Land por descobrir isso!Nova nota: se o texto for agrupado , a letra maiúscula será perdida, porque agora ela está na segunda linha (a primeira linha ainda está ok).
fonte
( not working )
possível fazer seu exemplo funcionar adicionandodisplay: inline-block;
ao.link
estilo.JavaScript:
CSS:
O que Khan "acabou fazendo" (que é mais limpo e funcionou para mim) está nos comentários do post marcado como resposta.
fonte
captialize
afeta somente a primeira letra da palavra. http://www.w3.org/TR/CSS21/text.html#propdef-text-transformfonte
Pode ser útil para java e jstl.
No JSP
1
2)
Em CSS
3)
fonte
${fn:toLowerCase(some.key)}
diretamente, sem ter que usarfmt:message
. Obrigado.Você pode fazer isso com a primeira letra css! por exemplo, eu queria para o menu:
Ele roda apenas com elementos de bloco - portanto, o bloco embutido!
fonte
Se os dados vierem de um banco de dados, como no meu caso, você pode baixá-los antes de enviá-los para uma lista de seleção / lista suspensa. Pena que você não pode fazê-lo em CSS.
fonte
Depois de pesquisar muito, achei a função / expressão jquery para alterar o texto na primeira letra apenas em maiúsculas, modifico esse código de acordo para torná-lo viável para o campo de entrada. Quando você escrever algo no campo de entrada e depois mover para outro arquivo ou elemento, o texto desse campo será alterado apenas com maiúscula na primeira letra. Não importa o texto do tipo de usuário com letras maiúsculas ou minúsculas completas:
Siga este código:
Etapa 1: Chame a biblioteca jquery no cabeçalho html:
Etapa 2: escreva o código para alterar o texto dos campos de entrada:
Etapa 3: Crie campos de entrada HTML com os mesmos IDs que você usa no código jquery, como:
O ID deste campo de entrada é: edit-submit-first-name (Ele usa no código jquery na etapa 2)
** Resultado: verifique se o texto será alterado depois que você mover o foco desse campo de entrada para outro elemento. Porque estamos usando o foco do evento jquery aqui. O resultado deve ser o seguinte: Tipo de usuário: "obrigado", ele será alterado para "Obrigado". **
Boa sorte
fonte
A solução PHP, no back-end:
fonte
Sei que esta é uma resposta tardia, mas se você quiser comparar o desempenho de várias soluções, tenho um jsPerf que criei.
As soluções Regex são as mais rápidas, com certeza.
Aqui está o jsPerf: https://jsperf.com/capitalize-jwaz
Existem 2 soluções regex.
O primeiro usa
/\b[a-z]/g
. O limite de palavras incluirá maiúsculas como não divulgação à não divulgação.Se você deseja colocar apenas letras maiúsculas em maiúsculas precedidas por um espaço, use o segundo regex
fonte
se você estiver usando jQuery; Esta é uma maneira de fazer isso:
Aqui está uma versão mais fácil de ler, fazendo a mesma coisa:
Demo
fonte
tudo errado existe -> variante de fonte: letras minúsculas;
transformação de texto: capitalizar; apenas a primeira letra
fonte
text-transform: capitalize;
não altera o texto que já está em maiúsculas. Veja a pergunta novamente: O usuário já tentou isso.