Esta animación nos es muy conocida. Cuando usamos Facebook, hay una reacción llamada WOW. Entonces, en este artículo, hicimos esa reacción usando HTML y CSS simples. Además, es uno de los mejores ejemplos para aprender el concepto de pseudo-elementos.
-
Parte HTML: al usar HTML, crearemos alguna clase ya que podemos modificar los div a una cara. Tomaremos algunos div y clases para modificar esa parte usando CSS. La idea principal es que tomaremos algunas áreas de la parte del cuerpo y las modificaremos con CSS.
Esta es la parte del cuerpo:
<
div
class
=
"center"
>
<
div
class
=
"emoji"
>
<
div
class
=
"emoji_face"
>
<
div
class
=
"emoji_brow"
></
div
>
<
div
class
=
"emoji_eye"
></
div
>
<
div
class
=
"emoji_mouth"
></
div
>
</
div
>
</
div
>
</
div
>
-
Código CSS: al usar CSS, haremos que la cara sea una ceja y una boca. Primero, modificaremos el área para hacer un círculo. Después de hacer la cara, le daremos vida usando efectos de desplazamiento de CSS como @keyeffect, que ayudará a mover la ceja y la boca a lo largo de un ángulo particular del eje X o el eje Y.
Ejemplo: Aquí está el código completo
<!DOCTYPE html>
<html lang=
"en"
dir=
"ltr"
>
<head>
<meta charset=
"utf-8"
/>
<title>Wow Facebook Reaction</title>
<style>
body {
margin
:
0
;
padding
:
0
;
background
:
#e5daf3
;
}
.
center
{
/*here the position of the
emoji will defined*/
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform: translate(
-50%
,
-50%
);
}
/*here we will make the shape of the emoji*/
.emoji {
position
:
relative
;
display
: inline-
block
;
height
:
120px
;
width
:
120px
;
border-radius:
50%
;
box-shadow:
inset
0
0
10px
2px
#eead2b
;
background
: linear-gradient(
#ffed65
,
#eead2f
);
}
.emoji_face,
.emoji_brow,
.emoji_eye,
.emoji_mouth {
position
:
absolute
;
}
.emoji_face {
height
:
120px
;
width
:
120px
;
animation: face
3
s linear infinite;
}
/*here by adding @Keyframes we can
move the face along X-axis*/
@keyframes face {
15%
,
25%
{
transform: rotate(
20
deg) translateX(
-20px
);
}
45%
,
65%
{
transform: rotate(
-20
deg) translateX(
20px
);
}
75%
,
100%
{
transform: rotate(
0
) translateX(
0
);
}
}
/*here the eye brow making part starts*/
.emoji_brow {
left
: calc(
50%
-
3px
);
height
:
6px
;
width
:
6px
;
background
:
transparent
;
border-radius:
50%
;
box-shadow:
-18px
0
0
0
#aa7408
,
-33px
0
0
0
#aa7408
,
18px
0
0
0
#aa7408
,
33px
0
0
0
#aa7408
;
animation: eye_brow
3
s linear infinite;
}
/*here we can move the eye brow part*/
@keyframes eye_brow {
15%
,
65%
{
top
:
25px
;
}
75%
,
100%
,
0%
{
top
:
15px
;
}
}
.emoji_brow:before,
.emoji_brow:after {
position
:
absolute
;
content
:
""
;
left
: calc(
50%
-
12px
);
top
:
-3px
;
width
:
24px
;
height
:
20px
;
border
:
6px
solid
#aa7408
;
border-radius:
50%
;
box-sizing: border-box;
border-bottom-color
:
transparent
;
border-left-color
:
transparent
;
border-right-color
:
transparent
;
}
/*after movement the face will
look like this*/
.emoji_brow:before {
margin-left
:
-25px
;
}
.emoji_brow:after {
margin-left
:
25px
;
}
/*eye part will defined in this part*/
.emoji_eye {
top
:
35px
;
left
: calc(
50%
-
8px
);
height
:
24px
;
width
:
16px
;
border-radius:
50%
;
background
:
transparent
;
box-shadow:
25px
0
0
0
#1b2031
,
-25px
0
0
0
#1b2031
;
}
/*mouth will be designed here*/
.emoji_mouth {
top
:
50%
;
left
: calc(
50%
-
15px
);
width
:
30px
;
height
:
40px
;
border-radius:
50%
;
background
:
linear-gradient(
#54290f
,
#622b0b
,
#6e3011
);
animation: mouth
3
s linear infinite;
}
/*movement of the mouce will be designed here*/
@keyframes mouth {
10%
,
30%
{
width
:
20px
;
height
:
20px
;
left
: calc(
50%
-
10px
);
}
50%
,
70%
{
width
:
30px
;
height
:
40px
;
left
: calc(
50%
-
15px
);
}
75%
,
100%
{
height
:
45px
;
}
}
</style>
</head>
<body>
<!-- In this part we will make some div to
take some different par of area on body part
and give the div some class-->
<div class=
"center"
>
<div class=
"emoji"
>
<div class=
"emoji_face"
>
<div class=
"emoji_brow"
></div>
<div class=
"emoji_eye"
></div>
<div class=
"emoji_mouth"
></div>
</div>
</div>
</div>
</body>
</html>
Producción:
Enfoque: lo básico de esta animación proviene de algunos atributos CSS y etiquetas HTML. Aquí, haremos una cara que se mostrará como wow.