Ich habe eine Site mit dem Raster der Zurb Foundation 3 erstellt . Jede Seite hat eine große h1
:
body {
font-size: 100%
}
/* Headers */
h1 {
font-size: 6.2em;
font-weight: 500;
}
<div class="row">
<div class="twelve columns text-center">
<h1> LARGE HEADER TAGLINE </h1>
</div>
<!-- End Tagline -->
</div>
<!-- End Row -->
Wenn ich die Größe des Browsers auf die Größe eines Mobiltelefons ändere, wird die große Schrift nicht angepasst und der Browser enthält einen horizontalen Bildlauf, um den großen Text aufzunehmen.
Ich habe festgestellt, dass sich die Header auf der Beispielseite der Zurb Foundation 3- Typografie an den Browser anpassen, wenn dieser komprimiert und erweitert wird.
Vermisse ich etwas wirklich Offensichtliches? Wie erreiche ich das?
css
responsive-design
font-size
zurb-foundation
em
user2213682
quelle
quelle
Antworten:
Sie
font-size
reagieren nicht so, wenn Sie die Größe des Browserfensters ändern. Stattdessen reagieren sie auf die Browser - Zoom / Typ Größe Einstellungen, wie wenn Sie drücken Ctrlund +zusammen auf der Tastatur , während im Browser.Medien-Anfragen
Sie müssten Medienabfragen verwenden , um die Schriftgröße in bestimmten Intervallen zu verringern, in denen Ihr Design beschädigt und Bildlaufleisten erstellt werden.
Versuchen Sie beispielsweise, dies in Ihrem CSS unten hinzuzufügen, und ändern Sie die Breite von 320 Pixel, wenn Ihr Design zu brechen beginnt:
Prozentuale Länge des Ansichtsfensters
Sie können auch verwenden Ansichtsfenster Prozent Längen wie
vw
,vh
,vmin
undvmax
. Das offizielle W3C-Dokument dazu lautet:Aus demselben W3C-Dokument kann wiederum jede einzelne Einheit wie folgt definiert werden:
Und sie werden genauso verwendet wie alle anderen CSS-Werte:
Die Kompatibilität ist relativ gut, wie hier zu sehen ist . Einige Versionen von Internet Explorer und Edge unterstützen vmax jedoch nicht. Außerdem haben iOS 6 und 7 ein Problem mit der vh-Einheit, das in iOS 8 behoben wurde.
quelle
font-size: 1.5vw;
?font-size: calc(12px + 1vw)
Sie können den Ansichtsfensterwert anstelle von ems, pxs oder pts verwenden:
Aus CSS-Tricks: Typografie in Ansichtsfenstergröße
quelle
Ich habe mit Möglichkeiten herumgespielt, um dieses Problem zu lösen, und glaube, ich habe eine Lösung gefunden:
Wenn Sie Ihre Anwendung für Internet Explorer 9 (und höher) und alle anderen modernen Browser schreiben können, die CSS calc (), rem-Einheiten und vmin-Einheiten unterstützen. Sie können dies verwenden, um skalierbaren Text ohne Medienabfragen zu erhalten:
Hier ist es in Aktion: http://codepen.io/csuwldcat/pen/qOqVNO
quelle
Verwenden Sie CSS-
media
Spezifizierer (das verwenden sie [zurb]) für das reaktionsschnelle Styling:quelle
Wenn es Ihnen nichts ausmacht, eine jQuery-Lösung zu verwenden, können Sie das TextFill-Plugin ausprobieren
https://github.com/jquery-textfill/jquery-textfill
quelle
Es gibt verschiedene Möglichkeiten, dies zu erreichen.
Verwenden Sie eine Medienabfrage , die jedoch Schriftgrößen für mehrere Haltepunkte erfordert:
Verwenden Sie die Abmessungen in % oder em . Ändern Sie einfach die Grundschriftgröße, und alles wird sich ändern. Im Gegensatz zum vorherigen können Sie einfach die Hauptschriftart und nicht jedes Mal h1 ändern oder die Basisschriftgröße als Standard für das Gerät festlegen und den Rest in
em
:Siehe kyleschaeffer.com / ....
CSS 3 unterstützt neue Dimensionen, die relativ zum Ansichtsfenster sind. Dies funktioniert jedoch nicht unter Android:
3,2 vmax = größer als 3,2 vw oder 3,2 vh
Siehe CSS-Tricks ... und siehe auch Kann ich verwenden ...
quelle
Es gibt einen anderen Ansatz für reaktionsschnelle Schriftgrößen - die Verwendung von Rem-Einheiten.
Später in Medienabfragen können Sie alle Schriftgrößen anpassen, indem Sie die Basisschriftgröße ändern:
Damit dies in Internet Explorer 7 und Internet Explorer 8 funktioniert, müssen Sie einen Fallback mit px-Einheiten hinzufügen:
Wenn Sie mit Less entwickeln , können Sie ein Mixin erstellen, das die Mathematik für Sie erledigt.
Unterstützung für Rem-Einheiten - http://caniuse.com/#feat=rem
quelle
Die "vw" -Lösung hat ein Problem, wenn sehr kleine Bildschirme aufgerufen werden. Sie können die Basisgröße einstellen und von dort mit calc () nach oben gehen:
quelle
font-size: calc(1.2rem + 1vw)
für eine Überschrift verwendet. Auf diese Weise hatte ich den Vorteil, eine nicht pixelbasierte Einheit zu verwenden (obwohl dies hier möglicherweise nicht anwendbar ist). Ich hatte auch einen Fallback in einfachen Ems für ältere Browser. Da dies auf Mobilgeräten etwas klein wurde, habe ich für diese eine Medienabfrage verwendet. Das mag zu aufwendig sein, aber es scheint zu tun, was ich wollte.Dies ist teilweise in Stiftung 5 implementiert.
In der Datei _type.scss gibt es zwei Sätze von Header-Variablen:
Für mittlere Werte generieren sie Größen basierend auf dem ersten Satz von Variablen:
Und für Standardbildschirme, dh kleine Bildschirme, verwenden sie einen zweiten Satz von Variablen, um CSS zu generieren:
Sie können diese Variablen verwenden und in Ihrer benutzerdefinierten scss-Datei überschreiben, um die Schriftgrößen für die jeweiligen Bildschirmgrößen festzulegen.
quelle
Eine reaktionsschnelle Schriftgröße kann auch mit diesem JavaScript-Code namens FlowType erreicht werden :
FlowType - Responsive Web-Typografie vom Feinsten: Schriftgröße basierend auf der Elementbreite.
Oder dieser JavaScript-Code namens FitText :
FitText - Macht Schriftgrößen flexibel. Verwenden Sie dieses Plugin in Ihrem Responsive Design für die verhältnisbasierte Größenänderung Ihrer Überschriften.
quelle
Wenn Sie ein Build-Tool verwenden, versuchen Sie es mit Rucksack.
Andernfalls können Sie CSS-Variablen (benutzerdefinierte Eigenschaften) verwenden, um die minimale und maximale Schriftgröße wie folgt einfach zu steuern ( Demo ):
quelle
Ich habe einen großartigen Artikel von CSS-Tricks gesehen . Es funktioniert gut:
Zum Beispiel:
Wir können dieselbe Gleichung auf die
line-height
Eigenschaft anwenden , damit sie sich auch mit dem Browser ändert.quelle
Ich hatte gerade eine Idee, bei der Sie die Schriftgröße nur einmal pro Element definieren müssen, die jedoch immer noch von Medienabfragen beeinflusst wird.
Zuerst setze ich die Variable "--text-scale-unit" auf "1vh" oder "1vw", abhängig vom Ansichtsfenster, das die Medienabfragen verwendet.
Dann benutze ich die Variable mit calc () und meiner Multiplikator-Nummer für die Schriftgröße:
In meinem Beispiel habe ich nur die Ausrichtung des Ansichtsfensters verwendet, aber das Prinzip sollte bei allen Medienabfragen möglich sein.
quelle
vmin
undvmax
statt dieses@media
Geschäfts?"FitText" von jQuery ist wahrscheinlich die am besten reagierende Header-Lösung. Überprüfen Sie es bei GitHub: https://github.com/davatron5000/FitText.js
quelle
Wie bei vielen Frameworks beginnen die Dinge nach links und rechts zu brechen, sobald Sie das Raster verlassen und das Standard-CSS des Frameworks überschreiben. Frameworks sind von Natur aus starr. Wenn Sie den Standard-H1-Stil von Zurb zusammen mit den Standard-Rasterklassen verwenden, sollte die Webseite auf Mobilgeräten ordnungsgemäß angezeigt werden (dh reaktionsschnell).
Es scheint jedoch, dass Sie sehr große 6.2em-Überschriften wünschen, was bedeutet, dass der Text verkleinert werden muss, um im Hochformat in ein mobiles Display zu passen. Am besten verwenden Sie ein responsives Text-jQuery-Plugin wie FlowType und FitText . Wenn Sie etwas Leichtes wollen, können Sie sich mein jQuery-Plugin für skalierbaren Text ansehen:
http://thdoan.github.io/scalable-text/
Beispielnutzung:
quelle
Im tatsächlichen Original- Sass (nicht scss) können Sie die folgenden Mixins verwenden, um die Absätze und alle Überschriften automatisch festzulegen
font-size
.Ich mag es, weil es viel kompakter ist. Und schneller zu tippen. Davon abgesehen bietet es die gleiche Funktionalität. Wenn Sie sich dennoch an die neue Syntax - scss halten möchten, können Sie meinen Sass-Inhalt hier in scss konvertieren: [SASS HIER IN SCSS UMWANDELN]
Unten gebe ich Ihnen vier Sass-Mixins. Sie müssen ihre Einstellungen an Ihre Bedürfnisse anpassen.
Nachdem Sie mit den Einstellungen fertig sind, rufen Sie einfach ein Mixin auf - + config-and-run-font-generator () . Weitere Informationen finden Sie im Code unten und in den Kommentaren.
Ich denke, Sie könnten es automatisch für eine Medienabfrage tun, wie es für Header-Tags getan wird, aber wir alle verwenden unterschiedliche Medienabfragen, so dass es nicht für jeden geeignet wäre. Ich verwende einen Mobile-First-Design-Ansatz, also würde ich das so machen. Fühlen Sie sich frei, diesen Code zu kopieren und zu verwenden.
KOPIEREN UND EINFÜGEN SIE DIESE MISCHUNGEN IN IHRE DATEI:
KONFIGURIEREN SIE ALLE MISCHUNGEN NACH IHREN BEDÜRFNISSEN - SPIELEN SIE MIT IHM! :) UND RUFEN SIE ES DANN OBEN AUF IHREM TATSÄCHLICHEN SASS-CODE AN:
Dies würde diese Ausgabe erzeugen. Sie können Parameter anpassen, um verschiedene Ergebnissätze zu generieren. Da wir alle unterschiedliche Medienabfragen verwenden, müssen Sie einige Mixins manuell bearbeiten (Stil und Medien).
GENERIERTES CSS:
quelle
Ich verwende diese CSS-Klassen und sie machen meinen Text auf jeder Bildschirmgröße flüssig:
quelle
quelle
Es gibt folgende Möglichkeiten, wie Sie dies erreichen können:
Diese Einheiten werden abhängig von der Breite und Höhe des Bildschirms automatisch verkleinert.
quelle
Sie können die Schriftgröße anpassen, wenn Sie sie in vw (Breite des Ansichtsfensters) definieren. Es wird jedoch nicht von allen Browsern unterstützt. Die Lösung besteht darin, JavaScript zu verwenden, um die Basisschriftgröße abhängig von der Browserbreite zu ändern und alle Schriftgrößen in% festzulegen.
In diesem Artikel wird beschrieben, wie reaktionsschnelle Schriftgrößen erstellt werden: http://wpsalt.com/responsive-font-size-in-wordpress-theme/
quelle
Ich habe diese Lösung gefunden und sie funktioniert sehr gut für mich:
quelle
Eine Möglichkeit, das Problem zu lösen, dass der Text sowohl auf dem Desktop als auch auf dem Handy / Tablet gut aussieht, besteht darin, die Textgröße auf physische Einheiten wie physische Zentimeter oder Zoll festzulegen, die nicht vom PPI des Bildschirms abhängen (Punkte pro Zoll).
Basierend auf dieser Antwort ist unten der Code, den ich am Ende des HTML-Dokuments für eine reaktionsfähige Schriftgröße verwende:
Im obigen Code werden den Elementen einer anderen Klasse Schriftgrößen in physischen Einheiten zugewiesen, sofern der Browser / das Betriebssystem für die PPI seines Bildschirms korrekt konfiguriert ist.
Eine Schriftart mit physischen Einheiten ist immer nicht zu groß und nicht zu klein, solange der Abstand zum Bildschirm üblich ist (Abstand zum Lesen von Büchern).
quelle
Die Textgröße kann mit einer
vw
Einheit eingestellt werden, dh der "Breite des Ansichtsfensters". Auf diese Weise folgt die Textgröße der Größe des Browserfensters:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_responsive_text
Für mein persönliches Projekt habe ich vw und @meida verwendet. Es funktioniert perfekt.
quelle
Verwenden Sie diese Gleichung:
Für alles, was größer oder kleiner als 1440 und 768 ist, können Sie entweder einen statischen Wert angeben oder denselben Ansatz anwenden.
Der Nachteil bei der vw-Lösung besteht darin, dass Sie kein Skalierungsverhältnis einstellen können. Angenommen, ein 5vw bei einer Bildschirmauflösung von 1440 hat möglicherweise eine Schriftgröße von 60 Pixel, Ihre Ideenschriftgröße. Wenn Sie jedoch die Fensterbreite auf 768 verkleinern, kann dies zu einer Verkleinerung führen 12px, nicht das Minimum, das Sie wollen.
Mit diesem Ansatz können Sie Ihre obere und untere Grenze festlegen, und die Schriftart skaliert sich dazwischen.
quelle
Wir können calc () von css verwenden
Die mathematische Formel lautet calc (minsize + (maxsize - minsize) * (100vm - minviewportwidth) / (maxwidthviewoport - minviewportwidth))
Codepen
quelle
Ich fürchte, es gibt keine einfache Lösung für die Größenänderung von Schriftarten. Sie können die Schriftgröße mithilfe einer Medienabfrage ändern, die Größe wird jedoch technisch nicht reibungslos geändert. Wenn Sie beispielsweise Folgendes verwenden:
Sie
font-size
sind 3em sowohl für eine Breite von 300 Pixel als auch 200 Pixel. Aber du brauchst niedrigerfont-size
Breite von 200 Pixel, um eine perfekte Reaktion zu erzielen.Was ist die wirkliche Lösung? Es gibt nur einen Weg. Sie müssen ein PNG-Bild (mit transparentem Hintergrund) erstellen, das Ihren Text enthält. Danach können Sie Ihr Bild problemlos ansprechen lassen (z. B. Breite: 35%; Höhe: 28 Pixel). Auf diese Weise reagiert Ihr Text auf allen Geräten vollständig.
quelle
Nach vielen Schlussfolgerungen kam ich zu dieser Kombination:
quelle
Versuche dies
html { font-size: min(max(16px, 4vw), 22px); }
habe es von https://css-tricks.com/simplified-fluid-typography/ erhalten
quelle
Hier ist etwas, das für mich funktioniert hat. Ich habe es nur auf einem iPhone getestet.
Ob Sie oder Tags haben
h1
, setzen Sie dies um Ihren Text:h2
p
Dadurch wird ein 22pt-Text auf einem Desktop gerendert und ist auf dem iPhone weiterhin lesbar.
quelle