Die Frage scheint , dass bestimmte Buchstaben zu sein g
, y
, q
etc. , das einen Schwanz hat , dass schräg nach unten geneigt, nicht für vertikale Zentrierung ermöglichen. Hier ist ein Bild, um das Problem zu veranschaulichen .
Die Zeichen in der grünen Box sind im Grunde perfekt, da sie keinen nach unten gerichteten Schwanz haben. Die in der roten Box gezeigten zeigen das Problem.
Ich möchte, dass alle Zeichen perfekt vertikal zentriert sind. Im Bild sind Zeichen mit einem nach unten gerichteten Ende nicht vertikal zentriert. Ist dies möglich zu korrigieren?
Hier ist die Geige, die das Problem vollständig demonstriert .
.avatar {
border-radius: 50%;
display: inline-block;
text-align: center;
width: 125px;
height: 125px;
font-size: 60px;
background-color: rgb(81, 75, 93);
font-family: "Segoe UI";
margin-bottom: 10px;
}
.character {
position: relative;
top: 50%;
transform: translateY(-50%);
line-height: 100%;
color: #fff;
}
<div class="avatar">
<div class="character">W</div>
</div>
<div class="avatar">
<div class="character">y</div>
</div>
javascript
html
css
vertical-alignment
Chron Bag
quelle
quelle
v
iny
und eino
Teil ing
derselben Zeile befinden wie der niedrigste Punkt für die Großbuchstaben. Mit Ihrer Logik würden Å, Ä, Ö genauso ausgerichtet sein wie A und O, aber sie können nicht sein. Wenn Sie etwas Besonderes tun möchten, müssen Sie Javascript verwenden, um zu überprüfen, ob es sich um eine Small-Cap handelt, und dann den Charakter um einige Zeichen nach oben schieben.Antworten:
Hier ist meine Lösung mit JS. Die Idee ist, das Element in ein Bild umzuwandeln, um seine Daten als Pixel zu erhalten, und sie dann zu durchlaufen, um die Ober- und Unterseite jedes Zeichens zu finden und eine Übersetzung anzuwenden, um die Ausrichtung zu korrigieren. Dies funktioniert mit dynamischen Schrifteigenschaften.
Der Code ist nicht optimiert, unterstreicht jedoch die Hauptidee:
Code-Snippet anzeigen
AKTUALISIEREN
Hier ist eine erste Optimierung des Codes:
Ich benutze dafür das Dom-to-Image- Plugin.
quelle
Â
gezeigt, dass seine Zentrierung nicht optimal ist, wie ich in seiner Antwort kommentiert habe;) Er wird wahrscheinlich seine Meinung ändern, nachdem er dies gesehen hat und akzeptieren, wie Schrift funktioniertVielleicht gibt es eine bessere Antwort, aber es klingt so, als ob die einzige Möglichkeit darin besteht, verschiedene Stile manuell anzuwenden, je nachdem, ob es sich um einen der folgenden Stile handelt:
Beachten Sie nun, dass nach meinem Verständnis die relative Höhe der Schwänze und Stiele meiner Meinung nach durch die Schriftart definiert wird. Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, programmgesteuert darauf zuzugreifen. Daher müssen Sie diese Werte möglicherweise mit der Schriftart anpassen.
Beachten Sie auch, dass diese Lösung nicht für die Unterstützung mehrerer Sprachen geeignet ist, da Sie definieren müssen, in welche Kategorie jedes einzelne Zeichen in Dutzende verschiedener Zeichensätze passt.
quelle
ÂË
undâë
Dies ist eine schwierige Situation!
Von dem, was ich sagen kann, wird dies am schwierigsten zu nativ skalierbar (dh zu machen
%
,vw
odervh
Werten stattpx
oderem
). Wenn Sie dies auf Mobilgeräten oder Tablets hübsch gestalten möchten, sollten Sie meine Lösung mit@media
Haltepunkten verwenden.Meine Lösung erkennt im Wesentlichen , wenn es dich um ein Kleines Element mit einem Schwanz und fügt eine Klasse die Höhe zum Ausgleich für den Schwanz zu kompensieren.
In meinen Tests hat es nicht den Anschein , dass zusätzliche Handler für erforderlich waren Kapitalbuchstaben oder Kleinbuchstaben Buchstaben ohne Schwanz . Fühlen Sie sich frei, mich zu korrigieren, wenn ich falsch liege.
Es gibt eine JSFiddle, wenn Sie herumspielen und diese Lösung ändern / testen möchten.
Lass mich deine Gedanken wissen und wenn ich etwas verpasst habe. Es wäre cool, eine endgültige Lösung dafür zu finden, da ich in der Vergangenheit selbst ähnliche Probleme hatte!
quelle
Dazu benötigen Sie wahrscheinlich eine Hilfsklasse, damit Sie die Kleinbuchstaben mehr als die Großbuchstaben übersetzen können. Ein einfaches Skript kann diese Hilfsklassen einfach automatisch aktivieren.
Hoffe das löst das Problem für dich :)
quelle
y
ist nicht zentriert. Tweek noch etwas!o
undy
und Sie werden das bekommen. Die Charaktere mit Schwänzen verursachen das Problem an erster Stelle (im Beitrag erwähnt).