Buscar..


Sintaxis

  • Recorte
  • ruta de clip: <clip-source> | [<basic-shape> || <clip-geometry-box>] | ninguna
  • Enmascaramiento
  • máscara-imagen: [ninguno | <referencia de máscara>] #
  • modo de máscara: [<modo de máscara>] #
  • repetición de máscara: [<estilo de repetición] #
  • posición de la máscara: [<posición>] #
  • máscara-clip: [<geometry-box> | no hay video ]#
  • origen de la máscara: [<geometry-box>] #
  • tamaño de máscara: [<tamaño_gg>] #
  • compuesto de máscara: [<compositing-operator>] #
  • máscara: [<mask-reference> <masking-mode>? || <position> [/ <bg-size>]? || <repeat-style> || <geometry-box> || [<geometry-box> | sin clip] || <compositing-operator>] #

Parámetros

Parámetro Detalles
fuente de clip Una URL que puede apuntar a un elemento SVG en línea (o) un elemento SVG en un archivo externo que contiene la definición de la ruta del clip.
forma básica Se refiere a uno entre inset() , circle() , ellipse() o polygon() . Usando una de estas funciones se define el trazado de recorte. Estas funciones de forma funcionan exactamente de la misma forma que en Formas para flotadores
clip-geometría-caja Esto puede tener uno entre content-box , content-box padding-box border-box margin-box fill-box stroke-box view-box como valores. Cuando esto se proporciona sin ningún valor para <basic-shape>, los bordes del cuadro correspondiente se utilizan como la ruta para recortar. Cuando se usa con una <forma básica>, esto actúa como el cuadro de referencia para la forma.
mascara-referencia Esto puede ser none o una imagen o una URL de referencia a una fuente de imagen de máscara.
estilo de repetición Esto especifica cómo se debe repetir o colocar la máscara en los ejes X e Y. Los valores admitidos son repeat-x , repeat-y , repeat , space , round , no-repeat .
modo de máscara Puede ser alpha o luminance o auto e indica si la máscara debe tratarse como una máscara alfa o una máscara de luminancia. Si no se proporciona ningún valor y la referencia de la máscara es una imagen directa, se consideraría una máscara alfa (o) si la referencia de la máscara es una URL, se consideraría una máscara de luminancia.
posición Esto especifica la posición de cada capa de máscara y es similar en comportamiento a la propiedad de background-position . El valor se puede proporcionar en la sintaxis de 1 valor (como top , 10% ) o en la sintaxis de 2 valores (como top right , 50% 50% ).
caja de geometría Esto especifica el cuadro en el que se debe recortar la máscara ( área de pintura de máscara ) o el cuadro que se debe utilizar como referencia para el origen de la máscara ( área de posicionamiento de máscara ) según la propiedad. La lista de valores posibles es content-box padding-box border-box margin-box fill-box stroke-box view-box . La explicación detallada de cómo funciona cada uno de esos valores está disponible en la especificación W3C .
tamaño bg Esto representa el tamaño de cada capa de imagen de máscara y tiene la misma sintaxis que background-size . El valor puede ser longitud o porcentaje o auto o cubrir o contener. La longitud, el porcentaje y el auto pueden proporcionarse como un solo valor o como uno para cada eje.
operador de composición Puede ser cualquiera entre add , subtract , exclude , multiply por capa y define el tipo de operación de composición que se debe usar para esta capa con las que están debajo. La explicación detallada sobre cada valor está disponible en las especificaciones del W3C .

Observaciones

CSS Clipping y Masking son conceptos muy nuevos, por lo que el soporte del navegador para estas propiedades es bastante bajo.

Mascarillas

