<?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: Juan Duque 🐉</title>
    <description>The latest articles on DEV Community by Juan Duque 🐉 (@juan_duque).</description>
    <link>https://dev.to/juan_duque</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%2F690539%2F0c781cda-2a1e-4664-82c7-a73fc85ffab4.jpeg</url>
      <title>DEV Community: Juan Duque 🐉</title>
      <link>https://dev.to/juan_duque</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juan_duque"/>
    <language>en</language>
    <item>
      <title>Como hacer un generador de contraseñas con Python</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Fri, 12 Jan 2024 00:09:01 +0000</pubDate>
      <link>https://dev.to/juan_duque/como-hacer-un-generador-ed-contrasenas-con-python-og2</link>
      <guid>https://dev.to/juan_duque/como-hacer-un-generador-ed-contrasenas-con-python-og2</guid>
      <description>&lt;p&gt;Con esta explicación de cómo crear un generador de contraseñas por terminal busco que el aprendizaje sea práctico y accesible para cualquier persona que quiera aprender un poco más de &lt;strong&gt;Python&lt;/strong&gt; ya con esto agregado podemos comenzar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgy6t1wabus4wjdjc801.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgy6t1wabus4wjdjc801.png" alt="Imagen de una terminal" width="486" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagen de ejemplo cuando generas una contraseña.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Para comenzar con nuestro programa debemos iniciar importando dos módulos de Python llamados: &lt;em&gt;string&lt;/em&gt; y &lt;em&gt;secrets&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1xfocgd74l86dj41uss.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq1xfocgd74l86dj41uss.png" alt="Imagen de codigo en python que muestra como se importan dos modulos" width="536" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En una breve explicación podemos decir que lo que hace el módulo string es proporciona varias constantes y funciones específicas para el manejo de cadenas de texto, pero nosotros solo usaremos las constantes para traer todas las letras en mayúsculas, minúsculas y también poder obtener todos los dígitos del 0 al 9 junto con los caracteres y el módulo secrecets se usa para generar números aleatorios criptográficamente fuertes de este solo vamos a usar &lt;em&gt;choise()&lt;/em&gt; que devuelve un elemento elegido al azar de una secuencia no vacía.&lt;/p&gt;

&lt;p&gt;Para poder usar string de forma cómoda, lo vamos a almacenar todo en una variable, concatenándolas de la siguiente manera.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tt92aseofnv13siwq5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tt92aseofnv13siwq5h.png" alt="Imagen con codigo Python" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;string.ascii_letters&lt;/em&gt;, lo que hace es traerme todas las letras en mayúsculas y minúsculas, esto lo hace concatenado &lt;em&gt;ascii_lowercase&lt;/em&gt; que tiene las letras en minúsculas y &lt;em&gt;ascii_uppercase&lt;/em&gt; que trae las mayúsculas y así me evito de hacer el llamado de ambas constantes por separado.&lt;/p&gt;

&lt;p&gt;El siguiente paso es pedirle al usuario que tan larga quiere su contraseña para luego almacenarla en una variable y convertirlo en un número entero, ya que los inputs en Python siempre son strings.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcko6jzevmrg6gzhd5crg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcko6jzevmrg6gzhd5crg.png" alt="Imagen con codigo en Python" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En este paso yo decidí encapsular el código que genera la contraseña al azar en una función simplemente porque me gusta, pero si quieren pueden simplemente no encapsular su código, ya que es un programa pequeño y no tendrían problemas, ya si quieren reutilizarlo, sí sería adecuado usar la función.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbc6gts2csp7vxwlk0z1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhbc6gts2csp7vxwlk0z1.png" alt="Codigo en Python de un generador de contraseñas" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, cree una función que recibe un argumento (pwd_len) que contiene el numero indicador de la longitud que tendrá la contraseña, además contiene un ciclo &lt;em&gt;for&lt;/em&gt; que se utiliza para recorrer todos los caracteres, dígitos y signos de puntuación para crear la clave dentro del rango deseado y todo es almacenado en una variable que posteriormente será retornada para así imprimirla en la terminal y que se pueda visualizar.&lt;/p&gt;

&lt;p&gt;A pesar de que el ciclo &lt;em&gt;for&lt;/em&gt; es sencillo, lo voy a explicar de una manera que quede claro lo que hace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2h3ugdpxx8fjfhxao0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn2h3ugdpxx8fjfhxao0c.png" alt="Es un ciclo for programado en Python" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui va la explicación punto por punto.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Se crea la variable &lt;em&gt;pwd&lt;/em&gt; que almacenara la clave. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Se inicia un bucle for que se ejecutará las veces de &lt;em&gt;range(pwd_len)&lt;/em&gt;. El valor es definido por el usuario y determina la longitud deseada de la contraseña y lo que está haciendo range() es utilizar el número de esa variable para determinar el rango específico en el que se ejecutara el bucle.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En cada iteración del bucle, se elige aleatoriamente un carácter de la cadena &lt;em&gt;ALL_CHARACTERS&lt;/em&gt; utilizando la función &lt;em&gt;secrets.choice()&lt;/em&gt; y .join() se utiliza para concatenar una secuencia de cadenas en una sola cadena para poder mostrarla en una sola linea. Luego, ese carácter se guarda en la variable &lt;em&gt;pwd&lt;/em&gt; utilizando el operador &lt;em&gt;+=&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finalmente retornamos la variable &lt;em&gt;pwd&lt;/em&gt; para ser impresa.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solo quiero aclarar que en vez de usar el return puedes usar print() y así evitar hacer el llamado de la función para luego encerrarla en un print() para mostrar el resultado y quedando un código más feo visualmente. &lt;/p&gt;

&lt;p&gt;Ya solo queda ejecutar el programa y ver la salida por consola que se vería de la siguiente manera.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn58dlbu0cj9xn8pp9qml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn58dlbu0cj9xn8pp9qml.png" alt="Imagen representativa de una terminal/consola" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como punto final, si quieren mejorar el código para practicar, pueden darle más funcionalidad, dándole la opción de elegir siquiera mayúsculas o no también si quiere números y cosas así, además de manejar los errores como por ejemplo si el usuario se equivoca y no ingresa el número, sino una letra y evitar que al suceder eso el programa te tire un error inentedible para alguien que no sabe leer lo que le dice del fallo y finalice.&lt;/p&gt;

