CSS
Ritaglio e mascheratura
Ricerca…
Sintassi
- Ritaglio
- clip-path: <clip-source> | [<forma base> || <clip-geometry-box>] | nessuna
- mascheramento
- immagine-maschera: [nessuno | <riferimento-maschera>] #
- mask-mode: [<mask-mode>] #
- mask-repeat: [<stile di ripetizione] #
- posizione della maschera: [<posizione>] #
- mask-clip: [<geometry-box> | no-clip] #
- origine maschera: [<geometria-box>] #
- dimensione maschera: [<bg-size>] #
- mask-composite: [<compositing-operator>] #
- maschera: [<riferimento maschera> <modalità mascheratura>? || <position> [/ <bg-size>]? || <stile di ripetizione> || <geometry-box> || [<geometry-box> | no-clip] || <compositing-operator>] #
Parametri
Parametro | Dettagli |
---|---|
clip-fonte | Un URL che può puntare a un elemento SVG in linea (o) a un elemento SVG in un file esterno che contiene la definizione del percorso della clip. |
basic-figura | Si riferisce a uno tra inset() , circle() , ellipse() o polygon() . Usando una di queste funzioni viene definito il tracciato di ritaglio. Queste funzioni di forma funzionano esattamente nello stesso modo in Shapes per float |
clip-geometria-box | Questo può avere uno tra content-box , padding-box , border-box , margin-box , fill-box , stroke-box , view-box come valori. Quando questo viene fornito senza alcun valore per <forma base>, i bordi della casella corrispondente vengono utilizzati come percorso per il ritaglio. Quando viene utilizzato con una <forma base>, funge da riquadro di riferimento per la forma. |
maschera-riferimento | Questo può essere none o un'immagine o un URL di riferimento a un'origine di immagine maschera. |
repeat-style | Specifica come la maschera deve essere ripetuta o affiancata negli assi X e Y. I valori supportati sono repeat-x , repeat-y , repeat , space , round , no-repeat . |
maschera-mode | Può essere alpha o luminance o auto e indica se la maschera deve essere trattata come maschera alfa o maschera di luminanza. Se non viene fornito alcun valore e il riferimento alla maschera è un'immagine diretta, verrà considerato come maschera alfa (o) se il riferimento alla maschera è un URL, allora sarebbe considerato come maschera di luminanza. |
posizione | Specifica la posizione di ogni livello maschera ed è simile nel comportamento alla proprietà background-position . Il valore può essere fornito in 1 sintassi del valore (come in top , 10% ) o in 2 sintassi del valore (come in top right , 50% 50% ). |
Geometria-box | Specifica la casella in cui la maschera deve essere ritagliata ( area di pittura maschera ) o la casella che deve essere utilizzata come riferimento per l'origine della maschera ( area di posizionamento maschera ) in base alla proprietà. L'elenco di valori possibili è content-box , padding-box , border-box , margin-box , fill-box , stroke-box , view-box . Spiegazione dettagliata su come funzionano ciascuno di questi valori è disponibile nella specifica W3C . |
bg-size | Rappresenta la dimensione di ogni livello maschera-immagine e ha la stessa sintassi background-size . Il valore può essere lunghezza o percentuale o auto o copertura o contenere. Lunghezza, percentuale e auto possono essere forniti come valore singolo o come uno per ciascun asse. |
composizione-operatore | Può essere uno qualsiasi tra add , subtract , exclude , multiply per layer e definisce il tipo di operazione di compositing che dovrebbe essere usata per questo layer con quelli sotto di esso. Spiegazione dettagliata su ciascun valore è disponibile nelle specifiche W3C . |
Osservazioni
CSS Clipping and Masking sono concetti molto nuovi e quindi il supporto del browser per queste proprietà è piuttosto basso.
Maschere:
Al momento della stesura di questo articolo (16 luglio), Chrome, Safari e Opera supportano queste proprietà con il prefisso -webkit-
.
Firefox non richiede prefissi ma supporta le maschere solo se utilizzato con elementi mask
SVG. Per gli elementi mask
SVG in linea, la sintassi è mask: url(#msk)
mentre per l'utilizzo di elementi mask
in un file SVG esterno la sintassi è mask: url('yourfilepath/yourfilename.svg#msk')
. #msk
in entrambi i casi si riferisce alla id
della mask
elemento che ci si riferisce. Come indicato in questa risposta , al momento Firefox non supporta alcun parametro diverso dal mask-reference
alla mask
proprietà mask
.
Internet Explorer (e Edge) non offre ancora alcun supporto per questa proprietà.
La proprietà in mask-mode
è attualmente supportata da alcun browser con o senza prefissi.
Clip-path:
Al momento della scrittura (16 luglio), Chrome, Safari e Opera supportano il clip-path
quando il percorso viene creato utilizzando forme di base (come circle
, polygon
) o la sintassi url(#clipper)
con SVG in linea. Non supportano il ritaglio basato su forme che fanno parte di file SVG esterni. Inoltre, richiedono il prefisso -webkit
per essere presenti.
Firefox supporta solo la sintassi url()
per clip-path
mentre Internet Explorer (e Edge) non offrono supporto.
Ritaglio (poligono)
CSS:
div{
width:200px;
height:200px;
background:teal;
clip-path: polygon(0 0, 0 100%, 100% 50%); /* refer remarks before usage */
}
HTML:
<div></div>
Nell'esempio sopra, un tracciato di ritaglio poligonale viene utilizzato per ritagliare l'elemento quadrato (200 x 200) in una forma triangolare. La forma di output è un triangolo perché il percorso inizia da (ovvero, le prime coordinate sono a) 0 0
- che è l'angolo in alto a sinistra della casella, quindi passa a 0 100%
- che è l'angolo in basso a sinistra della casella e infine al 100% 50%
che non è altro che il punto medio-centrale della scatola. Questi percorsi sono auto-chiudenti (cioè, il punto di partenza sarà il punto finale) e quindi la forma finale è quella di un triangolo.
Questo può anche essere usato su un elemento con un'immagine o un gradiente come sfondo.
Produzione:
Ritaglio (Cerchio)
CSS:
div{
width: 200px;
height: 200px;
background: teal;
clip-path: circle(30% at 50% 50%); /* refer remarks before usage */
}
HTML
<div></div>
Questo esempio mostra come tagliare un div a un cerchio. L'elemento è ritagliato in un cerchio il cui raggio è il 30% in base alle dimensioni della casella di riferimento con il suo punto centrale al centro della casella di riferimento. Qui dal momento che non viene fornita la <casella di clip-geometria> (in altre parole, casella di riferimento), la border-box
di border-box
dell'elemento verrà utilizzata come casella di riferimento.
La forma del cerchio deve avere un raggio e un centro con le coordinate (x,y)
:
circle(radius at x y)
Produzione:
Ritaglio e mascheratura: panoramica e differenza
Con il ritaglio e il mascheramento puoi rendere alcune parti specifiche degli elementi trasparenti o opache. Entrambi possono essere applicati a qualsiasi elemento HTML.
Ritaglio
Le clip sono percorsi vettoriali. Al di fuori di questo percorso l'elemento sarà trasparente, all'interno è opaco. Pertanto è possibile definire una proprietà clip-path
sugli elementi. Ogni elemento grafico che esiste anche in SVG puoi usare qui come una funzione per definire il percorso. Gli esempi sono circle()
, polygon()
o ellipse()
.
clip-path: circle(100px at center);
L'elemento sarà visibile solo all'interno di questo cerchio, che è posizionato al centro dell'elemento e ha un raggio di 100 px.
mascheramento
Le maschere sono simili alle clip, ma invece di definire un percorso si definisce una maschera su quali livelli si sovrappongono all'elemento. Puoi immaginare questa maschera come un'immagine che consiste principalmente di due colori: bianco e nero.
Maschera di luminanza : il nero indica che la regione è opaca e bianca che è trasparente, ma esiste anche un'area grigia che è semitrasparente, quindi è possibile effettuare transizioni omogenee.
Maschera Alpha : solo sulle aree trasparenti della maschera l'elemento sarà opaco.
Questa immagine, ad esempio, può essere utilizzata come maschera di luminanza per rendere un elemento una transizione molto fluida da destra a sinistra e da opaca a trasparente.
La proprietà mask
consente di specificare il tipo di maschera e un'immagine da utilizzare come layer.
mask: url(masks.svg#rectangle) luminance;
Un elemento chiamato rectangle
definito in masks.svg
verrà utilizzato come maschera di luminanza sull'elemento.
Maschera semplice che dissolve un'immagine da solida a trasparente
CSS
div {
height: 200px;
width: 200px;
background: url(http://lorempixel.com/200/200/nature/1);
mask-image: linear-gradient(to right, white, transparent);
}
HTML
<div></div>
Nell'esempio sopra c'è un elemento con un'immagine come sfondo. La maschera applicata all'immagine (usando i CSS) fa sembrare che si stia dissolvendo da sinistra a destra.
Il mascheramento si ottiene utilizzando un linear-gradient
che va dal bianco (a sinistra) a trasparente (a destra) come maschera. Essendo una maschera alfa, l'immagine diventa trasparente dove la maschera è trasparente.
Uscita senza maschera:
Uscita con la maschera:
Nota: come accennato in precedenza, l'esempio precedente funzionerebbe in Chrome, Safari e Opera solo se usato con il prefisso -webkit
. Questo esempio (con un linear-gradient
come immagine maschera) non è ancora supportato in Firefox.
Utilizzo di maschere per tagliare un buco nel mezzo di un'immagine
CSS
div {
width: 200px;
height: 200px;
background: url(http://lorempixel.com/200/200/abstract/6);
mask-image: radial-gradient(circle farthest-side at center, transparent 49%, white 50%); /* check remarks before using */
}
HTML
Nell'esempio sopra, un cerchio trasparente viene creato al centro usando il radial-gradient
e viene quindi utilizzato come maschera per produrre l'effetto di un cerchio che viene ritagliato dal centro di un'immagine.
Immagine senza maschera:
Immagine con maschera:
Utilizzo di maschere per creare immagini con forme irregolari
CSS
div { /* check remarks before usage */
height: 200px;
width: 400px;
background-image: url(http://lorempixel.com/400/200/nature/4);
mask-image: linear-gradient(to top right, transparent 49.5%, white 50.5%), linear-gradient(to top left, transparent 49.5%, white 50.5%), linear-gradient(white, white);
mask-size: 75% 25%, 25% 25%, 100% 75%;
mask-position: bottom left, bottom right, top left;
mask-repeat: no-repeat;
}
HTML
<div></div>
Nell'esempio sopra, tre immagini a linear-gradient
(che quando sono posizionate nelle posizioni appropriate coprono il 100% x 100% delle dimensioni del contenitore) vengono utilizzate come maschere per produrre un taglio triangolare trasparente nella parte inferiore dell'immagine.
Immagine senza maschera:
Immagine con la maschera: