<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dorian Morones</title>
    <description>The latest articles on DEV Community by Dorian Morones (@dmx).</description>
    <link>https://dev.to/dmx</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F535640%2Fa5a45c35-117f-4671-abd1-86a24dba8081.jpg</url>
      <title>DEV Community: Dorian Morones</title>
      <link>https://dev.to/dmx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dmx"/>
    <language>en</language>
    <item>
      <title>React Custom Tooltip</title>
      <dc:creator>Dorian Morones</dc:creator>
      <pubDate>Sun, 14 Mar 2021 16:52:53 +0000</pubDate>
      <link>https://dev.to/dmx/react-custom-tooltip-128h</link>
      <guid>https://dev.to/dmx/react-custom-tooltip-128h</guid>
      <description>&lt;p&gt;En ocasiones necesitamos dar información al usuario de la acción que ejecutara algún elemento del nuestro sitio web, una de las mejores formas de hacerlo es con un Tooltip.&lt;/p&gt;

&lt;p&gt;Primero debemos escribir el markup de nuestro nuevo tooltip:&lt;/p&gt;

&lt;p&gt;Necesitaremos 4 elementos como props:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;content = sera el contenido a mostrar dentro del tooltip.&lt;/li&gt;
&lt;li&gt;direction = definirá la posición del contenido.&lt;/li&gt;
&lt;li&gt;delay = definirá el tiempo antes de mostrar el contenido.&lt;/li&gt;
&lt;li&gt;children = sera el elemento que accionara el tooltip.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { FunctionComponent, useState } from 'react';

//Styled Components
import {
    TooltipContainer,
    TooltipContent
} from './styles/Tooltip_Styles';

const Tooltip: FunctionComponent&amp;lt;TooltipProps&amp;gt; = ({ 
content, 
direction = 'bottom', 
delay = 300,  
children 
}) =&amp;gt; {

  let timeout;
  const [show, setShow] = useState&amp;lt;boolean&amp;gt;(true);

  const showTip = () =&amp;gt; {
    timeout = setTimeout(() =&amp;gt; {
      setShow(true);
    }, delay);
  };

  const hideTip = () =&amp;gt; {
    clearInterval(timeout);
    setShow(true);
  };

  return (
   &amp;lt;TooltipContainer
   onMouseEnter={showTip}
   onMouseLeave={hideTip}
   &amp;gt;
    {children}
    { show &amp;amp;&amp;amp; (
     &amp;lt;TooltipContent direction={direction}&amp;gt;
      {content}
     &amp;lt;/TooltipContent&amp;gt;
     )
    }
   &amp;lt;/TooltipContainer&amp;gt;
  )
}

