Propiedades de CSS relacionadas con la transparencia
Este artículo explica las propiedades de CSS relacionadas con la transparencia.
Puedes aprender sobre el uso y la sintaxis de las propiedades opacity
, z-index
y clip-path
.
YouTube Video
HTML para vista previa
css-opacity.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-opacity.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties Related to Transparency</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>CSS Properties Related to Transparency</h2>
20 </header>
21 <article>
22 <h3>opacity</h3>
23 <section>
24 <header><h4>opacity: 1</h4></header>
25 <section class="sample-view">
26 <div class="opaque-box">Opaque</div>
27 </section>
28 <header><h4>opacity: 0.5</h4></header>
29 <section class="sample-view">
30 <div class="semi-transparent-box">Semi-transparent</div>
31 </section>
32 <header><h4>opacity: 0</h4></header>
33 <section class="sample-view">
34 <div class="transparent-box">Transparent</div>
35 </section>
36 <header><h4>transition: opacity 2s ease-in-out</h4></header>
37 <section class="sample-view">
38 <div class="opacity-transition-box">Opacity with Transition (Fade out on hover)</div>
39 </section>
40 <header><h4>Parent & Child Element</h4></header>
41 <section class="sample-view">
42 <div class="opacity-parent">
43 Parent Element & <span class="opacity-child">Child Element</span>
44 </div>
45 </section>
46 </section>
47 </article>
48 <article>
49 <h3>z-index</h3>
50 <section>
51 <div class="z-index-box1">1</div>
52 <div class="z-index-box2">
53 <div class="z-index-box2-1">2-1</div>
54 2
55 </div>
56 <div class="z-index-box3">3</div>
57 </section>
58 </article>
59 <article>
60 <h3>clip-path</h3>
61 <section>
62 <h4>Clip-path Property Examples</h4>
63 <header><h4>clip-path: circle(50% at 50% 50%)</h4></header>
64 <section class="sample-view">
65 <div class="clip-path-circle">Circle</div>
66 </section>
67 <header><h4>clip-path: ellipse(50% 30% at 50% 50%)</h4></header>
68 <section class="sample-view">
69 <div class="clip-path-ellipse">Ellipse</div>
70 </section>
71 <header><h4>clip-path: polygon(50% 0%, 100% 100%, 0% 100%)</h4></header>
72 <section class="sample-view">
73 <div class="clip-path-polygon">Polygon</div>
74 </section>
75 <header><h4>clip-path: inset(10% 20% 30% 40%)</h4></header>
76 <section class="sample-view">
77 <div class="clip-path-inset">Inset</div>
78 </section>
79 <header><h4>clip-path: url(#myClip)</h4></header>
80 <section class="sample-view">
81 <div class="clip-path-url">Url</div>
82 </section>
83 </section>
84 <svg width="0" height="0">
85 <clipPath id="myClip">
86 <circle cx="50" cy="50" r="40" />
87 </clipPath>
88 </svg>
89 </article>
90 </main>
91</body>
92</html>
Efectos de filtro
Propiedad opacity
1.opaque-box {
2 background-color: skyblue;
3 opacity: 1; /* completely opaque */
4 border: 1px solid black;
5}
6
7.semi-transparent-box {
8 background-color: skyblue;
9 opacity: 0.5; /* semi-transparent */
10 border: 1px solid black;
11}
12
13.transparent-box {
14 background-color: skyblue;
15 opacity: 0; /* completely transparent */
16 border: 1px solid black;
17}
18
19.opacity-transition-box {
20 background-color: orange;
21 transition: opacity 2s ease-in-out;
22 border: 1px solid black;
23}
24
25.opacity-transition-box:hover {
26 opacity: 0; /* Fade out on hover */
27}
28
29.opacity-parent {
30 background-color: blue;
31 opacity: 0.5;
32}
33
34.opacity-child {
35 background-color: red;
36}
La propiedad opacity
se utiliza para establecer la transparencia de un elemento. Esta propiedad especifica la opacidad de todo el elemento, donde los valores más cercanos a 0
son más transparentes y los valores más cercanos a 1
son más opacos. La propiedad opacity
puede combinarse con animaciones para crear efectos de aparición y desvanecimiento.
La propiedad opacity
afecta no solo al elemento en el que está configurada, sino también a sus elementos secundarios. Esto significa que si un elemento padre se configura como semitransparente, sus elementos secundarios heredarán esa transparencia.
En este ejemplo, la configuración se establece de la siguiente manera.
-
Cuando la propiedad
opacity
está establecida en1
, el elemento es completamente opaco, igual que un elemento normal. -
Cuando la propiedad
opacity
está establecida en0.5
, el elemento se vuelve semitransparente. -
Cuando la propiedad
opacity
está establecida en0
, el elemento se vuelve completamente transparente y no es visible en absoluto. -
La propiedad
transition
está establecida enopacity
, así que cuando el cursor del ratón pasa sobre el elemento, este se desvanece y se vuelve completamente transparente después de 2 segundos. -
Si el elemento padre tiene la propiedad
opacity
en0.5
, los elementos hijos también se vuelven semitransparentes.
Propiedad z-index
1.z-index-box1 {
2 position: relative;
3 width: 100px;
4 height: 100px;
5 background-color: red;
6 top: 10px;
7 left: 10px;
8 z-index: 1; /* Displayed in the foreground */
9}
10
11.z-index-box2 {
12 position: relative;
13 width: 100px;
14 height: 100px;
15 background-color: blue;
16 top: -100px;
17 left: 90px;
18 z-index: 0; /* Displayed in the background */
19}
20
21.z-index-box3 {
22 position: relative;
23 width: 100px;
24 height: 100px;
25 background-color: green;
26 top: -160px;
27 left: 80px;
28 z-index: 2; /* Displayed in the frontmost layer */
29}
30
31.z-index-box2-1 {
32 position: relative;
33 width: 50px;
34 height: 50px;
35 background-color: skyblue;
36 top: 0px;
37 left: 0px;
38 z-index: 4;
39}
El z-index
es una propiedad utilizada en CSS para controlar el orden de apilamiento de los elementos. Esta propiedad especifica si un elemento debe aparecer delante o detrás de otros elementos.
- En la caja roja, el
z-index
está establecido en1
, por lo que el elemento aparece delante de otros elementos. - En la caja azul, el
z-index
está establecido en0
, por lo que el elemento aparece detrás de la caja roja. - En la caja verde, el
z-index
está establecido en2
, y aparece en la posición más adelantada. - En la caja celeste, se especifica un
z-index
de4
, el más alto, pero como el elemento padre tiene unz-index
de0
, no aparece en la posición más adelantada.
Mecanismo Básico
La propiedad z-index
toma un valor numérico, donde los elementos con números más altos se muestran delante de aquellos con números más bajos. Por defecto, los elementos sin un z-index
especificado se apilan según el orden en que aparecen en el HTML.
Sin embargo, para que z-index
tenga efecto, el elemento debe tener su propiedad position
configurada como relative
, absolute
, fixed
o sticky
. Si position
es static
, entonces z-index
no tiene efecto.
Valores
-
Si se asigna un número entero positivo a
z-index
, el elemento se muestra más hacia el frente. Cuanto mayor sea el número, más se mostrará delante de otros elementos.- Si
z-index
se establece en0
, mantiene el orden de apilamiento predeterminado. - Si
z-index
se establece en1
, el elemento se muestra una capa delante de otros elementos.
- Si
-
Si se asigna un número entero negativo a
z-index
, el elemento se muestra más hacia el fondo. Cuanto menor sea el número, más se mostrará detrás de otros elementos.- Si
z-index
se establece en-1
, el elemento se muestra una capa detrás de otros elementos.
- Si
Notas
z-index
depende delz-index
del elemento padre. Cuando un elemento padre tiene unz-index
especificado, se aplica el orden de apilamiento relativo dentro de ese elemento padre. Esto se llama un contexto de apilamiento. Por lo tanto, incluso si un elemento hijo tiene unz-index
alto, si elz-index
del elemento padre es bajo, no aparecerá delante de otros elementos.
La propiedad clip-path
En CSS, clip-path
es una propiedad utilizada para recortar elementos en formas específicas. Normalmente, los elementos se muestran como cajas rectangulares, pero con clip-path
se pueden mostrar en formas complejas como círculos o polígonos. Es una herramienta muy útil para crear diseños visuales o efectos interactivos.
La propiedad clip-path
restringe el área de visualización de un elemento y oculta las partes que están fuera de la forma especificada. A continuación, explicaremos cómo especificar formas comúnmente utilizadas.
Formas de Recorte Principales
circle()
1.clip-path-circle {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: circle(50% at 50% 50%);
6}
circle()
recorta un elemento en una forma circular. Puedes controlar la forma especificando el centro y el radio del círculo.
- El primer
50%
es el radio del círculo (como un porcentaje del ancho o alto del elemento). - El siguiente
at 50% 50%
es la posición central del círculo (como un porcentaje del ancho y alto del elemento).
Aquí, especifica un círculo con un radio igual a la mitad de las dimensiones del elemento, y centrado en el elemento.
ellipse()
1.clip-path-ellipse {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: ellipse(50% 30% at 50% 50%);
6}
ellipse()
recorta un elemento en una forma elíptica. Especificas los radios del ancho y la altura, así como la posición del centro.
- El primer
50% 30%
son los radios del ancho y la altura. - El siguiente
at 50% 50%
es la posición central de la elipse.
En este ejemplo, se especifica una elipse centrada en el elemento, con un ancho del 50% y una altura del 30%.
polygon()
1.clip-path-polygon {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
6}
polygon()
forma un polígono al conectar un conjunto especificado de vértices. Cada vértice se especifica con coordenadas relativas dentro del elemento.
- En este ejemplo, se especifican tres vértices (centro superior, esquina inferior derecha, esquina inferior izquierda) y se recorta en un triángulo.
polygon()
es muy flexible y puede crear cualquier forma.
inset()
1.clip-path-inset {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: inset(10% 20% 30% 40%);
6}
inset()
recorta hacia adentro desde los bordes externos de un elemento. Define un rectángulo especificando la distancia desde cada uno de los cuatro lados.
- El
10%
es la distancia desde el borde superior. - El
20%
es la distancia desde el borde derecho. - El
30%
es la distancia desde el borde inferior. - El
40%
es la distancia desde el borde izquierdo.
Esta especificación crea un rectángulo que se reduce dentro del elemento.
clip-path
usando SVG
1/*
2<svg width="0" height="0">
3 <clipPath id="myClip">
4 <circle cx="50" cy="50" r="40" />
5 </clipPath>
6</svg>
7*/
8.clip-path-url {
9 width: 100px;
10 height: 100px;
11 background-color: green;
12 clip-path: url(#myClip);
13}
CSS clip-path
puede usar no solo formas primitivas sino también recortar formas complejas utilizando un elemento <clipPath>
de SVG.
- En este ejemplo, se aplica a un elemento HTML una ruta de recorte circular definida en SVG con el
id
demyClip
.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.