Botones de compartición social animados con CSS

CSSCSSBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este Laboratorio (Lab), aprenderás cómo crear botones de compartición social animados utilizando HTML y CSS3. Estos botones utilizan la biblioteca Font Awesome para los iconos y están estilizados con CSS para proporcionar un suave efecto de transición al pasar el cursor sobre ellos. Al final de esta guía, tendrás un conjunto de hermosos botones sociales responsivos que puedes integrar en cualquier sitio web.

animated social buttons demo

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL css(("CSS")) -.-> css/BasicConceptsGroup(["Basic Concepts"]) css(("CSS")) -.-> css/BasicStylingGroup(["Basic Styling"]) css(("CSS")) -.-> css/CoreLayoutGroup(["Core Layout"]) css(("CSS")) -.-> css/IntermediateStylingGroup(["Intermediate Styling"]) css(("CSS")) -.-> css/DynamicStylingGroup(["Dynamic Styling"]) css/BasicConceptsGroup -.-> css/selectors("Selectors") css/BasicStylingGroup -.-> css/text_styling("Text Styling") css/CoreLayoutGroup -.-> css/display_property("Display Property") css/IntermediateStylingGroup -.-> css/pseudo_classes("Pseudo-classes") css/IntermediateStylingGroup -.-> css/pseudo_elements("Pseudo-elements") css/DynamicStylingGroup -.-> css/transformations("Transformations") subgraph Lab Skills css/selectors -.-> lab-179618{{"Botones de compartición social animados con CSS"}} css/text_styling -.-> lab-179618{{"Botones de compartición social animados con CSS"}} css/display_property -.-> lab-179618{{"Botones de compartición social animados con CSS"}} css/pseudo_classes -.-> lab-179618{{"Botones de compartición social animados con CSS"}} css/pseudo_elements -.-> lab-179618{{"Botones de compartición social animados con CSS"}} css/transformations -.-> lab-179618{{"Botones de compartición social animados con CSS"}} end

Introducción a los iconos

Para utilizar los iconos de Font Awesome, simplemente utiliza el prefijo "fa" seguido del nombre del icono.

El formato específico es el siguiente: <i class="fa ICON_NAME"></i>

Para introducir los iconos necesarios desde la biblioteca de iconos, escribe el siguiente código en el archivo index.html:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Animated Social Sharing Buttons</title>

    <!--Icon Library-->
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/[email protected]/css/font-awesome.min.css"
    />
  </head>
  <body>
    <div>
      <i class="fa fa-facebook"></i>
      <i class="fa fa-twitter"></i>
      <i class="fa fa-google"></i>
      <i class="fa fa-instagram"></i>
      <i class="fa fa-pinterest"></i>
    </div>
  </body>
</html>

El resultado es el siguiente:

Descripción de la imagen

Utilizar selectores de pseudo-clases permite que el estilo cambie cuando el mouse se posa sobre el objeto enlazado. Por lo tanto, agregamos un enlace vacío al icono, o puedes enlazar a las respectivas páginas de inicio de las redes sociales.

Sintaxis de la pseudo-clase: selector:pseudo-clase {propiedad:valor;}

  • a:hover {propiedad:valor;} establece el estilo que se muestra cuando el mouse se posa sobre el enlace.

Establece los selectores de clase necesarios para facilitar el posterior estilo de los respectivos botones.

<div class="social-btns">
  <a class="btn facebook" href="#"><i class="fa fa-facebook"></i></a>
  <a class="btn twitter" href="#"><i class="fa fa-twitter"></i></a>
  <a class="btn google" href="#"><i class="fa fa-google"></i></a>
  <a class="btn instagram" href="#"><i class="fa fa-instagram"></i></a>
  <a class="btn pinterest" href="#"><i class="fa fa-pinterest"></i></a>
</div>

Vista previa del efecto:

Descripción de la imagen

Los iconos de Font Awesome se vuelven azules porque después de aplicar la etiqueta <a>, el color de fuente predeterminado es azul.

✨ Revisar Solución y Practicar

Configuración del estilo de los iconos

Antes de configurar el estilo de los iconos, agregamos la hoja de estilos style.css en la etiqueta <head> de index.html.

<link rel="stylesheet" href="style.css" />

Para estandarizar el estilo general, establecemos un estilo global en style.css.

/* Global style settings */
* {
  margin: 0;
  padding: 0;
}
a,
img {
  border: 0;
}
body {
  background: #eee;
}

Para embellecer los iconos vectoriales proporcionados por la fuente Font Awesome, primero establezcamos sus colores.

.social-btns.btn.facebook.fa {
  color: #3b5998;
}
.social-btns.btn.twitter.fa {
  color: #00aff0;
}
.social-btns.btn.google.fa {
  color: #dc4a38;
}
.social-btns.btn.instagram.fa {
  color: #bf00ff;
}
.social-btns.btn.pinterest.fa {
  color: #cc0000;
}

Vista previa del efecto:

Descripción de la imagen

A continuación, configuraremos el icono para que se agrande instantáneamente cuando se toque y cambie de color. Para el efecto de agrandamiento instantáneo, podemos usar transform: scale(0.8) para reducir el icono al 80% de su tamaño original, y cuando se produzca el evento de toque, se redimensiona de nuevo a su tamaño original usando transform: scale(1).

Ingresa el siguiente código en el archivo style.css:

