Propiedades de CSS Relacionadas con los Efectos de Filtro
Este artículo explica las propiedades de CSS relacionadas con los efectos de filtro.
Puedes aprender sobre los usos y cómo escribir propiedades como filter
y transform
.
YouTube Video
HTML para vista previa
css-effect.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-effect.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Animation</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Filter/Effect Related Properties</h2>
20 </header>
21 <article>
22 <h3>filter</h3>
23 <section>
24 <header><h4>Original Image</h4></header>
25 <section class="sample-view">
26 <img src="example.jpg" alt="Example Image" width="100">
27 </section>
28 <header><h4>filter: sepia(1)</h4></header>
29 <section class="sample-view">
30 <img src="example.jpg" alt="Example Sepia Image" class="filtered-image-sepia" width="100">
31 </section>
32 <header><h4>filter: opacity(0.5)</h4></header>
33 <section class="sample-view">
34 <img src="example.jpg" alt="Example Opacity Image" class="filtered-image-opacity" width="100">
35 </section>
36 <header><h4>filter: brightness(1.2) contrast(1.5) sepia(0.5)</h4></header>
37 <section class="sample-view">
38 <img src="example.jpg" alt="Example Filtered Image" class="filtered-image-multiple" width="100">
39 </section>
40 </section>
41 </article>
42 <article>
43 <h3>filter-function</h3>
44 <section>
45 <header><h4>filter: blur(5px)</h4></header>
46 <section class="sample-view">
47 <img src="example.jpg" alt="Example Blur Image" style="filter: blur(5px);" width="100">
48 </section>
49 <header><h4>filter: brightness(1.5)</h4></header>
50 <section class="sample-view">
51 <img src="example.jpg" alt="Example Brightness Image" style="filter: brightness(1.5);" width="100">
52 </section>
53 <header><h4>filter: contrast(2)</h4></header>
54 <section class="sample-view">
55 <img src="example.jpg" alt="Example Contrast Image" style="filter: contrast(2);" width="100">
56 </section>
57 <header><h4>filter: grayscale(1)</h4></header>
58 <section class="sample-view">
59 <img src="example.jpg" alt="Example Grayscale Image" style="filter: grayscale(1);" width="100">
60 </section>
61 <header><h4>filter: hue-rotate(90deg)</h4></header>
62 <section class="sample-view">
63 <img src="example.jpg" alt="Example Hue Rotate Image" style="filter: hue-rotate(90deg);" width="100">
64 </section>
65 <header><h4>filter: invert(1)</h4></header>
66 <section class="sample-view">
67 <img src="example.jpg" alt="Example Invert Image" style="filter: invert(1);" width="100">
68 </section>
69 <header><h4>filter: opacity(0.5)</h4></header>
70 <section class="sample-view">
71 <img src="example.jpg" alt="Example Opacity Image" style="filter: opacity(0.5);" width="100">
72 </section>
73 <header><h4>filter: saturate(2)</h4></header>
74 <section class="sample-view">
75 <img src="example.jpg" alt="Example Saturate Image" style="filter: saturate(2);" width="100">
76 </section>
77 <header><h4>filter: sepia(1)</h4></header>
78 <section class="sample-view">
79 <img src="example.jpg" alt="Example Sepia Image" style="filter: sepia(1);" width="100">
80 </section>
81 <header><h4>filter: brightness(1.2) contrast(1.5) sepia(0.5)</h4></header>
82 <section class="sample-view">
83 <img src="example.jpg" alt="Example Filtered Image" style="filter: brightness(1.2) contrast(1.5) sepia(0.5);" width="100">
84 </section>
85 </section>
86 </article>
87 <article>
88 <h3>transform</h3>
89 <section>
90 <header><h4>Transform: scale(1.5, 2)</h4></header>
91 <section class="sample-view">
92 <div class="transform-box transform-scale">Scale</div>
93 </section>
94 <header><h4>Transform: skew(30deg, 20deg)</h4></header>
95 <section class="sample-view">
96 <div class="transform-box transform-skew">Skew</div>
97 </section>
98 <header><h4>Transform: rotate(45deg) scale(1.5)</h4></header>
99 <section class="sample-view">
100 <div class="transform-box transform-rotate">Rotate Scale</div>
101 </section>
102 </section>
103 </article>
104 <article>
105 <h3>transform functions</h3>
106 <section>
107 <header><h4>Transform: translate(100px, 50px)</h4></header>
108 <section class="sample-view">
109 <div class="transform-box transform-translate">Translate</div>
110 </section>
111 <header><h4>Transform: rotate(45deg)</h4></header>
112 <section class="sample-view">
113 <div class="transform-box transform-rotate">Rotate</div>
114 </section>
115 <header><h4>Transform: scale(1.5, 2)</h4></header>
116 <section class="sample-view">
117 <div class="transform-box transform-scale">Scale</div>
118 </section>
119 <header><h4>Transform: skew(30deg, 20deg)</h4></header>
120 <section class="sample-view">
121 <div class="transform-box transform-skew">Skew</div>
122 </section>
123 <header><h4>Transform: matrix(1, 0.5, -0.5, 1, 100, 0)</h4></header>
124 <section class="sample-view">
125 <div class="transform-box transform-matrix">Matrix</div>
126 </section>
127 <header><h4>Transform: translate3d(100px, 50px, 30px)</h4></header>
128 <section class="sample-view perspective">
129 <div class="transform-box transform-translate3d">Translate3D</div>
130 </section>
131 <header><h4>Transform: rotate3d(1, 1, 0, 45deg)</h4></header>
132 <section class="sample-view perspective">
133 <div class="transform-box transform-rotate3d">Rotate3D</div>
134 </section>
135 <header><h4>Transform: rotate(45deg) scale(1.5)</h4></header>
136 <section class="sample-view">
137 <div class="transform-box transform-rotate-scale">Rotate Scale</div>
138 </section>
139 </section>
140 </article>
141 <article>
142 <h3>transform-origin</h3>
143 <section>
144 <header><h4>transform-origin: left top</h4></header>
145 <section class="sample-view">
146 <div class="transform-box transform-origin-left-top">Transform<br>(left-top)</div>
147 </section>
148 <header><h4>transform-origin: right bottom</h4></header>
149 <section class="sample-view">
150 <div class="transform-box transform-origin-right-bottom">Transform<br>(right-bottom)</div>
151 </section>
152 <header><h4>transform-origin: 0% 100%</h4></header>
153 <section class="sample-view">
154 <div class="transform-box transform-origin-percent">Transform<br>(percent)</div>
155 </section>
156 <header><h4>transform-origin: 50% 50% 50px</h4></header>
157 <section class="sample-view">
158 <div class="transform-box transform-origin-3d">Transform<br>3D</div>
159 </section>
160 </section>
161 </article>
162 </main>
163</body>
164</html>
Efectos de filtro
Propiedad filter
1.filtered-image-sepia {
2 filter: sepia(1);
3}
4
5.filtered-image-opacity {
6 filter: opacity(0.5);
7}
8
9.filtered-image-multiple {
10 filter: brightness(1.2) contrast(1.5) sepia(0.5);
11}
La propiedad filter
se utiliza para aplicar efectos visuales a los elementos. Puedes agregar fácilmente una variedad de efectos como difuminar imágenes o elementos, ajustar el brillo y cambiar el contraste.
- La clase
filtered-image-sepia
tiene un efecto sepia aplicado. - La clase
filtered-image-opacity
tiene un efecto de opacidad aplicado. - La clase
filtered-image-multiple
tiene efectos de brillo, contraste y sepia aplicados a la imagen.
Sintaxis Básica
1filter: none | <filter-function> [<filter-function>]*;
Para la propiedad filter
, especifica none
o una filter-function
.
- Especificar
none
no aplica efectos de filtro. - Especifica la función de filtro a aplicar en
<filter-function>
. Se pueden especificar múltiples filtros separándolos con espacios.
Tipos de funciones de filtro
blur()
1filter: blur(5px);
La función blur()
aplica un efecto de desenfoque.
- El valor se especifica en píxeles (px) y cuanto mayor sea el valor, mayor será el grado de desenfoque.
brightness()
1filter: brightness(1.5);
La función brightness()
ajusta el brillo.
- El valor se especifica entre
0
(completamente oscuro) y1
(brillo original). Especificar un valor mayor que1
hace que el elemento sea más brillante.
contrast()
1filter: contrast(2);
La función contrast()
ajusta el contraste.
- El valor se especifica entre
0
(escala de grises) y1
(contraste original), y valores mayores a1
aumentan el contraste.
grayscale()
1filter: grayscale(1);
La función grayscale()
convierte el elemento en monocromo.
- El valor se especifica entre
0
(color original) y1
(completamente monocromo).
hue-rotate()
1filter: hue-rotate(90deg);
La función hue-rotate()
rota el tono.
- Los valores se especifican en grados (deg), aplicando cambios de color al rotar el matiz. El matiz gira en el rango de
0deg
a360deg
.
invert()
1filter: invert(1);
La función invert()
invierte los colores.
- Los valores se especifican de
0
(color original) a1
(completamente invertido).
opacity()
1filter: opacity(0.5);
La función opacity()
cambia la transparencia de un elemento.
- Los valores se especifican en el rango de
0
(completamente transparente) a1
(opaco).
saturate()
1filter: saturate(2);
La función saturate()
ajusta la saturación.
- Los valores van de
0
(monocromático) a1
(saturación original), y especificar valores mayores que1
aumenta la saturación.
sepia()
1filter: sepia(1);
La función sepia()
convierte al tono sepia.
- Los valores se especifican de
0
(color original) a1
(tono sepia completo).
Aplicando Múltiples Filtros
1filter: brightness(1.2) contrast(1.5) sepia(0.5);
Se pueden aplicar múltiples filtros, separados por espacios.
Ventajas de Usar la Propiedad filter
La propiedad filter
es una herramienta poderosa para crear elementos visualmente atractivos de manera sencilla. Tiene las siguientes ventajas:.
- Se pueden añadir efectos visuales fácilmente.
- Las imágenes se pueden ajustar utilizando solo CSS, sin programas de edición de imágenes.
- Se pueden crear efectos dinámicos combinándolo con animaciones.
Propiedad transform
1.transform-box {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 transition: transform 0.3s ease;
6}
7
8.transform-scale:hover {
9 /* Width 1.5 times and height 2 times */
10 transform: scale(1.5, 2);
11}
12
13.transform-skew:hover {
14 /* Skew 30 degrees on the X-axis and 20 degrees on the Y-axis */
15 transform: skew(30deg, 20deg);
16}
17
18.transform-rotate:hover {
19 transform: rotate(45deg) scale(1.5);
20}
La propiedad transform
se utiliza para aplicar transformaciones 2D o 3D a los elementos. Con CSS se pueden especificar varias transformaciones visuales, como posición, rotación, escalado (ampliar/reducir) y sesgado. La propiedad transform
se utiliza a menudo en combinación con animaciones y ayuda a crear elementos dinámicos de interfaz de usuario.
-
En la clase
transform-scale
, al pasar el cursor sobre el elemento, se amplía su ancho en 1.5 veces y su altura en 2 veces. -
En la clase
transform-skew
, al pasar el cursor sobre el elemento, se rota 30 grados en el eje X y 20 grados en el eje Y. -
En la clase
transform-rotate
, al pasar el cursor sobre el elemento, se rota 45 grados y se amplía 1.5 veces.
Sintaxis Básica
1transform: none | <transform-function> [<transform-function>]*;
La propiedad transform
especifica none
o una transform-function
.
- Si se especifica
none
, no se aplicará ninguna transformación. - Especifique el tipo de transformación con
<transform-function>
. Se pueden aplicar múltiples transformaciones separándolas con espacios.
Funciones Principales de Transformación
translate()
1/* Move 50px to the right and 100px down */
2transform: translate(50px, 100px);
3
4transform: translateX(50px); /* Move 50px to the right */
5transform: translateY(100px); /* Move 100px down */
- La función
translate(x, y)
mueve un elemento por las distancias especificadas a lo largo de los ejes X e Y. Especifiquex
ey
usando unidades comopx
o%
. También puede especificar individualmente contranslateX()
otranslateY()
.
rotate()
1transform: rotate(45deg); /* Rotate 45 degrees */
- La función
rotate(angle)
rota un elemento por el ángulo especificado en grados (deg
).
scale()
1/* Width 1.5 times and height 2 times */
2transform: scale(1.5, 2);
3
4transform: scaleX(1.5); /* Width 1.5 times */
5transform: scaleY(2); /* Height 2 times */
- La función
scale(x, y)
escala un elemento a lo largo de los ejes X e Y.x
ey
son factores de escala relativos al tamaño original. Por ejemplo,scale(2, 2)
duplicará el tamaño. Puede especificar individualmente conscaleX()
oscaleY()
.
skew()
1/* Skew 30 degrees on the X-axis and
2 20 degrees on the Y-axis */
3transform: skew(30deg, 20deg);
4
5/* Skew 30 degrees on the X-axis */
6transform: skewX(30deg);
7
8/* Skew 20 degrees on the Y-axis */
9transform: skewY(20deg);
- La función
skew(x-angle, y-angle)
sesga un elemento por los ángulos especificados a lo largo de los ejes X e Y. Puede especificar individualmente conskewX()
oskewY()
.
matrix()
1/* Apply a special transformation */
2transform: matrix(1, 0.5, -0.5, 1, 0, 0);
- La función
matrix()
especifica una matriz para combinar múltiples transformaciones a la vez. Generalmente se utiliza en combinación con otras funciones de transformación.
Funciones de transformación 3D
translate3d()
1/* Move 100px right(X-axis), 50px down(Y-axis),
2 30px forward(Z-zxis) */
3transform: translate3d(100px, 50px, 30px);
4
5/* Preserve 3D positioning of children */
6transform-style: preserve-3d;
7
8/* Add 3D depth with 600px perspective */
9perspective: 600px;
- La función
translate3d()
realiza una traducción en el espacio 3D.- Se puede especificar en tres dimensiones: los ejes X, Y y Z.
- Al establecer la propiedad
transform-style
enpreserve-3d
y la propiedadperspective
en600px
, se aplica un efecto de movimiento tridimensional con profundidad a los elementos hijos.
rotate3d()
1/* Rotate 45 degrees around the X and Y axes */
2transform: rotate3d(1, 1, 0, 45deg);
3
4transform-style: preserve-3d;
5perspective: 600px;
- La función
rotate3d()
realiza una rotación en el espacio 3D.- Rota un elemento con respecto a los ejes X, Y y Z.
Combinación de múltiples transformaciones
1transform: rotate(45deg) scale(1.5);
La propiedad transform
puede aplicar múltiples transformaciones simultáneamente. Por ejemplo, puede combinar rotación y escala.
Puntos clave para el uso
La propiedad transform
es una herramienta poderosa en CSS para transformar visualmente los elementos. Al combinar varias funciones, puede crear interfaces interactivas y dinámicas.
- La propiedad
transform
permite la transformación directa de elementos, permitiendo la manipulación visual sin alterar la estructura del DOM. - Es muy útil para crear animaciones y elementos interactivos, permitiendo diseños dinámicos cuando se combina con
transition
oanimation
.
Propiedad transform-origin
1.transform-box {
2 background-color: skyblue;
3}
4
5.transform-origin-left-top:hover {
6 /* Based on the top left corner */
7 transform-origin: left top;
8 transform: rotate(45deg) scale(1.2);
9}
10
11.transform-origin-right-bottom:hover {
12 /* Based on the right bottom corner */
13 transform-origin: right bottom;
14 transform: rotate(45deg) scale(1.2);
15}
16
17.transform-origin-percent:hover {
18 /* Transform based on the bottom left corner */
19 transform-origin: 0% 100%;
20 transform: rotate(45deg) scale(1.2);
21}
22
23.transform-origin-3d:hover {
24 /* Specify the Z-axis as well */
25 transform-origin: 50% 50% 50px;
26 transform: rotate(45deg) scale(1.2);
27}
La propiedad transform-origin
se usa para establecer el punto de origen de las transformaciones aplicadas por la propiedad transform
. Puedes especificar el punto de referencia para las transformaciones de un elemento, permitiéndote controlar alrededor de qué posición se aplican efectos como la rotación o el escalado.
En este ejemplo, cuando pasas el cursor sobre el elemento, este rota y se escala simultáneamente según el punto especificado por la propiedad transform-origin
.
Sintaxis Básica
1transform-origin: x y z;
Para la propiedad transform-origin
, debes especificar x
, y
y z
de esta manera.
- Para
x
, especifica el punto de referencia en el eje X (dirección horizontal). Los valores se pueden especificar utilizando palabras clave (left
,center
,right
) o longitudes (px
,%
, etc.). - Para
y
, especifica el punto de referencia en el eje Y (dirección vertical). Los valores se pueden especificar utilizando palabras clave (top
,center
,bottom
) o longitudes. - Para
z
, especifica el punto de referencia en el eje Z (dirección de profundidad). Solo puede usarse con transformaciones 3D. Es opcional, y el valor predeterminado es0
.
Valor Predeterminado
1transform-origin: 50% 50%; /* Center of the element */
El valor predeterminado de la propiedad transform-origin
es el centro del elemento para los ejes X e Y. Esto significa que, por defecto, las transformaciones se realizan con el centro del elemento como punto de referencia.
Cómo Especificar Valores
Los valores para la propiedad transform-origin
pueden especificarse utilizando palabras clave, porcentajes, longitudes como px
, em
, etc.
-
Especificación de Palabras Clave
left
: Establece la referencia del eje X en el borde izquierdo del elemento.right
: Establece la referencia del eje X en el borde derecho del elemento.top
: Establece la referencia del eje Y en el borde superior del elemento.bottom
: Establece la referencia del eje Y en el borde inferior del elemento.center
: Establece la referencia de los ejes X o Y en el centro del elemento.
-
Especificación de Porcentaje
0%
: Lo establece en el borde izquierdo o superior.50%
: Lo establece en el centro.100%
: Lo establece en el borde derecho o inferior.
-
Especificación de Longitud
- Puedes ajustar finamente el punto de referencia utilizando longitudes específicas como
px
,em
, etc.
- Puedes ajustar finamente el punto de referencia utilizando longitudes específicas como
transform-origin
en Transformaciones 3D
1.box {
2 width: 100px;
3 height: 100px;
4 background-color: lightblue;
5 transform-origin: 50% 50% 50px; /* Specify the Z-axis as well */
6 transform: rotateY(45deg);
7}
transform-origin
también puede usarse para transformaciones 3D. En las transformaciones 3D, también puedes especificar el punto de referencia en el eje Z. Por ejemplo, al especificar el centro de rotación en la dirección de profundidad, son posibles las transformaciones con un sentido de profundidad.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.