Es fällt mir schwer, mich mit der Skalierung von Schriftarten zu beschäftigen.
Ich habe derzeit diese Seite mit einem Körper font-size
von 100%. 100% von was aber? Dies scheint bei 16 Pixeln zu rechnen.
Ich hatte den Eindruck, dass 100% sich irgendwie auf die Größe des Browserfensters beziehen würden, aber anscheinend nicht, weil es immer 16 Pixel sind, ob das Fenster auf eine mobile Breite oder einen ausgewachsenen Breitbild-Desktop verkleinert wird.
Wie kann ich den Text auf meiner Website in Bezug auf den Container skalieren? Ich habe es versucht em
, aber das skaliert auch nicht.
Meine Argumentation ist, dass Dinge wie mein Menü beim Ändern der Größe zerquetscht werden, daher muss ich unter anderem die Anzahl px
font-size
der .menuItem
Elemente in Bezug auf die Breite des Containers reduzieren . (Funktioniert beispielsweise im Menü auf einem großen Desktop 22px
einwandfrei. Gehen Sie auf die Tablet-Breite und 16px
ist besser geeignet.)
Ich bin mir bewusst , ich Haltepunkte hinzufügen kann, aber ich mag wirklich den Text Skala als auch als mit zusätzlichen Haltepunkten, sonst, ich werde mit Hunderten von Breakpoints am Ende für all 100pixels in der Breite zu verringern , den Text zu steuern.
quelle
font-size: 100%;
bedeutet 100% der Größe, die der Text gehabt hätte (dh die, die er von seinem übergeordneten Text geerbt hat). Standardmäßig ist das 16px. Wenn Sie also 50% verwenden würden, wäre es Schriftgröße: 8pxAntworten:
BEARBEITEN: Wenn der Container nicht der Hauptteil ist, deckt CSS Tricks alle Ihre Optionen unter Anpassen von Text an einen Container ab .
Wenn der Container der Körper ist, suchen Sie nach prozentualen Längen des Ansichtsfensters :
Die Werte sind:
vw
(% der Breite des Ansichtsfensters)vh
(% der Ansichtsfensterhöhe)vi
(1% der Größe des Ansichtsfensters in Richtung der Inline-Achse des Stammelements)vb
(1% der Größe des Ansichtsfensters in Richtung der Blockachse des Stammelements)vmin
(der kleinere vonvw
odervh
)vmax
(je größer odervw
odervh
)1 v * entspricht 1% des anfänglich enthaltenden Blocks.
Die Verwendung sieht folgendermaßen aus:
Wie Sie sehen können, tun Sie dies mit zunehmender Breite des Ansichtsfensters
font-size
, ohne Medienabfragen verwenden zu müssen.Diese Werte sind genau wie
px
oderem
eine Größeneinheit, sodass sie auch zur Größe anderer Elemente wie Breite, Rand oder Abstand verwendet werden können.Die Browserunterstützung ist ziemlich gut, aber Sie benötigen wahrscheinlich einen Fallback, wie z.
Überprüfen Sie die Support-Statistiken: http://caniuse.com/#feat=viewport-units .
Schauen Sie sich auch CSS-Tricks an, um einen breiteren Überblick zu erhalten : Viewport Sized Typography
Hier ist ein schöner Artikel über das Festlegen von Minimal- / Maximalgrößen und etwas mehr Kontrolle über die Größen: Präzise Kontrolle über reaktionsschnelle Typografie
Und hier ist ein Artikel über das Festlegen Ihrer Größe mit calc (), sodass der Text das Ansichtsfenster ausfüllt: http://codepen.io/CrocoDillon/pen/fBJxu
Lesen Sie auch diesen Artikel, in dem eine Technik verwendet wird, die als "geschmolzenes Führen" bezeichnet wird, um auch die Linienhöhe anzupassen. Geschmolzenes Blei in CSS
quelle
FitText.js
Alternative aus, die am Ende des Artikels @jbenjohnson angegeben ist.Was aber, wenn der Container nicht das Ansichtsfenster (Body) ist?
Diese Frage wird in einem Kommentar von Alex unter der akzeptierten Antwort gestellt .
Diese Tatsache bedeutet nicht,
vw
dass für diesen Behälter nicht in gewissem Umfang die Größe verwendet werden kann. Um überhaupt eine Variation zu sehen, muss man davon ausgehen, dass der Behälter in irgendeiner Weise flexibel ist. Ob durch einen direkten Prozentsatzwidth
oder durch 100% minus Margen. Der Punkt wird "streitig", wenn der Container immer auf beispielsweise200px
breit eingestellt ist - dann setzen Sie einfach einenfont-size
, der für diese Breite funktioniert.Beispiel 1
Bei einem Container mit flexibler Breite muss jedoch erkannt werden, dass der Container in irgendeiner Weise immer noch außerhalb des Ansichtsfensters dimensioniert wird . Daher muss eine
vw
Einstellung basierend auf dem prozentualen Größenunterschied zum Ansichtsfenster angepasst werden. Dies bedeutet, dass die Größe der übergeordneten Wrapper berücksichtigt wird. Nehmen Sie dieses Beispiel :Angenommen, hier
div
ist das ein Kind vonbody
, ist es50%
von dieser100%
Breite, die in diesem Grundfall die Größe des Ansichtsfensters ist. Grundsätzlich möchten Sie eine festlegenvw
, die für Sie gut aussieht. Wie Sie in meinem Kommentar in dem obigen CSS Inhalt sehen können, können Sie „denken“ durch diese mathematisch in Bezug auf die volle Darstellungsgröße, aber Sie nicht brauchen , das zu tun. Der Text wird mit dem Container "gebogen", da sich der Container mit der Größe des Ansichtsfensters biegt. UPDATE: Hier ist ein Beispiel für zwei unterschiedlich große Container .Beispiel 2
Sie können die Größe des Ansichtsfensters sicherstellen, indem Sie die darauf basierende Berechnung erzwingen. Betrachten Sie dieses Beispiel :
Die Größe basiert weiterhin auf dem Ansichtsfenster, wird jedoch im Wesentlichen basierend auf der Containergröße selbst eingerichtet.
Sollte sich die Größe des Containers dynamisch ändern ...
Wenn die Größe des Containerelements seine prozentuale Beziehung entweder über
@media
Haltepunkte oder über JavaScript dynamisch ändern würde, müsste unabhängig von der Basis "Ziel" neu berechnet werden, um dieselbe "Beziehung" für die Textgröße beizubehalten.Nehmen Sie Beispiel 1 oben. Wenn das durch entweder oder JavaScript
div
auf25%
Breite umgestellt@media
wurde,font-size
müsste das gleichzeitig entweder in der Medienabfrage oder durch JavaScript an die neue Berechnung von angepasst werden5vw * .25 = 1.25
. Dies würde die Textgröße auf die gleiche Größe bringen, die sie gewesen wäre, wenn die "Breite" des ursprünglichen50%
Containers gegenüber der Größe des Ansichtsfensters um die Hälfte verringert worden wäre, aber jetzt aufgrund einer Änderung der eigenen prozentualen Berechnung verringert wurde.Eine Herausforderung
Mit der CSS3 -
calc()
Funktion in Gebrauch ist , würde es schwierig werden , dynamisch anzupassen, da diese Funktion für nicht funktioniertfont-size
Zwecke zu diesem Zeitpunkt. Sie können also keine reine CSS 3-Anpassung vornehmen, wenn sich Ihre Breite ändertcalc()
. Natürlich reicht eine geringfügige Anpassung der Breite für die Ränder möglicherweise nicht aus, um eine Änderung zu rechtfertigenfont-size
, sodass dies möglicherweise keine Rolle spielt.quelle
@media
Haltepunkt festlegen , um die Schriftgröße an diesem Punkt zu ändern (im Wesentlichen eine feste Größe beim Erreichenmax-width
). . Nur ein Gedanke, um mit einermax-width
Situation zu arbeiten.Lösung mit SVG:
https://jsfiddle.net/qc8ht5eb/
Lösung mit SVG und Textumbruch mit
foreignObject
:https://jsfiddle.net/2rp1q0sy/
quelle
In einem meiner Projekte verwende ich eine "Mischung" zwischen vw und vh, um die Schriftgröße an meine Bedürfnisse anzupassen, zum Beispiel:
Ich weiß, dass dies die Frage des OP nicht beantwortet, aber vielleicht kann es eine Lösung für jeden anderen sein.
quelle
vmin
und / odervmax
stattdessen verwenden.Pure-CSS-Lösung mit
calc()
CSS-Einheiten und MathematikDies ist genau nicht das, was OP verlangt, aber es kann jemandes Tag machen. Diese Antwort ist nicht einfach zu füttern und erfordert einige Nachforschungen auf Entwicklerseite.
Ich bin endlich gekommen, um eine reine CSS-Lösung dafür
calc()
mit verschiedenen Einheiten zu bekommen. Sie benötigen ein grundlegendes mathematisches Verständnis der Formeln, um Ihren Ausdruck für zu erarbeitencalc()
.Als ich das herausgefunden habe, musste ich einen reaktionsschnellen Header mit voller Seitenbreite erhalten, in dem einige Eltern in DOM aufgefüllt waren. Ich werde meine Werte hier verwenden und durch Ihre eigenen ersetzen.
Zur Mathematik
Du wirst brauchen:
padding: 3em
und die volle Breite damit das ging100wv - 2 * 3em
X ist die Breite des Containers. Ersetzen Sie ihn also durch Ihren eigenen Ausdruck oder passen Sie den Wert an, um ganzseitigen Text zu erhalten.
R
ist das Verhältnis, das Sie haben werden. Sie können es erhalten, indem Sie die Werte in einem Ansichtsfenster anpassen, die Breite und Höhe der Elemente überprüfen und durch Ihre eigenen Werte ersetzen. Auch ist eswidth / heigth
;)Und Knall! Es funktionierte! Ich hab geschrieben
zu meinem Header und es hat sich in jedem Ansichtsfenster gut angepasst.
Aber wie geht das?
Wir brauchen hier oben einige Konstanten.
100vw
bedeutet die volle Breite des Ansichtsfensters, und mein Ziel war es, einen Header in voller Breite mit etwas Polsterung zu erstellen.Das Verhältnis. Durch das Abrufen einer Breite und Höhe in einem Ansichtsfenster konnte ich mit einem Verhältnis spielen, und mit dem Verhältnis weiß ich, wie hoch die Höhe in einem anderen Ansichtsfenster sein sollte. Das Berechnen mit der Hand würde viel Zeit und zumindest viel Bandbreite in Anspruch nehmen, daher ist dies keine gute Antwort.
Fazit
Ich frage mich, warum niemand das herausgefunden hat und einige Leute sagen sogar, dass es unmöglich wäre, an CSS zu basteln. Ich verwende JavaScript nicht gerne zum Anpassen von Elementen, daher akzeptiere ich keine JavaScript-Antworten (und vergesse jQuery), ohne mehr zu graben. Alles in allem ist es gut, dass dies herausgefunden wurde und dies ein Schritt zu reinen CSS-Implementierungen im Website-Design ist.
Ich entschuldige mich für ungewöhnliche Konventionen in meinem Text, bin kein englischer Muttersprachler und auch ziemlich neu im Schreiben von Stack Overflow-Antworten.
Es sollte auch beachtet werden, dass wir in einigen Browsern böse Bildlaufleisten haben. Bei der Verwendung von Firefox ist mir beispielsweise aufgefallen, dass sich
100vw
die gesamte Breite des Ansichtsfensters unter der Bildlaufleiste erstreckt (wo der Inhalt nicht erweitert werden kann!). Daher muss der Text in voller Breite sorgfältig begrenzt und vorzugsweise mit vielen Browsern und Geräten getestet werden.quelle
x
beträgt 640px und das Verhältnisr
16: 9, also:x = 640px, r = 16 / 9, y = x / r = 640px / (16 / 9) = 360px
Für dieses Problem gibt es eine große Philosophie.
Am einfachsten wäre es, dem Körper eine bestimmte Schriftgröße zu geben (ich empfehle 10), und dann hätten alle anderen Elemente ihre Schrift in
em
oderrem
. Ich gebe Ihnen ein Beispiel, um diese Einheiten zu verstehen.Em
ist immer relativ zu seinem Elternteil:Rem
ist immer relativ zum Körper:Und dann könnten Sie ein Skript erstellen, das die Schriftgröße relativ zu Ihrer Containerbreite ändert. Aber das würde ich nicht empfehlen. Denn in einem Container
p
mit einer Breite von 900 Pixel hätten Sie beispielsweise ein Element mit einer Schriftgröße von 12 Pixel. Und nach Ihrer Vorstellung würde dies zu einem 300 Pixel breiten Container mit einer Schriftgröße von 4 Pixel. Es muss eine Untergrenze geben.Andere Lösungen wären Medienabfragen, sodass Sie die Schriftart für unterschiedliche Breiten festlegen können.
Ich würde jedoch empfehlen, eine JavaScript-Bibliothek zu verwenden, die Ihnen dabei hilft. Und fittext.js , die ich bisher gefunden habe.
quelle
rem
Einheit ist relativ zum Wurzelelement, dh dashtml
Element, nicht dasbody
Element. Das Stammelement im DOM ist dashtml
Tag. developer.mozilla.org/en-US/docs/Web/CSS/length ..rem
ist immer relativ zumhtml
Tag, das das Wurzelelement ist, nicht das Body-Tag .. aber eine gute Antwort :)Hier ist die Funktion:
Konvertieren Sie dann alle untergeordneten Schriftgrößen Ihrer Dokumente in
em
'oder%
.Fügen Sie dann Ihrem Code so etwas hinzu, um die Basisschriftgröße festzulegen.
http://jsfiddle.net/0tpvccjt/
quelle
return this
am Ende der Funktion nicht erforderlich . Für die Leistung möchten Sie möglicherweise auch die Onresize entprellen, damit sie beim Ziehen nicht neu gezeichnet wird. Es ist ein ziemlich einfacher Code, sodass jemand seine verbesserte Lösung mit geringem Aufwand darauf aufbauen kann.Es gibt eine Möglichkeit, dies ohne JavaScript zu tun !
Sie können ein Inline-SVG-Bild verwenden. Sie können CSS in einem SVG verwenden, wenn es inline ist. Sie müssen sich daran erinnern, dass bei Verwendung dieser Methode Ihr SVG-Bild auf seine Containergröße reagiert.
Versuchen Sie es mit der folgenden Lösung ...
HTML
CSS
Beispiel: https://jsfiddle.net/k8L4xLLa/32/
Willst du etwas auffälligeres?
Mit SVG-Bildern können Sie auch coole Sachen mit Formen und Müll machen. Schauen Sie sich diesen großartigen Anwendungsfall für skalierbaren Text an ...
https://jsfiddle.net/k8L4xLLa/14/
quelle
vw
Dimensionierung. Wenn Sie den Text ändern, wird alles ungebunden.Dies ist möglicherweise nicht besonders praktisch, aber wenn Sie möchten, dass eine Schriftart eine direkte Funktion des übergeordneten Zeichens ist, ohne dass JavaScript zum Ablesen der Schleife (Intervall) zum Lesen der Größe von div / page vorhanden ist, gibt es eine Möglichkeit, dies zu tun . Iframes.
Alles innerhalb des Iframes berücksichtigt die Größe des Iframes als die Größe des Ansichtsfensters. Der Trick besteht also darin, einfach einen Iframe zu erstellen, dessen Breite die maximale Breite ist, die Ihr Text haben soll, und deren Höhe der maximalen Höhe * des Seitenverhältnisses des jeweiligen Textes entspricht.
Abgesehen von der Einschränkung, dass Ansichtsfenster-Einheiten nicht auch neben übergeordneten Einheiten für Text stehen können (wie in, wenn sich die% -Größe wie alle anderen verhält), bieten Ansichtsfenster-Einheiten ein sehr leistungsfähiges Werkzeug: Sie können die minimale / maximale Dimension ermitteln . Sie können das nirgendwo anders tun - Sie können nicht sagen ... machen Sie die Höhe dieses Divs zur Breite des übergeordneten * etwas.
Abgesehen davon besteht der Trick darin, vmin zu verwenden und die Iframe-Größe so einzustellen, dass [Bruch] * Gesamthöhe eine gute Schriftgröße ist, wenn die Höhe die Grenzabmessung ist, und [Bruch] * Gesamtbreite, wenn die Breite die ist Grenzmaß. Deshalb muss die Höhe ein Produkt aus Breite und Seitenverhältnis sein.
Für mein spezielles Beispiel haben Sie
Das kleine Ärgernis bei dieser Methode ist, dass Sie das CSS des Iframes manuell einstellen müssen. Wenn Sie die gesamte CSS-Datei anhängen, würde dies für viele Textbereiche viel Bandbreite beanspruchen. Ich füge also die gewünschte Regel direkt aus meinem CSS hinzu.
Sie können eine kleine Funktion schreiben, die die CSS-Regel / alle CSS-Regeln abruft, die sich auf den Textbereich auswirken würden.
Ich kann mir keinen anderen Weg vorstellen, dies zu tun, ohne JavaScript zum Radfahren / Hören zu haben. Die eigentliche Lösung wäre, dass Browser eine Möglichkeit bieten, Text als Funktion des übergeordneten Containers zu skalieren und dieselbe Funktionalität vom Typ vmin / vmax bereitzustellen.
JSFiddle: https://jsfiddle.net/0jr7rrgm/3/ (Klicken Sie einmal, um das rote Quadrat für die Maus zu sperren, und klicken Sie erneut, um es freizugeben.)
Der größte Teil des JavaScript in der Geige ist nur meine benutzerdefinierte Click-Drag-Funktion.
quelle
srcdoc
: jsfiddle.net/wauzgob6/3Mit
vw
,em
& co. funktioniert sicher, aber IMO braucht es immer eine menschliche Note für die Feinabstimmung.Hier ist ein Skript, das ich gerade basierend auf der Antwort von @ tnt-rox geschrieben habe und das versucht, die Berührung dieses Menschen zu automatisieren:
Grundsätzlich wird die Schriftgröße auf
1em
0,1 reduziert und dann um 0,1 erhöht, bis die maximale Breite erreicht ist.JSFiddle
quelle
ems
dass eine menschliche Berührung und ein vertikaler Rhythmus erforderlich sind, ist keine Art von Zauberei.100% ist relativ zur Basisschriftgröße, die, wenn Sie sie nicht festgelegt haben, die Standardeinstellung des Benutzeragenten des Browsers ist.
Um den gewünschten Effekt zu erzielen, würde ich einen Teil des JavaScript-Codes verwenden, um die Basisschriftgröße relativ zu den Fensterabmessungen anzupassen.
quelle
Fügen Sie dies in Ihrem CSS unten hinzu und ändern Sie die Breite von 320 Pixel, wenn Ihr Design zu brechen beginnt:
Geben Sie dann die Schriftgröße in "px" oder "em" ein, wie Sie möchten.
quelle
Meine eigene Lösung, jQuery-basiert, erhöht die Schriftgröße schrittweise, bis der Container eine große Erhöhung der Höhe aufweist (was bedeutet, dass er einen Zeilenumbruch aufweist).
Es ist ziemlich einfach, funktioniert aber ziemlich gut und ist sehr einfach zu bedienen. Sie müssen nichts über die verwendete Schriftart wissen , alles wird vom Browser erledigt.
Sie können damit auf http://jsfiddle.net/tubededentifrice/u5y15d0L/2/ spielen.
Die Magie passiert hier:
quelle
Diese Webkomponente ändert die Schriftgröße so, dass die innere Textbreite mit der Containerbreite übereinstimmt. Überprüfen Sie die Demo .
Sie können es so verwenden:
quelle
Vielleicht suchen Sie so etwas:
http://jsfiddle.net/sijav/dGsC9/4/
http://fiddle.jshell.net/sijav/dGsC9/4/show/
Ich habe Flowtype verwendet und es funktioniert hervorragend (es ist jedoch JavaScript und keine reine CSS-Lösung):
quelle
Ich habe eine einfache Skalierungsfunktion mit CSS-Transformation anstelle der Schriftgröße vorbereitet. Sie können es in jedem Container verwenden, Sie müssen keine Medienabfragen usw. festlegen :) :)
Blog-Beitrag: Skalierbarer CSS & JS-Header in voller Breite
Der Code:
Arbeitsdemo: https://codepen.io/maciejkorsan/pen/BWLryj
quelle
Verwenden Sie CSS-Variablen
Bisher hat noch niemand CSS-Variablen erwähnt, und dieser Ansatz hat für mich am besten funktioniert.
max-width
Angenommen, Sie haben eine Spalte auf Ihrer Seite, die 100% der Breite des Bildschirms eines mobilen Benutzers entspricht, aber eine Größe von 800 Pixel hat. Auf dem Desktop ist also auf beiden Seiten der Spalte etwas Platz. Fügen Sie dies oben auf Ihrer Seite ein:Und jetzt können Sie diese Variable (anstelle der integrierten
vw
Einheit) verwenden, um die Größe Ihrer Schriftart festzulegen. Z.BEs ist kein reiner CSS-Ansatz, aber es ist ziemlich nah.
quelle
Versuchen Sie es mit http://simplefocus.com/flowtype/ . Dies ist, was ich für meine Websites verwende, und es hat perfekt funktioniert.
quelle
Mein Problem war ähnlich, bezog sich jedoch auf das Skalieren von Text innerhalb einer Überschrift. Ich habe Fit Font ausprobiert, musste aber den Kompressor umschalten, um Ergebnisse zu erzielen, da er ein etwas anderes Problem löste, ebenso wie Text Flow.
Also habe ich mein eigenes kleines Plugin geschrieben, das die Schriftgröße reduziert hat, um sie an den Container anzupassen, vorausgesetzt, Sie haben es
overflow: hidden
undwhite-space: nowrap
damit, selbst wenn die Schrift auf das Minimum reduziert wird, nicht die vollständige Überschrift angezeigt wird, wird nur abgeschnitten, was angezeigt werden kann.quelle
Künstlerisch gesehen haben Sie nette Optionen, wenn Sie zwei oder mehr Textzeilen unabhängig von der Anzahl der Zeichen in derselben Breite einfügen müssen.
Es ist am besten, eine dynamische Lösung zu finden, damit jeder eingegebene Text eine schöne Anzeige ergibt.
Mal sehen, wie wir uns nähern können.
Alles, was wir tun, ist, die Breite (
els[0].clientWidth
) und die Schriftgröße (parseFloat(window.getComputedStyle(els[0],null).getPropertyValue("font-size"))
) der ersten Zeile als Referenz zu erhalten und dann einfach die Schriftgröße der nachfolgenden Zeilen entsprechend zu berechnen.quelle
Versuchen Sie, das fitText- Plugin zu verwenden, da Viewport-Größen nicht die Lösung für dieses Problem sind.
Fügen Sie einfach die Bibliothek hinzu:
Ändern Sie die Schriftgröße, um den Textkoeffizienten zu korrigieren:
Sie können maximale und minimale Textwerte festlegen:
quelle
Schau dir meinen Code an. Es macht das
font size smaller
zufit
was auch immer da.Aber ich denke, das führt nicht zu einer guten Benutzererfahrung
quelle
Als JavaScript-Fallback (oder als einzige Lösung) können Sie mein jQuery Scalem-Plugin verwenden , mit dem Sie durch Übergeben der
reference
Option relativ zum übergeordneten Element (Container) skalieren können .quelle
Falls es für jemanden hilfreich ist, haben die meisten Lösungen in diesem Thread Text in mehrere Zeilen, z.
Aber dann habe ich das gefunden und es hat funktioniert:
https://github.com/chunksnbits/jquery-quickfit
Anwendungsbeispiel:
$('.someText').quickfit({max:50,tolerance:.4})
quelle
Haben Sie immer Ihr Element mit diesem Attribut:
JavaScript:
element.style.fontSize = "100%";
oder
CSS:
style = "font-size: 100%;"
Wenn Sie Vollbild zu gehen, sollten Sie bereits haben Skala Variable berechnet (Skala> 1 oder Skala = 1). Dann im Vollbildmodus:
Es funktioniert gut mit wenig Code.
quelle
Für dynamischen Text ist dieses Plugin sehr nützlich:
http://freqdec.github.io/slabText/
Fügen Sie einfach CSS hinzu:
Und das Drehbuch:
quelle
Das hat bei mir funktioniert:
Ich versuche, die Schriftgröße basierend auf einer Breite / Höhe zu approximieren, die sich aus der Einstellung "Schriftgröße: 10px" ergibt. Grundsätzlich lautet die Idee: "Wenn ich eine Breite von 20 Pixel und eine Höhe von 11 Pixel mit einer Schriftgröße von 10 Pixel habe, wie hoch wäre dann die maximale Schriftgröße, um einen Container mit einer Breite von 50 Pixel und einer Höhe von 30 Pixel zu berechnen?"
Die Antwort ist ein Doppelproportionssystem:
{20: 10 = 50: X, 11: 10 = 30: Y} = {X = (10 · 50) / 20, Y = (10 · 30) / 11}
Jetzt ist X eine Schriftgröße, die der Breite entspricht, und Y ist eine Schriftgröße, die der Höhe entspricht. nimm den kleinsten Wert
Hinweis: Das Argument der Funktion muss ein span-Element oder ein Element sein, das kleiner als das übergeordnete Element ist. Andernfalls schlägt fehl, wenn untergeordnete Elemente und übergeordnete Elemente dieselbe Funktion für Breite / Höhe haben.
quelle
Ich sehe keine Antwort in Bezug auf die CSS-Flex-Eigenschaft, aber es kann auch sehr nützlich sein.
quelle
Um die Schriftgröße an den Container und nicht an das Fenster anzupassen, lesen Sie die
resizeFont()
Funktion, die ich in dieser Frage geteilt habe (eine Kombination anderer Antworten, von denen die meisten bereits hier verlinkt sind). Es wird ausgelöst mitwindow.addEventListener('resize', resizeFont);
.Vanilla JavaScript: Passen Sie die Schriftgröße an den Container an
JavaScript:
Sie können möglicherweise vw / vh als Fallback verwenden, sodass Sie mithilfe von JavaScript dynamisch
em
oderrem
Einheiten zuweisen oder sicherstellen, dass die Schriftarten auf das Fenster skaliert werden, wenn JavaScript deaktiviert ist.Wenden Sie die
.resize
Klasse auf alle Elemente an, die Text enthalten, den Sie skalieren möchten.Lösen Sie die Funktion aus, bevor Sie den Ereignis-Listener zum Ändern der Fenstergröße hinzufügen. Dann wird jeder Text, der nicht in den Container passt, beim Laden der Seite sowie bei der Größenänderung verkleinert.
HINWEIS: Die Standardeinstellung
font-size
muss entweder eingestellt werdenem
,rem
oder die%
richtigen Ergebnisse zu erzielen.quelle
HTML
JavaScript-Code zur Maximierung der Schriftgröße:
quelle