Al momento de escribir (Jul '16), Chrome, Safari y Opera admiten estas propiedades con el prefijo -webkit- .

Firefox no requiere prefijos, pero admite máscaras solo cuando se usa con elementos de mask SVG. Para los elementos de mask SVG en línea, la sintaxis es mask: url(#msk) mientras que para el uso de elementos de mask en un archivo SVG externo, mask: url('yourfilepath/yourfilename.svg#msk') . #msk en ambos casos se refiere al id del elemento de mask que se hace referencia. Como se indica en esta respuesta , en la actualidad, Firefox no admite ningún parámetro que no sea mask-reference a la mask en la propiedad de la mask .

Internet Explorer (y Edge) aún no ofrece soporte para esta propiedad.

La propiedad del mask-mode actualmente no es compatible con ningún navegador con o sin prefijos.

Recorrido del clip:

Como en el momento de escribir (Jul '16) Chrome, Safari y Opera son compatibles clip-path cuando la ruta se crea utilizando formas básicas (como circle , polygon ) o la sintaxis url(#clipper) con SVG en línea. No admiten el recorte basado en formas que forman parte de archivos SVG externos. Además, requieren que el prefijo -webkit esté presente.

Firefox solo admite la sintaxis url() para clip-path mientras que Internet Explorer (y Edge) no ofrecen soporte.

Recorte (polígono)

CSS:

div{
  width:200px;
  height:200px;
  background:teal;
  clip-path: polygon(0 0, 0 100%, 100% 50%); /* refer remarks before usage */
}

HTML:

<div></div>

En el ejemplo anterior, se utiliza un trazado de recorte poligonal para recortar el elemento cuadrado (200 x 200) en forma de triángulo. La forma de salida es un triángulo porque la ruta comienza en (es decir, las primeras coordenadas están en) 0 0 , que es la esquina superior izquierda del cuadro, luego va a 0 100% , que es la esquina inferior izquierda del cuadro y finalmente, al 100% 50% que no es más que el punto medio derecho de la caja. Estos caminos se cierran automáticamente (es decir, el punto de inicio será el punto final) y, por lo tanto, la forma final es la de un triángulo.

Esto también se puede utilizar en un elemento con una imagen o un degradado como fondo.

Ver ejemplo

Salida:

introduzca la descripción de la imagen aquí

Recorte (círculo)

CSS:

div{
  width: 200px;
  height: 200px;
  background: teal;
  clip-path: circle(30% at 50% 50%); /* refer remarks before usage */
}

HTML

<div></div>

Este ejemplo muestra cómo recortar un div en un círculo. El elemento se recorta en un círculo cuyo radio es del 30% en función de las dimensiones del cuadro de referencia con su punto central en el centro del cuadro de referencia. Aquí, ya que no se proporciona <clip-geometry-box> (en otras palabras, cuadro de referencia), el border-box de border-box del elemento se usará como cuadro de referencia.

La forma del círculo debe tener un radio y un centro con las coordenadas (x,y) :

circle(radius at x y)

Ver ejemplo

Salida:

Círculo con ruta de clip CSS

Recorte y enmascaramiento: Resumen y diferencia

Con Recorte y Máscara puede hacer que algunas partes específicas de los elementos sean transparentes u opacas. Ambos pueden aplicarse a cualquier elemento HTML.

Recorte

Los clips son caminos vectoriales. Fuera de este camino el elemento será transparente, dentro de él será opaco. Por lo tanto, puede definir una propiedad de clip-path en los elementos. Cada elemento gráfico que también existe en SVG se puede usar aquí como una función para definir la ruta. Los ejemplos son circle() , polygon() o ellipse() .

camino

Ejemplo
clip-path: circle(100px at center);

El elemento solo será visible dentro de este círculo, que se coloca en el centro del elemento y tiene un radio de 100px.

Enmascaramiento

Las máscaras son similares a los Clips, pero en lugar de definir una ruta, se define una máscara en qué capas sobre el elemento. Puede imaginar esta máscara como una imagen que consiste principalmente en dos colores: blanco y negro.

Máscara de luminancia : Negro significa que la región es opaca y blanca que es transparente, pero también hay un área gris que es semitransparente, por lo que puede hacer transiciones suaves.

Máscara alfa : solo en las áreas transparentes de la máscara el elemento será opaco.

máscara de luminancia

Esta imagen, por ejemplo, puede usarse como una máscara de luminancia para hacer que un elemento tenga una transición muy suave de derecha a izquierda y de opaco a transparente.

La propiedad de mask permite especificar el tipo de máscara y una imagen que se utilizará como capa.

Ejemplo
mask: url(masks.svg#rectangle) luminance;

Un elemento llamado rectangle definido en masks.svg se usará como una máscara de luminancia en el elemento.

Máscara simple que desvanece una imagen de sólido a transparente.

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>

En el ejemplo anterior hay un elemento con una imagen como fondo. La máscara que se aplica en la imagen (mediante CSS) hace que parezca que se está desvaneciendo de izquierda a derecha.

El enmascaramiento se logra utilizando un linear-gradient que va de blanco (a la izquierda) a transparente (a la derecha) como máscara. Como es una máscara alfa, la imagen se vuelve transparente donde la máscara es transparente.

Salida sin la máscara:

introduzca la descripción de la imagen aquí

Salida con la máscara:

introduzca la descripción de la imagen aquí

Nota: Como se mencionó en las observaciones, el ejemplo anterior funcionaría en Chrome, Safari y Opera solo cuando se usa con el prefijo -webkit . Este ejemplo (con un linear-gradient como imagen de máscara) aún no es compatible con Firefox.

Usando máscaras para cortar un agujero en el medio de una imagen

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

En el ejemplo anterior, se crea un círculo transparente en el centro usando radial-gradient y luego se usa como máscara para producir el efecto de un círculo que se corta desde el centro de una imagen.

Imagen sin máscara:

introduzca la descripción de la imagen aquí

Imagen con máscara:

introduzca la descripción de la imagen aquí

Usando máscaras para crear imágenes con formas irregulares.

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>

En el ejemplo anterior, tres imágenes de linear-gradient (que cuando se colocan en sus posiciones apropiadas cubrirían el 100% x 100% del tamaño del contenedor) se utilizan como máscaras para producir un corte transparente de forma triangular en la parte inferior de la imagen.

Imagen sin la máscara:

introduzca la descripción de la imagen aquí

Imagen con la máscara:

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow