Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
mask-size
Baseline 2023Newly available
Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Diemask-sizeCSS Eigenschaft gibt die Größen der angegebenen Maskenbilder an. Maskenbildgrößen können vollständig oder teilweise eingeschränkt werden, um ihreintrinsischen Seitenverhältnisse zu bewahren.
In diesem Artikel
Syntax
/* Keyword syntax */mask-size: cover;mask-size: contain;mask-size: auto;/* One-value syntax *//* Mask width. Sets height to 'auto'. */mask-size: 50%;mask-size: 3em;mask-size: 12px;/* Two-value syntax *//* First value: mask width. Second value: mask height */mask-size: 3em 25%;mask-size: auto 6px;mask-size: auto 50%;/* Multiple values */mask-size: auto, contain;mask-size: 50%, 50% 25%, auto 25%;mask-size: 6px, auto, contain;/* Global values */mask-size: inherit;mask-size: initial;mask-size: revert;mask-size: revert-layer;mask-size: unset;Werte
Diemask-size Eigenschaft akzeptiert eine durch Kommas getrennte Liste von<bg-size> Werten. Ein<bg-size> Wert ist entwedercover,contain, ein Paar von Werten, das die Breite und Höhe angibt (in dieser Reihenfolge), oder ein einzelner Wert, der die Breite angibt (in diesem Fall wird die Höhe aufauto gesetzt). Werte beinhalten:
containSkaliert das Maskenbild hoch oder runter, wobei das Seitenverhältnis beibehalten wird, sodass die Maske so groß wie möglich innerhalb ihres Containers ist, ohne sie zu beschneiden oder zu strecken. Wenn das Maskenbild kleiner als der Container ist, wird die Maske gekachelt oder wiederholt, es sei denn, die Eigenschaft
mask-repeatist aufno-repeatgesetzt.coverSkaliert das Maskenbild auf die kleinstmögliche Größe, um den Container auszufüllen, während das Seitenverhältnis beibehalten wird. Wenn das Seitenverhältnis des Maskenbildes vom Element abweicht, wird es vertikal oder horizontal beschnitten.
autoBewahrt das ursprüngliche Seitenverhältnis des Maskenquellbildes. Wenn sowohl die Breite als auch die Höhe eingestellt sind, wird die ursprüngliche Größe der Maskenressource verwendet. Andernfalls skaliert
autodas Maskenbild in der entsprechenden Richtung, sodass das ursprüngliche Seitenverhältnis beibehalten wird.<length>Rendert das Maskenbild in der angegebenen Länge in der entsprechenden Dimension (Breite, wenn als erster oder einziger Wert gesetzt, Höhe, wenn als zweiter Wert gesetzt). Negative Werte sind nicht erlaubt.
<percentage>Rendert das Maskenbild in der entsprechenden Dimension als Prozentsatz des Ursprungsbereichs der Box, wie durch die Eigenschaft
mask-origindefiniert, die standardmäßigpadding-boxist. Negative Werte sind nicht erlaubt.
Beschreibung
Diemask-size Eigenschaft wird verwendet, um Maskenschichten zu skalieren.
Ein Element kann mehrere Maskenschichten haben. Die Anzahl der Maskenschichten wird durch die Anzahl der kommagetrennten Werte in dermask-image Eigenschaftsangabe bestimmt (ein Wert erstellt eine Maskenschicht, auch wenn esnone ist).
Jedermask-size Wert in der Liste der kommagetrennten Werte wird einer zugehörigen Maskenschicht zugeordnet, wie durch die Liste dermask-image Werte definiert, in der angegebenen Reihenfolge. Wenn die Anzahl der Werte in den beiden Eigenschaften unterschiedlich ist:
- Wenn
mask-sizemehr Werte alsmask-imagehat, werden die überschüssigen Werte vonmask-sizenicht verwendet. - Wenn
mask-sizeweniger Werte alsmask-imagehat, werden diemask-sizeWerte wiederholt.
Jedermask-size Wert ist ein<bg-size> Wert. Es gibt drei Möglichkeiten, jedes<bg-size> zu deklarieren: ein Schlüsselwort, zwei Längen, Prozentsätze oder das Schlüsselwortauto, oder eine Länge, ein Prozentsatz oderauto:
- Die verfügbaren Schlüsselwörter sind
coverundcontain. - Wenn zwei Werte angegeben sind, definiert der erste die Maskenbreite und der zweite ihre Höhe.
- Wenn ein Wert angegeben ist, definiert er nur die Maskenbreite, wobei die Höhe auf
autogesetzt ist.
Die Breiten- und Höhenwerte sind ein<length>, ein<percentage>, oder das Schlüsselwortauto, welches der Standard ist. Setzt man einen oder beide Werte aufauto, wird das ursprüngliche Seitenverhältnis des Maskenbildes beibehalten.
Die gerenderte Größe des Maskenbildes wird wie folgt berechnet:
- Wenn beide Komponenten von
mask-sizespezifiziert und nichtautosind, wird das Maskenbild in der angegebenen Größe gerendert. - Wenn die
mask-sizecontainodercoverist, wird das Bild unter Beibehaltung seines Seitenverhältnisses in der größten Größe gerendert, die im Maskenpositionierungsbereich enthalten ist oder diesen abdeckt. Hat das Bild keine intrinsische Proportion, wie bei Verläufen, wird es in der Größe des Maskenpositionierungsbereichs gerendert. - Wenn die
mask-sizeautoist (was zuauto autoaufgelöst wird), wird es in der Größe gerendert, in der die Maske angezeigt würde, wenn kein CSS angewendet wäre, um die Darstellung zu ändern; dies ist seineintrinsische Größe. Hat es keine intrinsischen Dimensionen und keine intrinsische Proportion, wie es beiCSS Verläufen der Fall ist, wird es in der Größe des Maskenpositionierungsbereichs gerendert, der durch die Eigenschaftmask-origindefiniert wird (standardmäßigborder-box). Hat die Maskenquelle keine Dimensionen, aber eine Proportion (Seitenverhältnis), wird ein Wert vonautoso gerendert, als obcontainspezifiziert worden wäre. Hat das Bild eine intrinsische Dimension und eine Proportion, wird es in der durch diese Dimension und die Proportion bestimmten Größe gerendert. Hat ein Bild eine intrinsische Dimension, aber keine Proportion, wird es in der intrinsischen Dimension und der entsprechenden Dimension des Maskenpositionierungsbereichs gerendert. - Hat
mask-sizeeineautoKomponente und eine nicht-autoKomponente, welche auf alle Einzelwertwerte zutrifft, bleibt das Seitenverhältnis erhalten, wenn die Maskenquelle eine intrinsische Proportion aufweist. Wenn keine intrinsische Proportion vorhanden ist, wird davon ausgegangen, dass derautoWert die Dimension des Maskenpositionierungsbereichs hat.
Wie bei allen Langhandkomponenten einer Kurzschreibweiseigenschaft, wenn diemask Kurzschreibweiseigenschaft gesetzt ist und der Wert dermask-size Eigenschaft in keiner Maskenschicht definiert ist, wird dermask-size Wert für diese Maskenschichten auf seinen Anfangswertauto zurückgesetzt.
Formale Definition
| Anfangswert | auto |
|---|---|
| Anwendbar auf | alle Elemente; In SVG gilt betrifft dies Containerelemente mit Ausnahme des<defs> Elements und allen Grafikelementen |
| Vererbt | Nein |
| Berechneter Wert | relativ zur gleichen Achse der Innenabstandsbox des Scrollcontainers |
| Animationstyp | a repeatable list |
Formale Syntax
mask-size =
<bg-size>#
<bg-size> =
[<length-percentage [0,∞]>|auto]{1,2}|
cover|
contain
<length-percentage> =
<length>|
<percentage>
Beispiele
>Die Maskengröße als Prozentsatz festlegen
Dieses Beispiel zeigt die Grundverwendung und auch die Prozentwerte fürmask-size.
HTML
Wir fügen zwei<div> Elemente ein:
<div></div><div></div>CSS
Die<div> Elemente sind definiert, um doppelt so hoch wie breit zu sein, mit einem Farbverlaufshintergrund und einer Maske:
div { width: 200px; height: 400px; background: blue linear-gradient(red, blue); mask-image: url("/shared-assets/images/examples/mdn.svg");}Die Breite eines<div> Elements Maske wird auf50% eingestellt, bei dem die Höhe standardmäßig aufauto gesetzt ist. Die Höhe der Maske für das zweite<div> Element ist auf50% gesetzt, wobei die Breite aufauto gesetzt ist:
.width { mask-size: 50%;}.height { mask-size: auto 50%;}Im Fallwidth wird die Maske mit100px Breite gerendert (50% des200px breiten Elements). Die Höhe wird standardmäßig aufauto gesetzt und behält das Seitenverhältnis der Maske bei. Im Fallheight wird die Maske mit200px Höhe gerendert (50% des400px hohen Containers). Die Breite wird explizit aufauto gesetzt und behält das Seitenverhältnis der Maske bei.
body { display: flex; gap: 20px;}Ergebnisse
Cover und contain
Dieses Beispiel zeigt die Schlüsselwortwerte fürmask-size.
HTML
Drei<section> Elemente sind definiert, jedes mit einem anderen Klassennamen und jedes enthält ein<div>.
<section> <div></div></section><section> <div></div></section><section> <div></div></section>CSS
Die<div> Elemente sind definiert, um doppelt so hoch wie breit zu sein, mit einem Farbverlaufshintergrund und einer Maske:
div { width: 200px; height: 400px; background: blue linear-gradient(red, blue); mask-image: url("/shared-assets/images/examples/mask-star.svg");}Diemask-size von zwei der<div> Elemente ist auf einen der Schlüsselwortwerte der Eigenschaft gesetzt. Das dritte<div> hat einemask-size vonauto gesetzt, was die ursprünglichen intrinsischen Dimensionen der Maske demonstriert:
.auto div { mask-size: auto;}.cover div { mask-size: cover;}.contain div { mask-size: contain;}Die Eigenschaftswerte werden mithilfe vongeneriertem Inhalt angezeigt.
section::before { content: "mask-size: " attr(class) ";"; display: block; text-align: center; border-bottom: 1px solid;}body { display: flex; flex-flow: row wrap; gap: 10px;}section { border: 1px solid;}Ergebnisse
Mitauto wird der Stern in seiner intrinsischen100px x100px Größe angezeigt. Mitcover wächst der Stern auf400px Höhe, um den gesamten Ursprungsbereich zu bedecken. Mitcontain wächst der Stern, bis eine Dimension die gleiche Dimension derUrsprungsbox erreicht, was bedeutet, dass der Stern so groß wie möglich ist (200px breit), aber immer noch darin enthalten ist.
Wenn die Maske größer als der Container ist
Unter Verwendung des gleichen HTML und CSS wie oben, mit nur einer anderen Ursprungsboxgröße, erforscht dieses Beispiel, was passiert, wenn die Ursprungsbox kleiner als die intrinsischen Dimensionen der Maske ist.
<section> <div></div></section><section> <div></div></section><section> <div></div></section>div { background: blue linear-gradient(red, blue); mask-image: url("/shared-assets/images/examples/mask-star.svg");}.auto div { mask-size: auto;}.cover div { mask-size: cover;}.contain div { mask-size: contain;}section::before { content: attr(class); display: block; text-align: center; border-bottom: 1px solid;}body { display: flex; flex-flow: row wrap; gap: 10px;}section { border: 1px solid;}Der einzige Unterschied ist die Größe der umschließenden Box (und der generierte Inhalt):
div { width: 70px; height: 70px;}Dercontain Wert enthält die Maske innerhalb der Ursprungsbox. Dercover Wert deckt sie ab. In beiden Fällen schrumpft die Maske, während das ursprüngliche Seitenverhältnis beibehalten wird. Mitauto wird die Maske abgeschnitten, weil die intrinsischen Dimensionen größer als die Boxmaße sind.
Spezifikationen
| Specification |
|---|
| CSS Masking Module Level 1> # the-mask-size> |