&lt;p&gt;Espero haber podido ayudarlos en su aprendizaje.🤗&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs91psbx081ie47atpk4y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs91psbx081ie47atpk4y.png" alt="Imagen con fondo roza, tringulos de colores un logo de una serpiente muy colorida y con un tiulo y un subtitulo" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>beginners</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Algunos recursos para front-end</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Fri, 14 Jan 2022 23:07:57 +0000</pubDate>
      <link>https://dev.to/juan_duque/algunos-recursos-para-front-end-55i9</link>
      <guid>https://dev.to/juan_duque/algunos-recursos-para-front-end-55i9</guid>
      <description>&lt;p&gt;Normalmente, cuando estás creando un sitio web o un app sueles necesitar algunos recursos que te facilitan todo y puede que te ahorren tiempo, mi intención es compartir algunos de esos recursos que suelo usar para mis proyectos personales y en lo personal me gustan bastante, entonces comenzamos.&lt;/p&gt;




&lt;h1&gt;
  
  
  Paleta de colores
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TjhSmGj7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://64.media.tumblr.com/62c0a162da32658dbcb95d10f78c072f/tumblr_pp7ivfdXNV1tkezr8o4_540.gifv" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TjhSmGj7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://64.media.tumblr.com/62c0a162da32658dbcb95d10f78c072f/tumblr_pp7ivfdXNV1tkezr8o4_540.gifv" alt="Anime haciendo una pintura" width="540" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Una de las cosas más comunes al desarrollar una web sea como proyecto personal o no es tener que elegir una paleta de colores para tus botones, fondos, títulos etc... así que en esta parte les compartiré 2 de páginas que ayudan mucho en esa tarea.&lt;/p&gt;

