Proprietatea mask-mode
CSS indică dacă imaginea stratului de mască CSS este tratată ca o mască alfa sau o mască de luminanță.
.element ( mask-image: url(sun.svg); mask-mode: alpha; )
Sintaxă
mask-mode: alpha | luminance | match-source
Proprietatea acceptă o valoare cuvânt cheie, sau o listă separată prin virgulă de două sau toate cele trei alpha
, luminance
și mask-source
valori.
- Valoarea initiala:
match-source
- Se aplică tuturor elementelor. În SVG, se aplică elementelor containerului, cu excepția elementului, toate elementele grafice.
- Moștenit: nu
- Valoare calculată: conform specificațiilor
- Tipul de animație: discret
Valori
/* Keyword values */ mask-mode: alpha; mask-mode: luminance; mask-mode: match-source; /* Global values */ mask-mode: inherit; mask-mode: initial; mask-mode: unset;
alpha
: specifică faptul că valorile alfa (canal alfa) ale imaginii stratului de mască trebuie utilizate ca valori ale măștii.luminance
: specifică faptul că valorile de luminanță ale imaginii măștii trebuie utilizate ca valori ale măștii.match-source
: valoarea implicită, care setează modul de mască la alfa dacă referința de mască amask-image
proprietății este unelement CSS , cum ar fi o imagine URL sau un gradient. Cu toate acestea, dacă referința de mască a
mask-image
proprietății este unelement SVG , trebuie utilizată valoarea specificată de
proprietatea de tip mască a elementului de referință .
initial
: aplică setarea implicită a proprietății, care estematch-source
.inherit
: adoptă valoarea în modul mască a părintelui.unset
: elimină modul de mascare curent din element.
Folosind valori multiple
Această proprietate poate lua o listă de valori separate prin virgulă pentru modurile de mască și fiecare valoare este aplicată unei imagini corespunzătoare a stratului de mască specificată în proprietatea imagine-mască.
În exemplul următor, prima valoare specifică modul de mască corespunzător primei imagini, a doua valoare pentru a doua imagine și așa mai departe.
.element ( mask-image: url(image1.png.webp), url(image2.png.webp), url(image3.png.webp); mask-mode: luminance, alpha, match-source; )
Măști alfa și luminante
Mascare în CSS vine cu două metode care au unele diferențe în calcularea valorilor măștii.
Măști alfa
Imaginile sunt formate din pixeli, fiecare pixel are unele date care conțin valori de culoare și poate valori alfa cu informații de transparență. O imagine cu un canal alfa poate fi o mască alfa , cum ar fi imaginile PNG cu zone negre și transparente.
Într-o operație de mascare simplă, avem un element și o imagine de mască plasate deasupra acestuia. Valoarea alfa a fiecărui pixel din imaginea măștii va fi îmbinată cu pixelul corespunzător din element.
- Dacă valoarea alfa este zero (adică transparentă), ea câștigă și acea parte a elementului este mascată (adică ascunsă).
- O valoare alfa a unuia (adică complet opacă) permite ca acel pixel al elementului să fie vizibil.
- O valoare cuprinsă între 0 și 1 (de exemplu, 0,5) permite pixelului să fie vizibil, dar cu un anumit nivel de transparență.
Deci, în această metodă, valoarea măștii la un punct dat este pur și simplu valoarea canalului alfa în acel punct al imaginii măștii, iar canalele de culoare nu contribuie la valoarea măștii.
Exemplul de mai jos este o mască alfa care conține doar negru (valoarea alfa de 1) și zone transparente (valoarea alfa de 0) și puteți vedea rezultatul care are unele părți complet vizibile și altele complet transparente:
Dar în exemplul următor, folosim un gradient care are un nivel diferit de transparență. Rezultatul nu este doar vizibil sau transparent, dar există câteva zone translucide:
img ( mask-image: linear-gradient(black, transparent); mask-mode: alpha; )
Iată cum arată rezultatul în browser:
Măști luminante
Într-o mască de luminanță, culorile și valorile alfa contează. Când valoarea alfa este 0 (adică complet transparentă), elementul este ascuns; când valoarea alfa este 1, valorile măștii variază în funcție de canalul de culoare al pixelului respectiv. De exemplu, când culoarea este albă, elementul este vizibil; în cazul zonei negre, elementul este ascuns.
În timp ce calculul valorilor măștii într-o mască alfa se bazează numai pe valorile alfa ale imaginii măștii, valorile măștii unei măști de luminanță sunt calculate din valorile de luminanță și alfa. Browserele fac acest lucru în următorii pași:
- Calculați o valoare a luminanței din valorile canalului de culoare.
- Înmulțiți valoarea de luminanță calculată cu valoarea alfa corespunzătoare pentru a produce valoarea măștii.
/ explicație Pentru mai multe informații despre aceste calcule, puteți consulta secțiunea de procesare a măștii din specificația CSS Masking Module 1 din proiectul editorului din septembrie 2019.
Bellow este o imagine de mască cu un soare alb în centru și zone transparente în jurul său. După cum puteți vedea, zonele while sunt complet vizibile:
Și în exemplul următor, un gradient colorat este folosit ca imagine de mască și puteți vedea efectul diferitelor culori asupra valorilor măștii în modul de luminanță:
Demo
În următoarea demonstrație folosim o imagine de mască cu zone transparente și negre:
Următoarea demonstrație prezintă o mască de luminanță cu un gradient ca imagine de mască:
Notă
mask-mode
Proprietatea suprascrie definiția mask-type
proprietății.
Suport pentru browser
IE | Margine | Firefox | Crom | Safari | Operă |
---|---|---|---|---|---|
Toate | Toate | Peste 53 de ani | Toate | Toate | Toate |
Android Chrome | Android Firefox | Browser Android | Safari iOS | Opera Mobile |
---|---|---|---|---|
Toate | Peste 83 de ani | Toate | Toate | Toate |