Hier ist mein HTML:
<a href="#" class="link">small caps</a> &
<a href="#" class="link">ALL CAPS</a>
Hier ist mein CSS:
.link {text-transform: capitalize;}
Die Ausgabe ist:
Small Caps & ALL CAPS
und ich möchte, dass die Ausgabe ist:
Small Caps & All Caps
Irgendwelche Ideen?
Antworten:
Mit CSS ist dies nicht möglich. Sie können hierfür PHP oder Javascript verwenden.
PHP Beispiel:
jQuery-Beispiel (es ist jetzt ein Plugin!):
quelle
Sie können es fast tun mit:
Es gibt Ihnen die Ausgabe:
quelle
Konvertieren Sie mit JavaScript mit
.toLowerCase()
undcapitalize
erledigen Sie den Rest.quelle
Interessante Frage!
capitalize
wandelt jeden ersten Buchstaben eines Wortes in Großbuchstaben um, die anderen Buchstaben jedoch nicht in Kleinbuchstaben. Nicht einmal die:first-letter
Pseudoklasse wird es schneiden (weil es für den ersten Buchstaben jedes Elements gilt, nicht für jedes Wort), und ich sehe keine Möglichkeit, Kleinbuchstaben und Großbuchstaben zu kombinieren, um das gewünschte Ergebnis zu erzielen.Soweit ich sehen kann, ist dies mit CSS in der Tat unmöglich.
@Harmen zeigt in seiner Antwort gut aussehende PHP- und jQuery-Problemumgehungen.
quelle
Ich möchte eine reine CSS- Lösung vorschlagen , die nützlicher ist als die vorgestellte Lösung für den ersten Buchstaben , aber auch sehr ähnlich ist.
Obwohl dies auf die erste Zeile beschränkt ist, kann es für mehr Anwendungsfälle als die Erstbuchstabenlösung nützlich sein, da die Großschreibung auf die gesamte Zeile und nicht nur auf das erste Wort angewendet wird. (alle Wörter in der ersten Zeile) Im speziellen Fall des OP hätte dies das Problem lösen können.
Anmerkungen: Wie in den Lösungskommentaren des ersten Buchstabens erwähnt , ist die Reihenfolge der CSS-Regeln wichtig! Beachten Sie auch, dass ich das
<a>
Tag für ein<div>
Tag geändert habe, da das Pseudoelement aus irgendeinem Grund::first-line
nicht nativ mit<a>
Tags funktioniert, aber entweder oder in Ordnung ist. BEARBEITEN: Das Element funktioniert, wenn es der Klasse hinzugefügt wird . Vielen Dank an Dave Land , der das entdeckt hat!<div>
<p>
<a>
display: inline-block;
.link
Neuer Hinweis: Wenn der Text umbrochen wird, verliert er die Groß- und Kleinschreibung, da er sich jetzt tatsächlich in der zweiten Zeile befindet (die erste Zeile ist noch in Ordnung).
quelle
( not working )
Beispiel kann durch Hinzufügendisplay: inline-block;
zum.link
Stil zum Funktionieren gebracht werden.JavaScript:
CSS:
Was Khan "getan hat" (was sauberer ist und für mich funktioniert hat), steht in den Kommentaren des als Antwort gekennzeichneten Beitrags.
quelle
captialize
bewirkt nur den ersten Buchstaben des Wortes. http://www.w3.org/TR/CSS21/text.html#propdef-text-transformquelle
Kann für Java und JSTL nützlich sein.
In JSP
1.
2.
In CSS
3.
quelle
${fn:toLowerCase(some.key)}
direkt tun , ohne verwenden zu müssenfmt:message
. Vielen Dank.Sie können es mit CSS-Anfangsbuchstaben tun! zB wollte ich es für das Menü:
Es läuft nur mit Blockelementen - daher der Inline-Block!
quelle
Wenn die Daten wie in meinem Fall aus einer Datenbank stammen, können Sie sie senken, bevor Sie sie an eine Auswahlliste / Dropdown-Liste senden. Schade, dass Sie das in CSS nicht können.
quelle
Nachdem ich viel recherchiert hatte, fand ich jquery function / expression, um Text im ersten Buchstaben nur in Großbuchstaben zu ändern. Ich ändere diesen Code entsprechend, damit er für Eingabefelder verwendet werden kann. Wenn Sie etwas in das Eingabefeld schreiben und dann zu einem anderen Feld oder Element wechseln, ändert sich der Text dieses Felds nur mit Groß- und Kleinschreibung. Unabhängig davon, ob der Benutzer Text in vollständiger Groß- oder Kleinschreibung eingibt:
Folgen Sie diesem Code:
Schritt 1: Rufen Sie die jquery-Bibliothek im HTML-Kopf auf:
Schritt 2: Schreiben Sie Code, um den Text der Eingabefelder zu ändern:
Schritt 3: Erstellen Sie HTML-Eingabefelder mit denselben IDs, die Sie im JQuery-Code verwenden, wie:
Die ID dieses Eingabefelds lautet: edit-submit-first-name (Verwendung in jquery-Code in Schritt 2)
** Ergebnis: Stellen Sie sicher, dass sich der Text ändert, nachdem Sie Ihren Fokus von diesem Eingabefeld auf ein anderes Element verschoben haben. Weil wir hier Focus Out Event of JQuery verwenden. Das Ergebnis sollte folgendermaßen aussehen: Benutzertyp: "Danke", es ändert sich mit "Danke". ** **.
Viel Glück
quelle
Die PHP-Lösung im Backend:
quelle
Ich weiß, dass dies eine späte Antwort ist, aber wenn Sie die Leistung verschiedener Lösungen vergleichen möchten, habe ich einen von mir erstellten jsPerf.
Regex-Lösungen sind mit Sicherheit die schnellsten.
Hier ist der jsPerf: https://jsperf.com/capitalize-jwaz
Es gibt 2 Regex-Lösungen.
Der erste verwendet
/\b[a-z]/g
. Die Wortgrenze setzt Wörter wie die Nichtoffenlegung in die Geheimhaltung ein.Wenn Sie nur Buchstaben groß schreiben möchten, denen ein Leerzeichen vorangestellt ist, verwenden Sie den zweiten regulären Ausdruck
quelle
wenn Sie jQuery verwenden; Dies ist eine Möglichkeit, dies zu tun:
Hier ist eine leichter zu lesende Version, die dasselbe tut:
Demo
quelle
alles falsch es existiert -> Schriftvariante: Kapitälchen;
Texttransformation: groß schreiben; nur die erste Buchstabenkappe
quelle
text-transform: capitalize;
enthält eine Nuance: Ändert keinen Text, der bereits aus Großbuchstaben besteht. Siehe die Frage noch einmal: Der Benutzer hat das bereits versucht.