&lt;h3&gt;
  
  
  Adobe color
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WAB3udto--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6dv4843q0u76owpkm7j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WAB3udto--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6dv4843q0u76owpkm7j.png" alt="página inicial de adobe color" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este sitio es uno de mis favoritos porque tiene varias funcionalidades como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Comprobante de contraste&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Temas para daltónicos&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Colores Análogos&lt;/strong&gt;, &lt;strong&gt;Monocromáticos&lt;/strong&gt;, &lt;strong&gt;Tonos&lt;/strong&gt;, etc..&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tiene más funciones de las que menciones y en general está muy completo.&lt;br&gt;
=&amp;gt; &lt;a href="https://color.adobe.com/es/create/color-wheel"&gt;Adobe color&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Código de colores HTML
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vqqxHUPe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://htmlcolorcodes.com/assets/images/html-color-codes-picker-charts-names-tutorials-resources.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vqqxHUPe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://htmlcolorcodes.com/assets/images/html-color-codes-picker-charts-names-tutorials-resources.jpg" alt="inicio de color html, sitio web" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta fue la primera página web que utilicé para sacar mis paletas de colores y la verdad que tiene cosas muy interesantes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Te permite &lt;strong&gt;convertir&lt;/strong&gt; de &lt;strong&gt;RGBA&lt;/strong&gt; a &lt;strong&gt;Hex&lt;/strong&gt; y viceversa. &lt;/li&gt;
&lt;li&gt;Tiene una sección con tablas de colores muy útiles.&lt;/li&gt;
&lt;li&gt;Hay una parte del sitio web que tiene recursos a otras páginas web relacionadas con los colores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esta posee otros detalles interesantes así que les recomiendo que le dediquen unos minutos a examinarla.&lt;br&gt;
=&amp;gt; &lt;a href="https://htmlcolorcodes.com/es/selector-de-color/"&gt;htmlcolorcode&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Fuentes (tipo grafía)
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0KgnEoAF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.pinimg.com/originals/73/2c/93/732c9365b62e5a832d2b2f9fba760c85.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0KgnEoAF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.pinimg.com/originals/73/2c/93/732c9365b62e5a832d2b2f9fba760c85.gif" alt="Es un anime en el cual se ve una hoja y alguien escribiendo en ella" width="540" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Las fuentes suelen pasan desapercibidas, pero son de lo más importante porque ayudan a transmitir la esencia de tu web, además de que si eliges una pésima tipo grafía puede que tus textos o títulos sean difíciles de leer para los usuarios o simplemente el título tenga una tipo grafía muy que no encaja con el texto o tu sitio en general, ya si tu logo es un logotipo es otro tema aparte, les voy a compartir dos sitios que te ayudan a elegir de la forma más adecuada posible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Font Pair
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hM9S4cza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3m2tghmsue7532bdv7w4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hM9S4cza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3m2tghmsue7532bdv7w4.png" alt="página web relacionada con tipo grafía" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tiene una serie de recursos muy buenos, pero solo mencionaré algunos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Combinaciones de fuentes entre títulos y el texto, con ejemplos.&lt;/li&gt;
&lt;li&gt;Imágenes para inspirarte&lt;/li&gt;
&lt;li&gt;Recomendación de fuentes populares&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todas las fuentes se pueden descargar y usar para que lo uses sin problemas, ya que estas son fuentes que vienen de Google fonts.&lt;br&gt;
=&amp;gt; &lt;a href="https://www.fontpair.co/"&gt;Fontpair&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Google Fonts
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9NcrcM5A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/09y18k9m7o07xwv3eswn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9NcrcM5A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/09y18k9m7o07xwv3eswn.png" alt="Página inicial de google fonts" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hay poco que decir de este servicio (creo yo tan conocido), en general es bastante bueno las licencias que tiene es de software libre y tiene incluso iconos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1357&lt;/strong&gt; familias de fuentes.&lt;/li&gt;
&lt;li&gt;Tiene una sección llamada &lt;strong&gt;Knowledge&lt;/strong&gt; que te explica algunos temas relacionados.&lt;/li&gt;
&lt;li&gt;Te permite descargar la fuente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Es un sitio web bastante sencillo, pero útil y hay otros que le sacan provecho como lo hace &lt;strong&gt;font pair&lt;/strong&gt;.&lt;br&gt;
=&amp;gt; &lt;a href="https://fonts.google.com/"&gt;Google fonts&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Imágenes
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LBcvgVZ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.pinimg.com/originals/b4/6c/d0/b46cd069a1837a0a881fe9b45bae456f.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LBcvgVZ5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.pinimg.com/originals/b4/6c/d0/b46cd069a1837a0a881fe9b45bae456f.gif" alt="paisaje pixelart" width="688" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conseguir buenas imágenes para poder usar sin tener que estar pagando por cada una con la posibilidad de que al final no te guste y no la uses jamás suena a estar desperdiciando dinero y por eso voy a compartir dos webs bastante buenas para solventar ese problema.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pexels
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q6IW6d1e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gw1b5id4fw0d1oe7x9wn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q6IW6d1e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gw1b5id4fw0d1oe7x9wn.png" alt="Inicio de página de imágenes" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lo que me gusta de este banco de imágenes es que tiene un gran variedad de fotografías, las imágenes son completamente gratuitas y no es necesario mencionar el autor aunque no estaría mal hacerlo, ya que nos la proporciona sin ningún costo y no sería difícil mencionar a la persona.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tiene &lt;strong&gt;videos&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Posee un apartado de retos en la cual puedes ganar premios.&lt;/li&gt;
&lt;li&gt;Variedad de &lt;strong&gt;imágenes&lt;/strong&gt; y &lt;strong&gt;fotos&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dado que las imágenes son de dominio público no hay limitante a lo que se puede hacer con ellas, aun así les recomiendo leer la licencia que tienen Pexels.&lt;br&gt;
=&amp;gt; &lt;a href="https://www.pexels.com/es-es/"&gt;Pexels&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Unsplash
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NEqNlvSG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32085183utz38869ott7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NEqNlvSG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32085183utz38869ott7.png" alt="inicio en la página de unsplash" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unsplash&lt;/strong&gt; tiene más de 2 millones de fotos y suele ser nombrado como uno de los principales sitios web de fotográfica, personalmente es el que uso.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ofrece un explorador muy completo por categorías. &lt;/li&gt;
&lt;li&gt;Posee diferentes productos. &lt;/li&gt;
&lt;li&gt;Una comunidad muy amplia de fotógrafos que constante actualizan el banco de imágenes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El uni, pero que podría tener es que ellos tienen una licencia con su mismo nombre &lt;strong&gt;Unsplash&lt;/strong&gt; que te limita a no poder compilarlas y venta en forma de impresiones, desde mi punto de vista, una licencia bastante lógica, el punto bueno es que si las puedes utilizar con fines comerciales.&lt;br&gt;
=&amp;gt; &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Iconos, Ilustraciones
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uce6HKDv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://64.media.tumblr.com/2bd781e50eaf72e83cec59d371ae2070/tumblr_orpgyystZC1r2pvg2o1_540.gifv" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uce6HKDv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://64.media.tumblr.com/2bd781e50eaf72e83cec59d371ae2070/tumblr_orpgyystZC1r2pvg2o1_540.gifv" alt="Anime femenino sonriendo" width="540" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De las cosas más comunes y que empleas con más frecuencia son los iconos para dejar claro el funcionamiento de ciertos botones o simplemente utilizar ilustraciones SBG para dejar bonito alguna parte de tu página web, a aquí tendrán dos sitios de donde suele sacar esas ilustraciones e iconos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Undraw
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--saEI9mQ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfj1os2ft7awpyf19zs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--saEI9mQ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/etfj1os2ft7awpyf19zs.png" alt="Página web de ilustraciones svg" width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;unDraw&lt;/strong&gt; tiene ilustraciones open source y son completamente gratuitas sin necesidad de atribución y es una chica que lo hace bastante bien así que dejo su Twitter &lt;a href="https://twitter.com/ninaLimpi"&gt;Katerina Limpitsouni&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SVG&lt;/li&gt;
&lt;li&gt;Aún se actualiza&lt;/li&gt;
&lt;li&gt;Gran variedad de ilustraciones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Estas ilustraciones son bastante populares y con buen motivo.&lt;br&gt;
=&amp;gt; &lt;a href="https://undraw.co/"&gt;unDraw&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DrawKit
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3lL3rrsC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/841pigub3mntpm1d9k0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3lL3rrsC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/841pigub3mntpm1d9k0e.png" alt="Imagen descripción" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Posee ilustraciones gratuitas y de pago, algo interesante es que te permite solicitar un trabajo específico al desarrollador de alguna ilustración.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ilustraciones profesionales gratuitas.&lt;/li&gt;
&lt;li&gt;Posee iconos.&lt;/li&gt;
&lt;li&gt;Tiene unas votaciones para elegir la próxima ilustración gratuita.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Personalmente tienen algunas me gustan ilustraciones que  muchísimo y la recomiendo.&lt;br&gt;
=&amp;gt; &lt;a href="https://drawkit.com/"&gt;DrawKit&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Espero que les haya gustado, si conocen algunas más interesantes no duden en comentarlas y no duden en seguirme en mis redes&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/juan_ariasd"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/jpariasduque/"&gt;Linkedin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://linktr.ee/Boudgnosis"&gt;Linktr&lt;/a&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3S749lga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://c.tenor.com/uDviGvD1FKAAAAAM/nyochio-d4dj.gif" alt="todo bien" width="220" height="199"&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>design</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Como animar un corazón con keyframes (Básico)</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Mon, 03 Jan 2022 22:05:47 +0000</pubDate>
      <link>https://dev.to/juan_duque/como-animar-un-corazon-con-keyframes-basico-fbe</link>
      <guid>https://dev.to/juan_duque/como-animar-un-corazon-con-keyframes-basico-fbe</guid>
      <description>&lt;p&gt;Mi intención con esto es explicar como animar el corazón sin tener que dibujarlo con CSS3, en este caso es solo importar un icono o una imagen, esto va más que todo orientado a las personas que están comenzando a probar keyframes ya posteriormente en otro post explicaré como crear el corazón con puro CSS.&lt;br&gt;