export default Tooltip;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro de nuestro tooltip tenemos dos funciones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;showTip: esta función se activara cuando el cursor este sobre el contenedor del tooltip y encargara de mostrar el contenido del tooltip que recibimos en los props, cambiando el estado &lt;code&gt;show&lt;/code&gt; a &lt;code&gt;true&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const showTip = () =&amp;gt; {
    timeout = setTimeout(() =&amp;gt; {
      setShow(true);
    }, delay);
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;hideTip: esta función se activara cuando el cursor salga del contenedor del tooltip y encargara de ocultar el contenido del tooltip, cambiando el estado &lt;code&gt;show&lt;/code&gt; a &lt;code&gt;false&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const hideTip = () =&amp;gt; {
    clearInterval(timeout);
    setShow(true);
  };
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En este punto ya tenemos la lógica para mostrar y ocultar el contenido del Tooltip, pero aún tenemos que definir la posición del contenido, y eso lo haremos con styled-components.&lt;/p&gt;

&lt;p&gt;Pueden agregar los styled-components en el mismo archivo, pero sugiero sea en uno nuevo para tener más ordene en nuestro código.&lt;/p&gt;

&lt;p&gt;En este nuevo archivo definiremos dos componentes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;TooltipContainer: sera el contenedor de todo el tooltip.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TooltipContent: sera el contenedor de la información que mostrara nuestro tooltip y la posición en la que esta información sé mostrar: top, bottom, left, right.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import styled, { css } from 'styled-components';

export const TooltipContainer = styled.div`
  display: inline-block;
  position: relative;
`

export const TooltipContent = styled.div`
  position: absolute;
  border-radius: 4px;
  left: 50%;
  transform: translateX(-50%);
  padding: 6px;
  color: #fff;
  background: #000;
  font-size: 14px;
  font-family: sans-serif;
  line-height: 1;
  z-index: 100;
  white-space: nowrap;
  &amp;amp;:before{
    content: '';
    left: 50%;
    border: solid transparent;
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none;
    border-width: 6px;
    margin-left: calc(6px * -1);
  }
  ${props =&amp;gt; {
    if(props.direction === 'top'){
      return css`
        top: calc(20px * -1);
        &amp;amp;:before {
          top: 100%;
          border-top-color: #000;
        }
      `
    }
    if(props.direction === 'bottom'){
      return css`
        bottom: calc(20px * -1);
        &amp;amp;:before {
          bottom: 100%;
          border-bottom-color: #000;
        }
      `
    }
    if(props.direction === 'left'){
      return css`
        left: auto;
        right: calc(100% + 20px);
        top: 50%;
        transform: translateX(0) translateY(-50%);
        &amp;amp;:before {
          left: auto;
          right: calc(6px * -2);
          top: 50%;
          transform: translateX(0) translateY(-50%);
          border-left-color: #000;
        }
      `
    }
    if(props.direction === 'right'){
      return css`
        left: calc(100% + 20px);
        top: 50%;
        transform: translateX(0) translateY(-50%);
        &amp;amp;:before {
          left: calc(6px * -1);
          top: 50%;
          transform: translateX(0) translateY(-50%);
          border-right-color: #000;
        }
      `
    }
  }}
`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>react</category>
      <category>css</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>5 extensiones de VS Code para frontend</title>
      <dc:creator>Dorian Morones</dc:creator>
      <pubDate>Thu, 07 Jan 2021 20:02:18 +0000</pubDate>
      <link>https://dev.to/dmx/5-extensiones-de-vs-code-para-frontend-597i</link>
      <guid>https://dev.to/dmx/5-extensiones-de-vs-code-para-frontend-597i</guid>
      <description>&lt;p&gt;Durante los últimos 3 años, estuve probando extensiones de VS code para poder facilitar el día a día, y estas son mi top 5 para desarrollo frontend:&lt;/p&gt;

&lt;h4&gt;
  
  
  Turbo Console Log
&lt;/h4&gt;

&lt;p&gt;Esta extensión te permite generar solo con un shortcut "ctrl + alt + L" un &lt;code&gt;console.log&lt;/code&gt; con información importante para ser identificados rápidamente en el explorador.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;🚀 ~ file: example.tsx ~ line 97 ~ handleExample ~ valueExample&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;valueExample&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La estructura es bastante simple, primero el archivo donde está el console.log, la linea del archivo, la función en donde está el archivo y la variable que se asigna al &lt;code&gt;console.log&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=ChakrounAnas.turbo-console-log" rel="noopener noreferrer"&gt;Descargar&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Auto Close Tag
&lt;/h4&gt;

&lt;p&gt;Muchas veces cuando inicias en el desarrollo de frontend (y aun después de varios años) puedes cometer el error de omitir la etiqueta de cierre de un div o algún párrafo, o escribir mal el nombre de la etiqueta de cierre, estos errores al ser tan pequeños son difíciles de encontrar entre tantas lineas de código, Auto Close tag es la solución.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;// Sin Auto Close Tag
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Auto Close Tag&lt;span class="nt"&gt;&amp;lt;/o&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dib&amp;gt;&lt;/span&gt;

// Con Auto Close Tag
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Auto Close Tag&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag" rel="noopener noreferrer"&gt;Descargar&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Auto Rename Tag
&lt;/h4&gt;

&lt;p&gt;Algunas veces necesitamos cambiar etiquetas, por alguna otra, como párrafos por span, o por un, Auto Rename Tag nos ayuda a hacer esto bastante rápido y con muy poco margen de error.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;// Sin Auto Rename Tag
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Auto Close Tag&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dib&amp;gt;&lt;/span&gt;

// Con Auto Rename Tag
&lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Auto Close Tag&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-rename-tag" rel="noopener noreferrer"&gt;Descargar&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Import Cost
&lt;/h4&gt;

&lt;p&gt;Cuando trabajas con algún framework de Javascript, siempre es bueno saber cuando pesa alguna dependencia que estas usando para saber si es la mejor opción, Import Cost te muestra el peso de cada import que tienes en tus archivos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fus9lkz94ijcr1eq40675.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fus9lkz94ijcr1eq40675.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost" rel="noopener noreferrer"&gt;Descargar&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  GitLens — Git supercharged
&lt;/h4&gt;

&lt;p&gt;La ultima y muy útil al trabajar en un equipo de desarrollo es GitLens, te da información sobre la línea de código en que estes situado, como quien la modifico, cuando, el commit en el que se modifico, y link directo a ese commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frwmt4rdb4q1jwy7s2f7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frwmt4rdb4q1jwy7s2f7t.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens" rel="noopener noreferrer"&gt;Descargar&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>spanish</category>
    </item>
    <item>
      <title>CSS Background color en Textos</title>
      <dc:creator>Dorian Morones</dc:creator>
      <pubDate>Wed, 06 Jan 2021 20:22:45 +0000</pubDate>
      <link>https://dev.to/dmx/css-background-color-en-textos-1k63</link>
      <guid>https://dev.to/dmx/css-background-color-en-textos-1k63</guid>
      <description>&lt;p&gt;Los degradados de color en un sitio web son detalles muy llamativos que dan peso a cierta sección, pero no solo podemos utilizarlos como fondo de un contenedor o banner, también podemos agregar un degradado de color a títulos.&lt;/p&gt;

&lt;p&gt;Primero tenemos que definir el texto al que aplicaremos el degradado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"gradient"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Mi super titulo&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Una ves tenemos listo nuestro titulo, solo tenemos que aplicar estilos generales:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;'Lato'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;'Lucida Grande'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;'Lucida Sans Unicode'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Tahoma&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Sans-Serif&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;70px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bold&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;text-transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;uppercase&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para agregar el degradado necesitamos una propiedad de css llamada 'linear-gradient', que se utiliza de la siguiente manera:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;background-image: linear-gradient(direction, color-1, color-stop2, ...);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;direction: es la dirección en la que el degradado trabajara.&lt;/li&gt;
&lt;li&gt;color-1: en color principal o de inicio del degradado.&lt;/li&gt;
&lt;li&gt;color-2: en color secundario o de cierre del degradado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El código con linear-gradient aplicado se vería así:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.gradient&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="nb"&gt;right&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#30CFD0&lt;/span&gt; &lt;span class="m"&gt;30%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#520AAB&lt;/span&gt; &lt;span class="m"&gt;80%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;-webkit-background-clip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;-webkit-text-fill-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resultado:
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/DorianMorones/embed/rNMKjWy?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>spanish</category>
    </item>
    <item>
      <title>Spinner facil y rapido</title>
      <dc:creator>Dorian Morones</dc:creator>
      <pubDate>Tue, 05 Jan 2021 01:28:51 +0000</pubDate>
      <link>https://dev.to/dmx/spinner-facil-y-rapido-5bei</link>
      <guid>https://dev.to/dmx/spinner-facil-y-rapido-5bei</guid>
      <description>&lt;p&gt;Un spinner es un componente muy importante para un sitio web, ya que nos ayudar a dar información al usuario sobre el estatus de nuestra página al realizar la primera carga, o después de una acción del usuario como cambiar de opción en el menú, abrir una galería de imágenes, o enviar un formulario.&lt;/p&gt;

&lt;p&gt;Una forma muy fácil de hacer un spinner o loading es con puro css, de esta manera nos aseguramos que se visualizara y funcionara correctamente en cualquier navegador.&lt;/p&gt;

&lt;p&gt;Primero necesitamos crear un contenedor HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"spinner"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ahora solo necesitamos aplicar los estilos sobre este contenedor, y al ser solo CSS, puedes elegir la manera que más te guste de implementar como CSS, SCSS, styled-components, o cualquier otro:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primero definiremos el tamano de nuestro spinner y agregaremos bordes para que sea un poco más estético:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.spinner&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;36px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;36px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-left-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#7d47ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Una ves tenemos la estructura base de nuestro spinner agregaremos las animaciones, de esta manera haremos saber al usuario que nuestro sitio web sigue funcionando:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.spinner&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;36px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;36px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;50%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-left-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#7d47ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;spin&lt;/span&gt; &lt;span class="m"&gt;1s&lt;/span&gt; &lt;span class="n"&gt;ease&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Una ves agregada la animación

&lt;code&gt;spin&lt;/code&gt;

solo nos queda agregar los pasos de esa animación con

&lt;code&gt;keyframes&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@keyframes&lt;/span&gt; &lt;span class="n"&gt;spin&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;0&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="err"&gt;100&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;transform&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;360deg&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resultado:
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/DorianMorones/embed/BaLxLap?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>loader</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
