Ich frage mich, ob es eine CSS-Lösung ist nur Inhalt zu machen skalieren ihre Behälter passen, sie Bilder oder Text sein, etwa so:Unterstützt HTML/CSS die automatische Skalierung von Inhalten, um den Container zu füllen?
.container {
display: inline-block;
width: 2in;
height: 1in;
font-size: fit-to-container /* <- what should this be? */
}
<div class="container">Some Text</div>
<div class="container">Another container with significantly
more content, and so the font should scale down to fit</div>
Alternativ mit Bildern:
.container {
display: inline-block;
width: 2in;
height: 1in;
overflow: resize-to-fit /* <- not really, overflow can't do it */
}
<div class="container">
<img src="one.png"/>
</div>
<div class="container">
<img src="one.png"/>
<img src="two.png"/>
<img src="three.png"/>
<img src="four.png"/>
<img src="five.png"/>
<img src="six.png"/>
<img src="seven.png"/>
<img src="eight.png"/>
</div>
Als ein visuelles Beispiel, siehe https://jsfiddle.net/jarrowwx/jemxLqyL/94/. Aber diese Geige bringt es nicht perfekt zur Geltung, und es war zu kompliziert, sie zu erstellen. Es verwendet SVG, weil ich gerade damit experimentiert habe, den Inhalt als einzelnes Bild zu machen und dann max-width
einzustellen, aber das hat auch nicht funktioniert, es hat nur das Bild abgeschnitten.
Gibt es eine reine CSS-Lösung, um diesen Effekt zu erzeugen?
Ja, es ist möglich. Und der beste Weg wäre, [flexboxes] (https://css-tricks.com/snippets/css/a-guide-to-flexbox/) zu verwenden. – pol
Hier ist eine aktualisierte Fiddle: https://jsfiddle.net/jarrowwx/jemxLqyL/148/ - die Flex-Box scheint nicht in der Lage zu sein, die Bilder automatisch zu verkleinern. Es scheint die Boxen um Inhalt zu verkleinern, aber den Inhalt nicht zu verkleinern. Wenn ich etwas verpasse, sag mir bitte, was ich verpasst habe. –
[Hier ist etwas] (http://stackoverflow.com/questions/30788131/css3-flexbox-maintain-image), um Sie mit dem Bild Höhe: Breite Verhältnis Problem zu helfen. Eine Antwort ist sehr einfach, Sie müssen nur 'object-fit: contain;' hinzufügen, aber es funktioniert nur mit Firefox 36+, chrome 31+ und opera 11.6+ mit '-o-object-fit: contain ; '. [Schau mal] (https://jsfiddle.net/jemxLqyL/150/). Natürlich könnte man nach einem Fallback Ausschau halten. [Dieser benutzt] (http://stackoverflow.com/questions/33473978/alternate-option-object-fit) die 'background -Eigenschaft (' background-size: contain' in deinem Fall), um den Trick zu machen. – pol