Empezamos con lo más simple de todo, el HTML, en este caso yo estare importando de &lt;a href="https://fontawesome.com/"&gt;Font Awesome&lt;/a&gt; y tomando este icono &lt;code&gt;&amp;lt;i class="fas fa-heart"&amp;gt;&amp;lt;/i&amp;gt;&lt;/code&gt; con esto ya tendremos el HTML.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7I2PLs2D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/672zv2pl52vgnl9khrwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7I2PLs2D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/672zv2pl52vgnl9khrwq.png" alt="Imagen en con fondo blanco y un corazón negro en la esquina superior izquierda" width="548" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora, como soy medio flojo agarre un color gradiente de una página web llamada &lt;a href="https://cssgradient.io/"&gt;CSS Gradient&lt;/a&gt; y seleccione el que más me gusto, ustedes pueden hacer lo mismo, luego al &lt;strong&gt;body&lt;/strong&gt; le di estos estilos para poder centrar el elemento. &lt;br&gt;
&lt;code&gt;height: 100vh;&lt;br&gt;
  display: flex;&lt;br&gt;
  justify-content: center;&lt;br&gt;
  align-items: center;&lt;/code&gt;&lt;br&gt;
Hasta este momento vamos de esta forma:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aKhwMML5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bels0kog96k7xad61uj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aKhwMML5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bels0kog96k7xad61uj9.png" alt="Imagen con un corazón en el centro de la pantalla de color negro con un fondo que tiene un color gradiente" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Siguiendo con el corazón, usaré la clase que ya trae cuando importamos el icono para así darle su estilo y luego poder animarlo.&lt;br&gt;
Solo le daremos dos estilos a la clase &lt;br&gt;
&lt;code&gt;.fa-heart {&lt;br&gt;
  font-size: 6rem;&lt;br&gt;
  color: #ee2130;&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ya tenemos un corazón.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uUZ4Yva_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ewbchjxs3x8yvkn1rl1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uUZ4Yva_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ewbchjxs3x8yvkn1rl1.png" alt="Corazón rojo en medio de la pantalla y el fondo es de un color gradiente" width="750" height="506"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Pasemos a la etapa final que es animarlo para que parezca que está latiendo.&lt;br&gt;
Para poder usar el keyframe necesitamos darle un nombre al corazón dentro del &lt;strong&gt;CSS&lt;/strong&gt; utilizando la misma clase anterior.&lt;br&gt;
También le indicaremos que la animación dure 1s y que se repita de forma infinita.&lt;br&gt;
&lt;code&gt;.fa-heart {&lt;br&gt;
  font-size: 6rem;&lt;br&gt;
  color: #ee2130;&lt;br&gt;
  animation-name: heart;&lt;br&gt;
  animation-duration: 1s;&lt;br&gt;
  animation-iteration-count: infinite;&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
Sigamos ahora con el keyframe y le diremos que cuando tenga un 25% tenga una propiedad transform y que escale 1.2 su tamaño original.&lt;br&gt;
&lt;code&gt;@keyframes heart {&lt;br&gt;
    5% {&lt;br&gt;
        transform: scale(1.2);&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Ya con esto parecerá que está latiendo como un corazón normal, como pueden ver es algo sencillo y para nada difícil emplear una animación bien simple.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Pueden seguirme en mis redes sociales por este enlace.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/juan_ariasd"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codepen.io/boudgnosis"&gt;Codepen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linktr.ee/Boudgnosis"&gt;Linktr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;El banner que use &lt;a href="https://unsplash.com/@pankajpatel?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Pankaj Patel&lt;/a&gt; está en la plataforma de &lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;br&gt;
y la imagen puntualmente es esta: &lt;a href="https://unsplash.com/photos/SXihyA4oEJs"&gt;banner&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>css</category>
      <category>animacion</category>
    </item>
    <item>
      <title>Como crear un formulario de registro (3/3)</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Sun, 02 Jan 2022 22:58:59 +0000</pubDate>
      <link>https://dev.to/juan_duque/como-crear-un-formulario-de-registro-33-11p9</link>
      <guid>https://dev.to/juan_duque/como-crear-un-formulario-de-registro-33-11p9</guid>
      <description>&lt;p&gt;Hola, con esta publicación estaremos finalizando toda la maquetación del formulario, en esta parte final lo que haré para no estar alargando mucho es estar dando una serie de estilos y posteriormente explicarlos, también estaré dejando imágenes de como va que dando.^_^&lt;/p&gt;

&lt;h1&gt;
  
  
  Parte uno:
&lt;/h1&gt;

&lt;p&gt;Lo que hice inicialmente fue darle un color gradiente al fondo y el contenedor principal que contiene a la imagen y al formulario le di los siguientes estilos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alto y ancho: &lt;strong&gt;540px 600px&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Un color de fondo para que el formulario se separe del fondo: &lt;strong&gt;#4b6464&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Una sombra para que tenga un relieve interesante y no parezca pegado al fondo: &lt;strong&gt;box-shadow: 2px -1px 13px -2px rgba(0, 0, 0, 0.5);&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;border-radius: 7px;&lt;/strong&gt; porque me gusta como suaviza todo el formulario y no se ve tan tosco y anticuado.&lt;/li&gt;
&lt;li&gt;Tiene un posicionamiento relativo para poder que el contenedor y la imagen se rendericen de forma correcta, ya que si no le coloco el posicionamiento al contenedor no podre usar el position absolute en el contenido porque se estarían desbordando y se verían como dos bloques uno abajo del otro y no es lo que queremos en este caso.&lt;/li&gt;
&lt;li&gt;Para centrarlo en el &lt;strong&gt;body&lt;/strong&gt; solo, use margin:70px auto
Al &lt;strong&gt; que contiene la imagen le di un ancho de 50% para que solo ocupe la mitad del padre y un alto del 100% para que ocupe toda la altura que este disponible, tambien le di el posicionamiento absolute (esto lo aclaro en los puntos anteriores), el formulario comparte los mismos estilos efectuando uno en el que le pido que se mueva la mitad del contenedor hacia la izquierda que sería el form.


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--19nVSrXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klzxyxxfk2ev2nyssbv9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--19nVSrXE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klzxyxxfk2ev2nyssbv9.png" alt="Codigo css explicado" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pEY80ei6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qrbpdyvl66rp5ghwqxu3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pEY80ei6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qrbpdyvl66rp5ghwqxu3.png" alt="Formulario sin todos los estilos css" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Parte dos:
&lt;/h1&gt;

&lt;p&gt;Continuamos dando estilos, en este caso vamos a acomodar mejor todos esos label e inputs colocando un display flex al &lt;/p&gt;, flexdirection colunm y por último centrar verticalmente, también le doy el color, ya que este puede ser heredado y no tener que cambiar el color del texto por cada elemento que quiera.&lt;br&gt;
A los label les di un margen hacia la izquierda y convertí su contenido utilizando capitalize, al título del formulario lo centré y lo convertí todo en mayúsculas con text-transform.&lt;br&gt;
En los inputs solamente coloco un margen de 7px a los lados y 16px en el eje vertical.&lt;br&gt;
El botón le cambie la altura y el ancho, también le quite el border y le di un border radius junto con cursor pointer para que cuando coloques el clic sobre el btn aparezca la manito, siguiendo con el btn le di un margen de 8px vertical centre horizontalmente y le quite el margin de bottom, por último le entregue un sombreado. El párrafo exclusivamente lo centré y a la etiqueta &amp;lt; a &amp;gt; le cambia el color.&lt;br&gt;
Como último estilo que le daremos será importar una fuente que les guste, en mi caso yo importo la fuente llamada Poppins.&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9qIQK8Is--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5lhkt2vzrpcu6y7ar1hg.png" alt="Image description" width="800" height="450"&gt;&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yUgE1jNx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c5w2zyft0lahp76faooj.png" alt="Image description" width="800" height="450"&gt;&lt;br&gt;
El resultado final sería el siguiente:&lt;br&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CLU1WT-C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjm6l5ug1sey3fm7xgw6.png" alt="Image description" width="800" height="578"&gt;



&lt;p&gt;&lt;strong&gt;Parte 1:&lt;/strong&gt; &lt;a href="https://dev.to/juan_duque/como-crear-un-formulario-de-registro-13-21lk"&gt;Como crear un formulario de registro (1/3)&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;parte 2:&lt;/strong&gt; &lt;a href="https://dev.to/juan_duque/como-crear-un-formulario-de-registro-23-1mo7"&gt;Como crear un formulario de registro (2/3)&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Link al formulario que está en &lt;a href="https://codepen.io/boudgnosis/full/VwMeeVy"&gt;Codepen&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Pueden seguirme en mis redes sociales por este enlace.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/juan_ariasd"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codepen.io/boudgnosis"&gt;Codepen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linktr.ee/Boudgnosis"&gt;Linktr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;img formularios: Photo by Cash Macanaya on Unsplash - &lt;a href="https://unsplash.com/photos/dMtlbRYVDZo"&gt;https://unsplash.com/photos/dMtlbRYVDZo&lt;/a&gt;&lt;/p&gt;

&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>css</category>
      <category>formularios</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Como crear un formulario de registro (2/3)</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Tue, 07 Dec 2021 01:50:28 +0000</pubDate>
      <link>https://dev.to/juan_duque/como-crear-un-formulario-de-registro-23-1mo7</link>
      <guid>https://dev.to/juan_duque/como-crear-un-formulario-de-registro-23-1mo7</guid>
      <description>&lt;p&gt;Hola, continuamos con la parte de crear las etiquetas HTML5, antes de comenzar les informo que el código del formulario esta al final en CodePen para que puedan copiarlo y verlo.&lt;br&gt;
Lo primero que aran es crear la carpeta donde van a guarda su trabajo y dentro de esta crearemos el archivo con la extensión &lt;strong&gt;.html&lt;/strong&gt;, yo puntualmente le daré el nombre de 'index', quedaría así &lt;strong&gt;index.html&lt;/strong&gt;, como último paso simplemente creamos la estructura básica de HTML como muestro en la imagen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_NGwc6ai--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a974ee6758p9the9h0tb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_NGwc6ai--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a974ee6758p9the9h0tb.png" alt="Estructura básica de HTML5" width="800" height="433"&gt;&lt;/a&gt;&lt;br&gt;
Pasamos a crear los contenedores para poder colocar todo el contenido que necesitamos, antes de continuar quiero aclarar que las etiquetas no las voy a explicar, si siento necesario estaré explicando cosas puntuales para no extenderme y volver a explicar cosas que ya mencione en la anterior publicación, también de aquí en adelante las imágenes con el html no se mostrara la estructura básica para que se puedan concentrar en lo importante, pero se sobreentiende que todas van dentro de &lt;strong&gt;body&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cdxFslsX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kr731l2gpz7ez2ehd5xq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cdxFslsX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kr731l2gpz7ez2ehd5xq.png" alt="Imagen que muestra las etiquetas main, div y form, cada una de ellas posee una clase" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Ahora el siguiente paso es agregar los campos al &lt;strong&gt;form&lt;/strong&gt; para que nuestro formulario vaya tomando forma, por lo menos a nivel de estructura HTML, lo que vamos hacer escrear un &lt;strong&gt;h2&lt;/strong&gt; como titulo y como texto le pondremos &lt;strong&gt;'Regístrate'&lt;/strong&gt; , también pueden colocarle otro si quieren, el próxima paso es crear cuatro inputs, el primero con el valor &lt;strong&gt;text&lt;/strong&gt;, el segundo con &lt;strong&gt;email&lt;/strong&gt; y  los ultimos dos tienen que ser &lt;strong&gt;password&lt;/strong&gt;, a cada uno se le asignara un &lt;strong&gt;label&lt;/strong&gt;, lo siguiente es crear el botón con el texto &lt;strong&gt;Aceptar&lt;/strong&gt;, por ultimo crearemos una etiqueta &lt;strong&gt;p&lt;/strong&gt; que contenga un pequeño texto preguntando si tiene cuenta y si la tiene abra otro texto en el cual podra dar click en una etiqueta &lt;strong&gt;a&lt;/strong&gt; para que lo lleve a 'otra página'.&lt;br&gt;
Quiero aclarar tres atributos que coloque y no explique anterior mente.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;required:&lt;/strong&gt; Hace que el campo no pueda estar vacío.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;placeholder:&lt;/strong&gt; Es simplemente el texto que aparece como fondo en un input y que al dar clic desaparece.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;minlength:&lt;/strong&gt; Este limita la cantidad mínima de caracteres que puede tener un campo, el valor se determina según la necesidad, en este caso es para ayudar al usuario a elegir una contraseña un poco mas segura.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FddiGV77--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p9rm48tw78x1hpjb09p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FddiGV77--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4p9rm48tw78x1hpjb09p.png" alt="Imagen que muestra las etiquetas div y img en una estructura html" width="800" height="422"&gt;&lt;/a&gt;&lt;br&gt;
Pasamos a la parte final en la cual agregamos una imagen, puede elegir la que ustedes quieran, lo que vamos a hacer es generar un &lt;strong&gt;div&lt;/strong&gt; por fuera del form, pero dentro de la etiqueta main y le damos un nombre a la clase para luego llamarlo y darle estilos, dentro de este &lt;strong&gt;div&lt;/strong&gt; colocamos nuestra etiqueta &lt;strong&gt;img&lt;/strong&gt; y la ruta relativa de la imagen que van a usar, que daría de esta forma.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uH5FvRBl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8q37cv6r37oxcdr52mrm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uH5FvRBl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8q37cv6r37oxcdr52mrm.png" alt="Imagen que muestra un formulario y una imagen sin estilos css" width="800" height="252"&gt;&lt;/a&gt;&lt;br&gt;
Lo que tenemos hasta ahora seria esto.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AqVbn-UL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2zkmg7ggx7qmr30igku2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AqVbn-UL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2zkmg7ggx7qmr30igku2.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Con esto estamos terminando esta parte y pasamos a la siguiente que seria darle estilo.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Pueden seguirme en mis redes sociales por este enlace.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/juan_ariasd"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linktr.ee/Boudgnosis"&gt;Linktr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Parte 1:&lt;/strong&gt; &lt;a href="https://dev.to/juan_duque/como-crear-un-formulario-de-registro-13-21lk"&gt;Como crear un formulario de registro (1/3)&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Parte 2:&lt;/strong&gt; &lt;a href="https://dev.to/juan_duque/como-crear-un-formulario-de-registro-33-11p9"&gt;Como crear un formulario de registro (3/3)&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Páginas para que puedan descargar imágenes gratuitas&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pixabay.com/es/"&gt;Pixabay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://unsplash.com/"&gt;Unsplash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>html</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Como crear un formulario de registro (1/3)</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Sun, 05 Dec 2021 22:39:11 +0000</pubDate>
      <link>https://dev.to/juan_duque/como-crear-un-formulario-de-registro-13-21lk</link>
      <guid>https://dev.to/juan_duque/como-crear-un-formulario-de-registro-13-21lk</guid>
      <description>&lt;p&gt;Hola, voy a estar explicar algunas etiquetas que vamos a utilizar para crear un formulario y posteriormente maquetar además les dejaré los enlaces a la documentación al final del post junto con el link a la página con la cual hice las imágenes de los fragmentos de HTML5.&lt;br&gt;
Para no alargar mucho el post lo he dividido en tres partes: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explicación de las etiquetas con las cuales vamos a trabajar. &lt;/li&gt;
&lt;li&gt;Como estructurar el formulario.&lt;/li&gt;
&lt;li&gt;Dar estilo con css&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Etiqueta: form
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDUaYAUj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arp8jmynd2564nojkbwx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDUaYAUj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/arp8jmynd2564nojkbwx.png" alt="Imagen con la etiqueta form y sus dos atributos" width="738" height="408"&gt;&lt;/a&gt;&lt;br&gt;
Esta primer etiqueta que veremos es un contenedor que define formalmente un formulario, me refiero a &lt;strong&gt;form&lt;/strong&gt; como un contenedor que específica y delimita el formulario, pero también puede contener cualquier otro elemento como: imágenes, listas, títulos etc.&lt;br&gt;
Como pueden ver en la imagen esta etiqueta posee dos atributos, &lt;strong&gt;action&lt;/strong&gt; y &lt;strong&gt;method&lt;/strong&gt;, estos son los más importantes, voy a explicarlos de forma simple, ya que no le vamos a dar un uso real en este ejemplo.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;action:&lt;/strong&gt; Contiene el nombre del agente que procesará los datos remitidos al servidor (ejemplo: un script de PHP, Python u otro lenguaje orientado al backend).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;method:&lt;/strong&gt; Define la manera de enviar los datos al servidor con los valores get y post.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Etiqueta: label
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w_1naLSa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qix3c0i5gn2nckjmgm9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w_1naLSa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qix3c0i5gn2nckjmgm9o.png" alt="Etiqueta label con su atributo for" width="672" height="408"&gt;&lt;/a&gt;&lt;br&gt;
Lo que hace esta etiqueta es bastante simple, pero importante para la accesibilidad, sirve para asociar un elemento con el atributo &lt;strong&gt;for&lt;/strong&gt;, también puedes contenerlos dentro de la misma etiqueta para poder identificarlos fácilmente.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;for:&lt;/strong&gt; Toma el &lt;strong&gt;ID&lt;/strong&gt; como valor para poder estar asociado.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Etiqueta: input
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4__GapXY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uk0trvphm53dn38lx6zj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4__GapXY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uk0trvphm53dn38lx6zj.png" alt="Etiqueta input con su atributo type" width="552" height="408"&gt;&lt;/a&gt;&lt;br&gt;
Lo que permite es crear un campo en el cual ingresas la información que este solicite, el comportamiento depende de los valores que se le otorguen al atributo &lt;strong&gt;type&lt;/strong&gt;.&lt;br&gt;
Dada la multiplicidad de valores que tiene &lt;strong&gt;type&lt;/strong&gt; solo explicaré los que usaremos en el formulario, cabe aclarar que hay más valores, pero para simplificar este post no voy a explicarlos.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;password:&lt;/strong&gt; Específico para contraseñas, ya que a la hora de escribir solo se verán puntos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;email:&lt;/strong&gt; Específico para direcciones de correo electrónico.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;text:&lt;/strong&gt; Simplemente representa una entrada de texto normal. &lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Etiqueta: a
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VHp3rYV0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0rsjpvsivsozou5oqx60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VHp3rYV0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0rsjpvsivsozou5oqx60.png" alt="Etiqueta a con su atributo href" width="552" height="408"&gt;&lt;/a&gt;&lt;br&gt;
Lo que te permite esta etiqueta es crear un enlace a otras páginas, dentro o fuera del mismo sitio web, el atributo que  tiene es &lt;strong&gt;href&lt;/strong&gt; y el valor que se le otorga es la dirección de alguna otra página.&lt;/p&gt;

&lt;h1&gt;
  
  
  Etiqueta: button
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZuACA-3_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bwe8dh2kveahro9d7p11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZuACA-3_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bwe8dh2kveahro9d7p11.png" alt="Etiqueta button con su atributo type" width="722" height="410"&gt;&lt;/a&gt;&lt;br&gt;
El elemento button también tiene el atributo type y se le pueden otorgar tres valores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;submit:&lt;/strong&gt; que envía los datos del formulario por action de la etiqueta form.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;reset:&lt;/strong&gt; restablece el formulario.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;button:&lt;/strong&gt; lo que permite es crear botones personalizados  con JavaScript.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Etiqueta: main
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GoICAsrq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tb5uljag40a77jyjqwb5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GoICAsrq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tb5uljag40a77jyjqwb5.png" alt="Etiqueta main" width="520" height="410"&gt;&lt;/a&gt;&lt;br&gt;
La etiqueta &lt;strong&gt;&lt;/strong&gt; lo que hace es representar el contenido principal del body, no debe ser un elemento descendiente de elementos que no permitan el &lt;strong&gt;flow content&lt;/strong&gt;.&lt;br&gt;
No tiene atributos propios, pero puede usar los globales.&lt;/p&gt;

&lt;h1&gt;
  
  
  Etiqueta: p
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IywQxqci--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65t305degasnzslxtnt1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IywQxqci--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65t305degasnzslxtnt1.png" alt="Etiqueta p" width="418" height="410"&gt;&lt;/a&gt;&lt;br&gt;
Es una etiqueta que simplemente identifica un texto como párrafo y no posee atributos propios, su contenedor sería un bloque.&lt;/p&gt;

&lt;h1&gt;
  
  
  Etiqueta: div
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0rjw3rLN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2giu99d7cxmgw383ny83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0rjw3rLN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2giu99d7cxmgw383ny83.png" alt="Etiqueta div" width="486" height="410"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt; Es un contenedor genérico que es definido como un elemento en bloque, posee tres atributos propios, pero no los estaré explicando porque no los vamos a usar y simplemente se los mencionaré para que sepan que existen, básicamente son estos tres: &lt;strong&gt;datasrc&lt;/strong&gt;, &lt;strong&gt;datafld&lt;/strong&gt;, &lt;strong&gt;dataformatas&lt;/strong&gt;, al final de este blog les dejaré los enlaces a la documentación para que puedan investigar por su cuenta.
&lt;h1&gt;
  
  
  Etiqueta: img
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H8tXQFy---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6j0byldw756v843nw115.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H8tXQFy---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6j0byldw756v843nw115.png" alt="Etiqueta img con su atributo obligatorio src" width="502" height="410"&gt;&lt;/a&gt;&lt;br&gt;
Esta etiqueta lo que hace es representar una imagen en el documento HTML y posee un atributo obligatorio llamado &lt;strong&gt;src&lt;/strong&gt;, estaré explicando este y dos atributos más que usaremos para esta etiqueta, ya que son muy importantes para la accesibilidad.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;src:&lt;/strong&gt; Este es un atributo obligatorio porque tiene como valor la ruta de la imagen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;alt:&lt;/strong&gt; Representa un texto alternativo en caso de que la imagen no llegue a cargarse por algún motivo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;title:&lt;/strong&gt; Es el título de la imagen y este se ve cuando posas el clic sobre la imagen.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Con estas etiquetas y sus respectivos atributos, podremos pasar a darle una estructura al formulario.&lt;br&gt;
Espero que la explicación esté clara y si llega surgir alguna duda pueden comentarla y trataré de responder.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;parte 2:&lt;/strong&gt; &lt;a href="https://dev.to/juan_duque/como-crear-un-formulario-de-registro-23-1mo7"&gt;Como crear un formulario de registro (2/3)&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Parte 3:&lt;/strong&gt; &lt;a href="https://dev.to/juan_duque/como-crear-un-formulario-de-registro-33-11p9"&gt;Como crear un formulario de registro (3/3)&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Pueden seguirme en mis redes sociales por este enlace.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/juan_ariasd"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linktr.ee/Boudgnosis"&gt;Linktr&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Enlaces a la documentación de mozilla&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/div"&gt;div&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/main"&gt;main&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/form"&gt;form&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/label"&gt;label&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/input"&gt;input&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/button"&gt;button&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/a"&gt;a&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/p"&gt;p&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/es/docs/Web/HTML/Element/img"&gt;img&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Página para dejar fragmentos de código bonitos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://carbon.now.sh/"&gt;Carbon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>html</category>
      <category>formulario</category>
      <category>dessarrollo</category>
      <category>web</category>
    </item>
    <item>
      <title>Como escalar una imagen para reducir su tamaño con Gimp</title>
      <dc:creator>Juan Duque 🐉</dc:creator>
      <pubDate>Sun, 12 Sep 2021 23:46:09 +0000</pubDate>
      <link>https://dev.to/juan_duque/como-escalar-una-imagen-para-reducir-su-tamano-con-gimp-1o0i</link>
      <guid>https://dev.to/juan_duque/como-escalar-una-imagen-para-reducir-su-tamano-con-gimp-1o0i</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RF12YV8a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8trwscf2em3qw5gxi0y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RF12YV8a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a8trwscf2em3qw5gxi0y.jpg" alt="Alt Text" width="800" height="310"&gt;&lt;/a&gt;&lt;br&gt;
Hola, hoy voy a explicar de una forma sencilla como escalar una imagen para poder reducir el tamaño de las imágenes y así utilizarlas en tu proyecto sin que afecten el rendimiento de tu sitio web.&lt;br&gt;
Para este ejemplo estare usando esta imagen que saque de pixabay:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r8dtZMji--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8md3q8tuvf7jqgmnunru.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r8dtZMji--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8md3q8tuvf7jqgmnunru.jpg" alt="Alt Text" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
Les dejo el link de la imagen original por si desean descargarla: &lt;a href="https://pixabay.com/es/photos/cyberpunk-calle-ciudad-plataforma-6061251/"&gt;https://pixabay.com/es/photos/cyberpunk-calle-ciudad-plataforma-6061251/&lt;/a&gt;&lt;br&gt;
El primer paso de todos y el más importante es abrir Gimp 😆 ya abierto vamos a la pestaña de archivo o file si lo tienen en inglés como yo y seleccionan abrir-(open)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2GsWA6X4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar1yo77hdl5eqmieh1l4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2GsWA6X4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar1yo77hdl5eqmieh1l4.png" alt="Alt Text" width="800" height="459"&gt;&lt;/a&gt;&lt;br&gt;
Al seleccionar abrir les abrirá una ventana en la cual tendrán que buscar donde tienen guardado su archivo&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4vL8vKvQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6o4yxu90ui5891b08av.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4vL8vKvQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e6o4yxu90ui5891b08av.png" alt="Alt Text" width="800" height="539"&gt;&lt;/a&gt;&lt;br&gt;
Como notaran la ventana que se me abre a mí es diferente a la de ustedes si usan Windows, ya que mi sistema operativo es Ubuntu.&lt;br&gt;
La imagen se verá de esta forma es Gimp&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AhEAQEyP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/20dg4xrjcd22wamzxvdo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AhEAQEyP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/20dg4xrjcd22wamzxvdo.png" alt="Alt Text" width="800" height="462"&gt;&lt;/a&gt;&lt;br&gt;
El siguiente paso es ir a la pestaña de imagen-(image) y seleccionar Escalar imagen-(Scale image)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U2hfzoss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9icxrjfbiip5n8r1vmnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U2hfzoss--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9icxrjfbiip5n8r1vmnf.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;br&gt;
en ese momento se les abrirá una ventana en la cual podrán colocar un width-(ancho) y un height-(alto) si quieren un tamaño especial, tengan en cuenta que al hacerlo de esa forma la imagen puede quedar deformada si no colocan una proporción adecuada.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nBRHBR2k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wh728gpd52a9m34lzajs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nBRHBR2k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wh728gpd52a9m34lzajs.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;br&gt;
Como verán la imagen que estoy utilizando tiene un tamaño bastante grande, lo que voy a hacer es cambiar solo el width y el programa va a mantener el height en la escala correcta para que la imagen no se distorsione.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kd-fQh3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1en2tihmhv55b1ieba8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kd-fQh3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q1en2tihmhv55b1ieba8.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;br&gt;
Notarán que le di un ancho a mi imagen de 900px y Gimp automáticamente me dio un alto de 563px para que la imagen se mantenga sin distorsión, posteriormente le dan a escalar y la imagen se reducirá, la imagen se vera pequeña pero es solo darle un pequeño zoom (Le di uno de 50%) para puedan verla mejor&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--08-_c82M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iqkqql3fx5v1f7doagej.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--08-_c82M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iqkqql3fx5v1f7doagej.png" alt="Alt Text" width="800" height="458"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vdgkhlx3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rqa3vesc7fct1zlxne4x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vdgkhlx3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rqa3vesc7fct1zlxne4x.png" alt="Alt Text" width="800" height="462"&gt;&lt;/a&gt;&lt;br&gt;
Ya casi terminamos, solo falta exportar la imagen y para eso es solo ir a archivo --&amp;gt; Exportar-(Export As)&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OiyTNIFO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flgj3hpn0z90j06rj55v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OiyTNIFO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flgj3hpn0z90j06rj55v.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;br&gt;
al haberle dado clic se les abrira una ventana y solo tendran que buscar donde desan guarda su imagen y le dan al boton exportar en ese momento se volvera a abrir otra ventana (se que cansa 😫 un poco el que cada boton te abra una ventana pero prometo que esta sera la ultima 😉) el paso que tienen que hacer en esta ventana es Calidad-(Quality) colocarlo en 80, ya que este va a reducir el tamaño sin que la calidad de la imagen se vea muy afectada (pero también pueden modificarlo según sus necesidades y teniendo en cuenta que si lo dejan muy alto su peso no disminuirá considerablemente y caso contrario su tamaño si disminuya bastante, pero se tendrá una imagen muy borrosa), también seleccionen mostrar vista previa o show preview in image window (no sé realmente como les aparezca) esa opción les mostrara el tamaño del archivo.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U70vEjqH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvmgegt59hbytzmwb39g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U70vEjqH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jvmgegt59hbytzmwb39g.png" alt="Alt Text" width="800" height="458"&gt;&lt;/a&gt;&lt;br&gt;
Para finalizar le dan exportar y ya tendran su imagen escalada y con mucho menos Mb(megabyte) en su sitio web.&lt;br&gt;
les dejo para que vean los cambios.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bdvP0rQ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bbvrck29vdgcp5cvn254.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bdvP0rQ3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bbvrck29vdgcp5cvn254.png" alt="Alt Text" width="800" height="461"&gt;&lt;/a&gt;&lt;br&gt;
Verán que la imagen escalada tiene un zoom de 72% y la normal tiene uno de 11% y es porque si tuviese el mismo acercamiento la imagen que no reducimos no se vería completa y estaría enfocada en una parte de la foto.&lt;br&gt;
Para finalizar les dejo la comparación de cuanto se redujo la imagen.&lt;br&gt;
-📐 La imagen original tiene un tamaño de 5,7 Mb y ya cuando la modificamos quedo en 183,1 kB y su ancho y alto quedaron de 900 x 563 px mientras que la normal tiene 6000 x 3750 px.&lt;br&gt;
Les dejo mi LinKtree por si desean seguirme.&lt;br&gt;
&lt;a href="https://linktr.ee/Boudgnosis"&gt;https://linktr.ee/Boudgnosis&lt;/a&gt;&lt;br&gt;
Espero que les haya servido y nos vemos en un proximo post 😺&lt;/p&gt;

</description>
      <category>gimp</category>
      <category>design</category>
      <category>web</category>
      <category>imagen</category>
    </item>
  </channel>
</rss>
