Ich habe ein besonderes Design für eine Webseite, das ich aus einem bereits erstellten Design implementieren muss, und einige der Textumbrüche werden von unten nach oben gefüllt (in meinem Fall ist es für unten links ausgerichteten dünnen Text in farbigen quadratischen Kacheln, sieht besser aus als es klingt). Das heißt, in einem Textblock, der mehrere Zeilen umbricht, wird die unterste Zeile zuerst (horizontal) gefüllt, sodass nach dem Umbruch jeder verbleibende horizontale Platz für die erste Zeile verbleibt.
Ist dies eine bekannte Art des Textumbruchs und wie könnte ich ihn in einer Webseite implementieren, ohne manuell Zeilenumbrüche im Quelltext hinzuzufügen? Oder könnten Sie dieses "Feature" zumindest benennen, damit ich es googeln kann?
Bearbeiten: Wenn beispielsweise im Text "Here be the link" nicht genügend Platz in einer Zeile vorhanden ist, sollte die Zeile als "Here \n be the link" anstelle des Standards "Hier be the \n link" gerendert werden. , wobei "\n" ein Zeilenumbruch ist.
Der Effekt, von dem Sie sprechen, heißt Vertikale Ausrichtung , in diesem Fall untere vertikale Ausrichtung. In Designanwendungen wie InDesign (aber nicht Illustrator ohne Hacken , stöhnen, weinen, stöhnen ... ) gibt es dafür eine einfache Schaltfläche.
In HTML/CSS ist die vertikale Ausrichtung nicht so einfach . Die vertikale Ausrichtung für eine Tabellenzelle ist einfach, vertical-align: bottom;
der Text beginnt unten, wie Sie ihn beschreiben, aber außerhalb von Tabellenzellen bezieht sich die vertikale Ausrichtung darauf, wie Bilder und andere Inline-Elemente mit Höhe an jedem Textblock ausgerichtet werden.
Sie können jedoch ein HTML-Div (oder ein beliebiges Blockelement) dazu zwingen, eine vertikale Ausrichtung zu haben, indem Sie ihm sagen, dass es mit der CSS-Regel so tun soll, als wäre es eine Tabellenzelle display: table-cell;
(ich habe Leute gesehen, die sagen, es muss etwas sein, das vorgibt, eine Tabelle zu sein, oder dass dies irgendwie 'schlechte Praxis' ist - sie haben es mit normalen HTML-Tabellen verwechselt, so ist es in Ordnung). Dann können Sie die CSS-Regel hinzufügen vertical-align: bottom;
und es wird funktionieren.
Leider benötigen Sie eine Problemumgehung, damit dies in alten Versionen des Internet Explorers funktioniert, die ignorieren display: table-cell;
, und es kann schwierig sein, dies zum Laufen zu bringen, wenn CSS float
s beteiligt sind, was häufig für Felder in einer Zeile oder in Spalten verwendet wird ( table-cell
s nicht float) - ein Raster aus Kacheln, wie in der Frage beschrieben, wird mit ziemlicher Sicherheit float
.
Hier ist ein abgespecktes Live-bearbeitbares Beispiel auf der Website JSbin , das zeigt, wie es überall funktioniert, einschließlich alter Versionen von IE, einschließlich in schwebenden Kacheln. Klicken Sie auf die Schaltfläche „In JSbin bearbeiten“, um den Code anzuzeigen und damit herumzuspielen: Es gibt viele Codekommentare, die erklären, was wichtig und was optional ist.
Das Grundprinzip: Verwenden Sie Wrapper und einen Fallback-Trick für Internet Explorer mit position: absolute;
Wrapper und position: relative;
Inhalt.
(Das zufällige graue Kästchen ist IE7, das die JSbin-Bearbeitungsschaltfläche vermasselt ...)
Das einfachste Beispiel für die untere Ausrichtung, die im alten IE funktioniert, ist dieser HTML-Code:
<!--[if lte IE 7]><div class="old-ie"><![endif]-->
<div class="bottom wrapper">
<div class="content">
This text is bottom aligned
</div>
</div>
<div class="middle wrapper">
<div class="content">
This text is bottom aligned
</div>
</div>
<!--[if lte IE 7]></div><![endif]-->
...und dieses CSS:
/* for normal browsers...
*******************/
.content {
display: table-cell;
height: 200px;
}
.bottom .content {
vertical-align: bottom;
}
.middle .content {
vertical-align: middle;
}
/* make it more-or-less work in IE6, IE7
*******************/
.old-ie {
position: relative;
}
.old-ie .wrapper {
position: absolute;
}
.old-ie .content {
position: relative;
}
.old-ie .bottom .wrapper, .old-ie .bottom .content {
bottom: 0;
}
.old-ie .middle .wrapper {
top: 50%;
}
.old-ie .middle .content {
top: -50%;
}
Schließlich ist hier ein Link zu einer StackOverflow-Antwort (Kodierungs-Q&A-Site), die ich vor einiger Zeit geschrieben habe und die bei Bedarf etwas detaillierter erklärt, wie man vertical-align
browserübergreifend mit Gleitkommazahlen (wahrscheinlich der schwierigste Fall) arbeitet und was die Einschränkungen sind.
visibility: hidden;
Wort nach dem anderen von hinten nach vorne zu erstellen und die Breite gegen den Raum zu testen.float: left;
oder direkt in die Kachel einfügen? Dies würde dazu führen, dass der Text der Hauptkachel um den Titel herumfließt, und könnte eine konventionellere Art sein, die Dinge zum Laufen zu bringen. Konventionell ist normalerweise gut in der Typografie, denn wenn ein Leser abgelenkt ist, um ein ungewöhnliches Layout zu finden, schenkt er dem Inhalt weniger Aufmerksamkeit.Ich bin mir nicht sicher, ob dies die richtige Seite ist, um diese Frage zu stellen, aber hier ist ein Beispiel dafür, was Sie brauchen (für IE, funktioniert in 8 und höher):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style>
.tile {width:200px; height:100px; background-color:#FFFF00; vertical-align:bottom; display:table-cell;}
</style>
</head>
<body>
<div class="tile">123</div>
</body>
</html>
Beachten Sie das vertical-align:bottom;
und display:table-cell;
im Stil und spielen Sie ruhig mit Schriftarten, Rändern usw.
schick