.social-btns.btn.fa {
  /* Set the default link display style */
  -webkit-transform: scale(0.8);
  transform: scale(0.8);
}
.social-btns.btn:focus.fa, /* Select the focused button style */
.social-btns.btn:hover.fa {
  /* Set the mouse-over link display style */
  color: #fff; /* Change its color */
  -webkit-transform: scale(1);
  transform: scale(1);
}
.social-btns.btn.fa {
  /* Set the size and vertical alignment of the icons provided by Font Awesome */
  font-size: 38px;
  vertical-align: middle;
}

Vista previa del efecto:

Descripción de la imagen
✨ Revisar Solución y Practicar

Configuración del estilo de los botones

Para diseñar la página, centramos los botones en la página, los configuramos como elementos en línea de nivel de bloque y luego embellecemos los botones.

El atributo display especifica el tipo de elemento a generar:

  • display:inline lo configura como un elemento en línea, compartiendo una fila con otros elementos, es decir, no ocupando una fila exclusivamente.
  • display:block lo configura como un elemento de nivel de bloque y ocupa una fila exclusivamente.
  • display:inline-block combina los dos métodos anteriores para configurarlo como un elemento de nivel de bloque que no ocupa una fila exclusivamente.
.social-btns {
  height: 90px;
  margin: 80px auto;
  font-size: 0;
  text-align: center; /* horizontally centering */
}
.social-btns.btn {
  display: inline-block; /* set the button as a block-level element that does not occupy a row exclusively */
  background-color: #fff;
  width: 90px;
  height: 90px;
  line-height: 90px; /* set line height */
  margin: 0 10px;
  text-align: center;
  position: relative; /* set to relative positioning */
  overflow: hidden; /* hide overflow content */
  border-radius: 28%; /* round the corners of the DIV */
  box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.1); /* add shadow to the DIV element */
  opacity: 0.99; /* specify opacity. From 0.0 transparent to 1.0 completely opaque */
}

Vista previa del efecto:

Descripción de la imagen

Observamos que cuando se toca el botón, tanto el icono como el fondo del botón son blancos, lo que no es fácil de ver claramente. Por lo tanto, necesitamos configurar el estilo de toque del fondo del botón. Primero, necesitamos rotar btn:before en el sentido de las agujas del reloj 45° utilizando transform: rotate(45deg). Luego ajustamos las posiciones inicial y final de btn:before.

Descripción de la imagen

Selector before: Inserta nuevo contenido antes del contenido del elemento.

.social-btns.btn:before {
  /*Set the top and left values before the content of each btn element, i.e. the position of the btn when not touched*/
  top: 90%;
  left: -110%;
}
.social-btns.btn:focus:before,
.social-btns.btn:hover:before {
  /*Adjusts the position of the button when touched*/
  top: -10%;
  left: -10%;
}
.social-btns.btn:before {
  content: "";
  width: 120%;
  height: 120%;
  position: absolute;
  /*Flip btn:before by 45° clockwise*/
  -webkit-transform: rotate(45deg);
  transform: rotate(45deg);
}
/*Set the btn:before color, i.e. the button's background color after touching*/
.social-btns.btn.facebook:before {
  background-color: #3b5998;
}
.social-btns.btn.twitter:before {
  background-color: #00aff0;
}
.social-btns.btn.instagram:before {
  background-color: #bf00ff;
}
.social-btns.btn.google:before {
  background-color: #dc4a38;
}
.social-btns.btn.pinterest:before {
  background-color: #cc0000;
}

Vista previa del efecto:

Descripción de la imagen

Finalmente, realizamos ajustes de transición a los botones, principalmente utilizando el atributo transition-timing-function para establecer la curva de velocidad del efecto de transición y hacerlo visualmente más suave.

Sintaxis de transition-timing-function:

<cubic-bezier-easing-function> =
  ease                                                |
  ease-in                                             |
  ease-out                                            |
  ease-in-out                                         |
  cubic-bezier( <number [0,1]>, <number>, <number [0,1]>, <number> )

Agrega el siguiente estilo a style.css:

.social-btns.btn,
.social-btns.btn:before,
.social-btns.btn.fa {
  transition: all 0.35s; /* all styles 0.35 seconds easing */
  transition-timing-function: cubic-bezier(
    0.31,
    -0.105,
    0.43,
    1.59
  ); /* specify the speed of the transition effect */
}

Vista previa del efecto:

Descripción de la imagen

Nota: Haz clic en 'Go Live' en la esquina inferior derecha para ejecutar el servicio web en el puerto 8080. Luego, puedes actualizar la pestaña Web 8080 para ver una vista previa de la página web.

Expansión del conocimiento

No solo podemos configurar el efecto al pasar el cursor sobre un hipervínculo, sino que también podemos utilizar selectores de pseudo-clases para configurar efectos para hipervínculos no visitados, visitados y seleccionados.

  • a:link {atributo: valor;} configura el efecto para hipervínculos no visitados.
  • a:visited {atributo: valor;} configura el efecto para hipervínculos visitados.
  • a:active {atributo: valor;} configura el efecto para hipervínculos seleccionados.
✨ Revisar Solución y Practicar

Resumen

En este Laboratorio (Lab), aprendimos lo siguiente:

  • Referencias de la biblioteca de iconos Font Awesome
  • Selectores de pseudo-clases de CSS
  • Propiedades de transformación de CSS
  • La propiedad display
  • Selector before

Este Laboratorio (Lab) utiliza CSS para transformar un icono estático en un botón con efectos dinámicos. CSS no solo puede establecer un estilo uniforme para estilos repetitivos para mejorar la eficiencia del desarrollo web, sino que también puede configurar una variedad de elementos según las necesidades de la página web para lograr el propósito de embellecer la página web y mejorar la sensación de uso del usuario.