<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ CSS - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ CSS - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 23 May 2026 19:22:03 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/css/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Practica HTML, CSS y JavaScript creando 3 proyectos ]]>
                </title>
                <description>
                    <![CDATA[ Crear proyectos es muy importante para aprender a programar. Cuando construyes un proyecto, amplías tu portafolio y aprendes a aplicar tus conocimientos a nuevos escenarios. Acabamos de publicar un curso de 2 horas en el canal de YouTube en español de freeCodeCamp.org [https://www.youtube.com/freecodecampespanol] que te guiará paso a paso en ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/practica-html-css-javascript-creando-3-proyectos/</link>
                <guid isPermaLink="false">669426ecb99552046f705e4f</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Estefania Cassingena Navone ]]>
                </dc:creator>
                <pubDate>Thu, 18 Jul 2024 04:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/07/Proyectos-CSS-1-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Crear proyectos es muy importante para aprender a programar. Cuando construyes un proyecto, amplías tu portafolio y aprendes a aplicar tus conocimientos a nuevos escenarios.</p><p>Acabamos de publicar un curso de 2 horas en el <a href="https://www.youtube.com/freecodecampespanol">canal de YouTube en español de freeCodeCamp.org</a> que te guiará paso a paso en la creación de 3 proyectos con HTML, CSS y JavaScript. Practicarás tus habilidades creando una barra de navegación responsiva con menús desplegables, un carrusel (<em>slider)</em>, y una <em>landing page</em> con un modal personalizado.</p><p>Jordan Alexander Cruz García creó este curso. Jordan Alexander es desarrollador y le encanta compartir sus conocimientos y enseñar a otros sobre el asombroso mundo de CSS.</p><p><strong>💡 Dato: </strong>El curso se enfoca en HTML y CSS pero también requiere conocimientos básicos de JavaScript para implementar la interactividad.</p><h2 id="html-css-y-javascript"><strong>HTML, CSS y JavaScript</strong></h2><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1721081239678/cbb8391c-ddec-49fb-a806-75bb00fe5673.png" class="kg-image" alt="cbb8391c-ddec-49fb-a806-75bb00fe5673" width="2722" height="1052" loading="lazy"></figure><p>HTML significa <strong>HyperText Markup Language</strong> y CSS significa <strong><em>Cascading Style Sheet</em></strong> (hojas de estilo en cascada). Mientras que HTML proporciona la estructura y el contenido de un sitio web, CSS determina cómo se muestra el contenido. Controla los aspectos visuales del sitio web, como fuentes, colores, diseños, espacios y animaciones.</p><p>Con CSS, puedes crear fácilmente diferentes estilos y diseños para varios tamaños de pantalla y lograr que tu sitio web se vea genial en computadoras, tabletas y dispositivos móviles.</p><p><strong>💡 Dato:</strong> Los sitios web que se adaptan a distintos tamaños de pantalla se conocen como "sitios web responsivos".</p><p>Normalmente escribimos CSS en un archivo externo al que nos referimos como "hoja de estilo". Luego, enlazamos esta hoja de estilo al archivo HTML, lo cual aplica todos los estilos a los elementos HTML correspondientes en base a los selectores y propiedades CSS.</p><p>Separar el contenido del sitio web de su presentación es muy útil. Permite que nuestro proyecto tenga una estructura más fácil de mantener y un proceso de renderizado más eficiente porque los navegadores pueden renderizar la estructura más rápidamente, mientras descargan los estilos CSS en segundo plano.</p><p>Básicamente, CSS es una herramienta esencial para crear los sitios web hermosos, visuales y fáciles de usar que vemos hoy en día.</p><p>JavaScript agrega interactividad. Convierte los elementos sencillos en elementos interactivos para crear experiencias de usuario geniales.</p><h2 id="proyectos-de-html-css-y-javascript-en-espa-ol"><strong>Proyectos de HTML, CSS y JavaScript en español</strong></h2><p>Genial. Ahora que ya sabes más sobre HTML, CSS y JavaScript, veamos los proyectos que crearás durante el curso.</p><h3 id="proyecto-1-barra-de-navegaci-n"><strong>Proyecto 1: Barra de Navegación</strong></h3><p>Comenzarás el curso creando una barra de navegación con menús desplegables. Esta barra de navegación será responsiva, por lo que se expandirá o encogerá para adaptarse al tamaño de la pantalla. Si la pantalla es muy pequeña, se transformará automáticamente en una barra lateral.</p><p><strong>💡 Dato: </strong>Siempre se mostrarán las opciones principales. Cuando el usuario haga clic en "<em>About</em>" o "<em>Projects</em>", se mostrará un menú desplegable con opciones adicionales.</p><p><strong>Version de escritorio</strong></p><p>Aquí puedes ver la versión de escritorio.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720982288758/932e25d8-c6ad-4d0d-b54a-19e12aff07bc.png" class="kg-image" alt="932e25d8-c6ad-4d0d-b54a-19e12aff07bc" width="1104" height="561" loading="lazy"></figure><p><strong>Version móvil</strong></p><p>Esta es la versión móvil que verás en dispositivos pequeños.</p><p><strong>💡 Dato:</strong> Esta técnica de ocultar y alternar la barra de navegación se utiliza con mucha frecuencia para optimizar al máximo el espacio disponible para el contenido.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720982239484/6d4882b0-044f-40d7-9c15-220e25449826.png" class="kg-image" alt="6d4882b0-044f-40d7-9c15-220e25449826" width="623" height="800" loading="lazy"></figure><h3 id="proyecto-2-carrusel"><strong>Proyecto 2: Carrusel</strong></h3><p>Luego, crearás un carrusel (<em>slider</em>) con tres posiciones que cambiarán cuando el usuario haga clic en las flechas. Cada posición tendrá un título, un párrafo breve y una imagen circular.</p><p><strong>💡Dato: </strong>Los controles deslizantes son útiles para compartir comentarios, citas y reseñas de los usuarios.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720976794338/6eeac0de-8dca-4a8b-8568-9c4b44220808.png" class="kg-image" alt="6eeac0de-8dca-4a8b-8568-9c4b44220808" width="1915" height="986" loading="lazy"></figure><h3 id="proyecto-3-landing-page"><strong>Proyecto 3: Landing Page</strong></h3><p>Finalmente, crearás una <em>landing page</em> (página web principal) paso a paso con CSS Grid.</p><p>Cuando el usuario haga clic en "Join us", se mostrará una ventana modal personalizada. Implementarás este modal con HTML, CSS y JavaScript paso a paso.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720982884236/b5e066bc-7307-4078-bf45-d1cbe50f0b6d.png" class="kg-image" alt="b5e066bc-7307-4078-bf45-d1cbe50f0b6d" width="1913" height="938" loading="lazy"></figure><p>Te invitamos a ver el curso en el canal de YouTube de <a href="https://www.youtube.com/freecodecampespanol">freeCodeCamp.org en español</a>:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/yZeXLvHP6LM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Crea 3 Proyectos con HTML, CSS y JavaScript - Curso Práctico" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>✍️ Curso creado por Jordan Alexander Cruz Garcia.</p><ul><li>YouTube: <a href="https://www.youtube.com/c/AlexCGDesign" rel="noopener noreferrer nofollow">@AlexCGDesign</a></li><li>Twitter: <a href="https://x.com/alexcgdesign" rel="noopener noreferrer nofollow">@alexcgdesign</a></li><li>Linkedin: <a href="https://www.linkedin.com/in/jordan-alexander-cruz-garcia-07626115a/" rel="noopener noreferrer nofollow">Jordan Alexander Cruz Garcia</a></li><li>Instagram: <a href="https://www.instagram.com/alexcg_design/" rel="noopener noreferrer nofollow">@alexcg_design</a></li><li>GitHub: <a href="https://github.com/AlexCGDesign" rel="noopener noreferrer nofollow">AlexCGDesign</a></li><li>Web Development Blog: <a href="https://www.alexcgdesign.com/blog" rel="noopener noreferrer nofollow">https://www.alexcgdesign.com/blog</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Tutorial del botón de alternancia SVG: cómo manejar el modo oscuro con CSS y JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ ¿Cómo se puede detectar el modo oscuro en CSS y JavaScript? ¿Cómo puedes anularlo manualmente con un botón de alternancia? ¿Y cómo se puede crear un ícono de sol y luna con SVG? En este tutorial, aprenderá cómo detectar el modo oscuro en CSS y JavaScript, y creará un botón ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/tutorial-del-boton-de-alternancia-svg-como-manejar-el-modo-oscuro-con-css-y-javascript/</link>
                <guid isPermaLink="false">661e84d21238a40479c592c1</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Ener Octavio Buitrago Camelo ]]>
                </dc:creator>
                <pubDate>Sat, 04 May 2024 21:31:30 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/05/svg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-handle-dark-mode-with-css-and-javascript/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">SVG Toggle Button Tutorial – How to Handle Dark Mode with CSS and JavaScript</a>
      </p><p>¿Cómo se puede detectar el modo oscuro en CSS y JavaScript? ¿Cómo puedes anularlo manualmente con un botón de alternancia? ¿Y cómo se puede crear un ícono de sol y luna con SVG?</p><p>En este tutorial, aprenderá cómo detectar el modo oscuro en CSS y JavaScript, y creará un botón de alternancia con SVG para anular el comportamiento predeterminado. Utilizará HTML, CSS y JavaScript sin formato, por lo que no necesita ningún requisito preliminar antes de comenzar.</p><p>También puedes ver este artículo como vídeo en YouTube.</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/GUSUA72t7p0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="How to Handle Dark Mode with CSS and JavaScript - SVG Toggle Button Tutorial" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><h2 id="tabla-de-contenido"><strong>Tabla de contenido</strong></h2><ul><li><a href="#manejar">Cómo manejar el modo oscuro con CSS</a></li><li><a href="#codificar">Cómo codificar un icono de sol con SVG</a></li><li><a href="#detectar">Cómo detectar el modo oscuro en JavaScript</a></li><li><a href="#icono">Cómo codificar un icono de luna con SVG</a></li><li><a href="#alternar">Cómo alternar el modo oscuro con JavaScript</a></li><li><a href="#pasos">Próximos pasos</a></li></ul><!--kg-card-begin: html--><h2 id="manejar">Cómo manejar el modo oscuro con CSS</h2><!--kg-card-end: html--><p>Supongamos que tiene un sitio web sencillo con algo de texto. De forma predeterminada, configura el color del texto en negro y el color de fondo en blanco. Implementar el modo oscuro para este sitio con CSS es muy sencillo:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8" /&gt;
    &lt;title&gt;Dark Mode&lt;/title&gt;
    &lt;link rel="stylesheet" href="index.css" /&gt;
    &lt;script src="index.js" defer&gt;&lt;/script&gt;
  &lt;/head&gt;

  &lt;body&gt;
    &lt;p&gt;
      How to detect dark mode in CSS and in JavaScript? How can we override it
      manually with a toggle button? In this quick tutorial, we look into
      detecting dark mode in CSS and JavaScript, and then we create a toggle
      button with SVG to override the default behavior.
    &lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Screenshot-2024-03-07-at-11.33.28.png" class="kg-image" alt="Captura de pantalla-2024-03-07-at-11.33.28" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Un sitio web sencillo con algo de texto en modo oscuro.</font></font></figcaption></figure><p>Todo lo que necesitas hacer es agregar una consulta de medios y establecer una condición. Con esta condición, configura las siguientes declaraciones CSS para que solo sean válidas si el esquema de color preferido es oscuro.</p><p>Dentro de esta consulta de medios, puede definir los colores para el modo oscuro. En este caso, inviertes los colores y estableces el color del texto en blanco y el color de fondo en negro:</p><pre><code class="language-css">body {
  font-family: Montserrat;
  margin: 50px;
  max-width: 500px;
}

@media (prefers-color-scheme: dark) {
  body {
    background-color: black;
    color: white;
  }
}
</code></pre><p>Esto tomará la configuración de su sistema operativo o configuración del navegador. De forma predeterminada, proviene del sistema operativo, pero el navegador puede decidir anularlo. En Google Chrome, puede encontrar esta configuración en "Apariencia". De forma predeterminada, sigue la configuración del dispositivo.</p><p>Lo bueno de la solución CSS es que si cambia esta configuración mientras visita el sitio web, el estilo se actualizará automáticamente.</p><p>De esta manera, puede establecer un estilo personalizado para el elemento del cuerpo y también para cualquier otro elemento.</p><p>Sin embargo, en un caso no funciona. No puedes diseñar lo que hay dentro de un elemento HTML Canvas con CSS. Si creaste un <a href="https://www.freecodecamp.org/news/gorillas-game-in-javascript/">juego completamente desde JavaScript</a> usando Canvas API o Three.js, también debes configurar los colores para el modo oscuro en JavaScript.</p><p>En los próximos pasos, cubriremos esto y veremos cómo crear un botón de alternancia SVG para cambiar entre los modos claro y oscuro.</p><!--kg-card-begin: html--><h2 id="codificar">Cómo codificar un icono de sol con SVG</h2><!--kg-card-end: html--><p>Antes de aprender a manejar el modo oscuro en JavaScript, hagamos un desvío rápido y veamos cómo codificar un botón de alternancia del modo oscuro con SVG. Detectar el modo oscuro es una cosa, pero debes permitir al usuario alternar manualmente entre los modos claro y oscuro.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.022.png" class="kg-image" alt="Diapositivas-1.022" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Icono del sol</font></font></figcaption></figure><p>Consulte mi tutorial anterior si necesita una introducción rápida a <a href="https://www.freecodecamp.org/news/svg-tutorial-learn-to-code-images/">la codificación de iconos SVG</a> . Contiene muchos ejemplos excelentes, desde niveles principiantes hasta avanzados. Y si eres nuevo en los SVG, no te preocupes. Estos son ejemplos muy simples.</p><p>Entonces, comencemos con el <code>svg</code>elemento. Esto servirá como contenedor para todos los elementos de la imagen. Establezca su tamaño en 30 por 30:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.004.png" class="kg-image" alt="Diapositivas-1.004" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">El </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">svg</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">elemento</font></font></figcaption></figure><p>Luego, agrega un círculo. Para un <code>circle</code>elemento, debes establecer las coordenadas centrales del círculo y su radio. Las coordenadas centrales son 15 y el radio es 6. Luego, establece un color con la <code>fill</code>propiedad:</p><pre><code class="language-html">&lt;svg width="30" height="30"&gt;
  &lt;circle cx="15" cy="15" r="6" fill="currentColor" /&gt;
&lt;/svg&gt;</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.006.png" class="kg-image" alt="Diapositivas-1.006" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Agregamos un </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">circle</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">como núcleo del sol.</font></font></figcaption></figure><p>Para establecer el color, puede utilizar la <code>currentColor</code>propiedad que asume la <code>color</code>configuración actual de CSS. Esto será útil más adelante cuando alterne los modos oscuro y claro. El icono cambiará de color automáticamente.</p><p>Luego, agrega los rayos del sol. Debe usar el <code>line</code>elemento para esto, donde debe establecer las coordenadas inicial y final. También puede establecer el color del trazo con la <code>stroke</code>propiedad <code>stroke-width</code>para agregar grosor y la <code>stroke-linecap</code>propiedad para redondear los extremos de las líneas:</p><pre><code class="language-html">&lt;svg width="30" height="30"&gt;
  &lt;circle cx="15" cy="15" r="6" fill="currentColor" /&gt;

  &lt;line
    id="ray"
    stroke="currentColor"
    stroke-width="2"
    stroke-linecap="round"
    x1="15"
    y1="1"
    x2="15"
    y2="4"
  &gt;&lt;/line&gt;
&lt;/svg&gt;</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.010.png" class="kg-image" alt="Diapositivas-1.010" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Agregamos un </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">line</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">elemento como un rayo de sol.</font></font></figcaption></figure><p>Ahora, una vez que tengas un rayo, puedes reutilizar el mismo rayo para dibujar los demás.</p><p>Puedes darle a este rayo <code>id</code>y reutilizarlo con el <code>use</code>elemento. Para los elementos reutilizados, puede establecer una rotación. Establezca el ángulo de rotación y el centro de rotación. Quieres rotar los rayos alrededor del centro del sol, así que configúralo en <code>15,15</code>. Luego, incrementa la rotación en 45 grados para cada rayo:</p><pre><code class="language-html">&lt;svg width="30" height="30"&gt;
  &lt;circle cx="15" cy="15" r="6" fill="currentColor" /&gt;

  &lt;line
    id="ray"
    stroke="currentColor"
    stroke-width="2"
    stroke-linecap="round"
    x1="15"
    y1="1"
    x2="15"
    y2="4"
  &gt;&lt;/line&gt;

  &lt;use href="#ray" transform="rotate(45 15 15)" /&gt;
  &lt;use href="#ray" transform="rotate(90 15 15)" /&gt;
  &lt;use href="#ray" transform="rotate(135 15 15)" /&gt;
  &lt;use href="#ray" transform="rotate(180 15 15)" /&gt;
  &lt;use href="#ray" transform="rotate(225 15 15)" /&gt;
  &lt;use href="#ray" transform="rotate(270 15 15)" /&gt;
  &lt;use href="#ray" transform="rotate(315 15 15)" /&gt;
&lt;/svg&gt;</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.016.png" class="kg-image" alt="Diapositivas-1.016" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">El icono del sol terminado.</font></font></figcaption></figure><!--kg-card-begin: html--><h2 id="detectar">Cómo detectar el modo oscuro en JavaScript</h2><!--kg-card-end: html--><p>Antes de llegar al ícono de la luna, veamos cómo detectar el modo oscuro en JavaScript. Esto puede ser útil al crear un juego, como lo hicimos hace un par de semanas en el tutorial del juego Gorilas JavaScript .</p><p>En ese juego, estábamos dibujando en un elemento HTML Canvas con JavaScript. Configuramos todos los colores con JavaScript. Si queremos admitir el modo oscuro, podemos configurar los colores en función de una <code>darkMode</code>variable. Pero ¿cómo detectamos si estamos en modo oscuro? ¿Cómo establecemos el valor de esta variable?</p><p>El siguiente código es un fragmento de ejemplo del tutorial del juego anterior. Aquí configuramos el color de relleno antes de dibujar un rectángulo en el lienzo. </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.018.png" class="kg-image" alt="Diapositivas-1.018" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Al dibujar sobre un </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">canvas</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">elemento configuramos los colores desde JavaScript. ¿Pero cómo detectamos el modo oscuro?</font></font></figcaption></figure><p>Detectar el modo oscuro en JavaScript también es muy sencillo. Curiosamente, esta solución también depende de los selectores de consultas CSS que usaste antes.</p><p>Puedes crear un <code>matchMedia</code>objeto con la misma condición que usamos en CSS. Este método puede comprobar si el documento coincide con una consulta de medios. Pasar <code>prefers-color-scheme: dark</code>como argumento:</p><pre><code class="language-javascript">const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");

let darkMode = darkModeMediaQuery.matches;

. . .

function drawBuildings() {
  state.buildings.forEach((building) =&gt; {
    ctx.fillStyle = darkMode ? "#254D7E" : "#947285";
    ctx.fillRect(building.x, 0, building.width, building.height);
  });
}</code></pre><p>Luego, puede verificar la <code>matches</code>propiedad de este objeto. Si es cierto, entonces estás en modo oscuro. Puede guardar esto en una variable y, luego, puede usar esta variable para decidir qué colores debe usar al pintar en el elemento del lienzo.</p><p>Esta variable, sin embargo, no se actualiza automáticamente cuando cambia entre el modo claro y el modo oscuro. Debe agregar un detector de eventos que detecte si la configuración cambia.</p><p>Aquí, definimos una función que verifica la <code>matches</code>propiedad del objeto entrante para decidir si acaba de cambiar al modo brillante u oscuro:</p><pre><code class="language-javascript">const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");

let darkMode = darkModeMediaQuery.matches;

darkModeMediaQuery.addEventListener("change", (e) =&gt; {
  if (e.matches) {
    darkMode = true;
  } else {
    darkMode = false;
  }
});

. . .

function drawBuildings() {
  state.buildings.forEach((building) =&gt; {
    ctx.fillStyle = darkMode ? "#254D7E" : "#947285";
    ctx.fillRect(building.x, 0, building.width, building.height);
  });
}</code></pre><p>Ahora, si configuras los colores según esta <code>darkMode</code>variable, deberías ver que la apariencia del juego cambia una vez que cambias entre el modo claro y oscuro en la configuración del sistema operativo. Mira esta <a href="https://codepen.io/HunorMarton/pen/jOJZqvp">demostración</a> para verlo en acción.</p><!--kg-card-begin: html--><h2 id="icono">Cómo codificar un icono de luna con SVG</h2><!--kg-card-end: html--><p>Antes de discutir la anulación de la configuración predeterminada del sistema operativo con un botón de alternancia, examinemos la otra mitad de nuestro ícono de alternancia: Dibujemos una luna.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.023.png" class="kg-image" alt="Diapositivas-1.023" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Los iconos del Sol y la Luna</font></font></figcaption></figure><p>Comience con un <code>svg</code>elemento del mismo tamaño y defina una ruta dentro de él. Puede definir un <code>path</code>elemento estableciendo su <code>d</code>atributo. En este atributo, construyes una ruta a partir de una serie de comandos:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.026.png" class="kg-image" alt="Diapositivas-1.026" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Definimos a </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">path</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">con una serie de comandos</font></font></figcaption></figure><p>Comienza con el comando mover a para ir a la posición inicial. Este comando consta de la letra <code>M</code>y la coordenada inicial:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.027.png" class="kg-image" alt="Diapositivas-1.027" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Usando el comando mover a dentro de una ruta</font></font></figcaption></figure><p>Luego, usa un comando de arco para dibujar el arco exterior de la luna. Este comando puede dar un poco de miedo porque tiene varias propiedades. Veamos que tenemos:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.028.png" class="kg-image" alt="Diapositivas-1.028" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">El comando arco y sus varias propiedades.</font></font></figcaption></figure><p>Un comando siempre continúa el comando anterior, por lo que este arco dibujará el arco a partir de las coordenadas del comando de desplazamiento. Los comandos también terminan con las coordenadas del punto final.</p><p>Aquí estableces dónde termina el arco. El resto de las propiedades tratan sobre cómo dibujar un arco desde el punto inicial hasta el punto final:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.029.png" class="kg-image" alt="Diapositivas-1.029" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Las dos últimas propiedades del comando arco muestran el punto final del arco.</font></font></figcaption></figure><p>Las dos primeras propiedades son el radio horizontal y vertical de nuestro arco. En nuestro caso, queremos tener el arco de un círculo, por lo que establecemos el mismo valor para ambos. Con el tercer argumento, puedes establecer una rotación. Cuando ambos radios son iguales, esta propiedad no hace diferencia. Puedes dejarlo en cero:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.030.png" class="kg-image" alt="Diapositivas-1.030" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Radio horizontal y vertical del arco.</font></font></figcaption></figure><p>Luego, tenemos la propiedad de bandera de arco grande. Con esto, podrás decidir si ir por el camino largo o corto hasta nuestra coordenada final. Puedes ver que puedes llegar al punto final de múltiples maneras, incluso con los mismos radios.</p><p>Hay dos arcos: en el caso del primero, irás por el camino largo y en el caso del segundo, irás por el camino corto. Esta es una bandera, por lo que el valor aquí puede ser 0 o 1:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.032.png" class="kg-image" alt="Diapositivas-1.032" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">La bandera de arco grande decide si debemos llegar al punto final por el camino corto o por el largo.</font></font></figcaption></figure><p>Finalmente, está la bandera de barrido. Básicamente, esto establece si debes dibujar el arco en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj. Las dos opciones se reflejan entre sí. En el primer caso, lo configuras en cero; en el segundo, lo configuras en uno:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.035.png" class="kg-image" alt="Diapositivas-1.035" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">La bandera de barrido decide si debemos ir en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj.</font></font></figcaption></figure><p>Ahora que tienes un arco, configuras el otro. Aquí, establece el punto final al principio. A las mismas coordenadas que utilizó para el comando de desplazamiento.</p><p>Luego puedes usar los mismos radios, pero tienes que cambiar la bandera de arco grande y la bandera de barrido para terminar con una luna:</p><pre><code class="language-html">&lt;svg width="30" height="30"&gt;
  &lt;path
    fill="currentColor"
    d="
      M 23, 5
      A 12 12 0 1 0 23, 25
      A 12 12 0 0 1 23, 5"
  /&gt;
&lt;/svg&gt;</code></pre><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.039.png" class="kg-image" alt="Diapositivas-1.039" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">El ícono de la luna terminado.</font></font></figcaption></figure><p>¿Cómo puedes usar estos dos íconos en un botón para alternar el modo claro y el modo oscuro en JavaScript?</p><!--kg-card-begin: html--><h2 id="alternar">Cómo alternar el modo oscuro con JavaScript</h2><!--kg-card-end: html--><p>Si desea anular la configuración del sistema o del navegador para el modo oscuro con un cambio manual, ya no puede confiar en la consulta de medios CSS. Esto funciona para representar la interfaz de usuario según la configuración, pero no puede anularla desde JavaScript.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Slides-1.041.png" class="kg-image" alt="Diapositivas-1.041" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">No puedes anular una consulta de medios CSS</font></font></figcaption></figure><p>En su lugar, puede definir una <code>dark-mode</code>clase y alternarla desde JavaScript.</p><p>En CSS, defina una clase que cambiará la misma configuración que hizo antes la consulta de medios. Luego, en JavaScript, puedes usar la misma lógica que tenías antes para obtener la configuración predeterminada y luego agregar o eliminar esta clase.</p><p>Puede configurar esta clase en la carga de nuestra página inicial y alternarla si hace clic en un botón:</p><pre><code class="language-css">body {
  font-family: Montserrat;
  margin: 50px;
  max-width: 500px;
}

.dark-mode {
  background-color: black;
  color: white;
}</code></pre><p>Ahora, ¿cómo se alterna esto con un botón? En su archivo HTML, agregue un elemento de botón con un controlador de eventos. Luego, mueva ambos SVG dentro de este elemento de botón y asígneles ID. Alternará la visibilidad de estos íconos desde JavaScript:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
  &lt;head&gt;
    &lt;meta charset="utf-8" /&gt;
    &lt;title&gt;Dark Mode&lt;/title&gt;
    &lt;link rel="stylesheet" href="index.css" /&gt;
    &lt;script src="index.js" defer&gt;&lt;/script&gt;
  &lt;/head&gt;

  &lt;body&gt;
    &lt;p&gt;
      How to detect dark mode in CSS and in JavaScript? How can we override it
      manually with a toggle button? In this quick tutorial, we look into
      detecting dark mode in CSS and JavaScript, and then we create a toggle
      button with SVG to override the default behavior.
    &lt;/p&gt;

    &lt;button onclick="toggleDarkMode()"&gt;
      &lt;svg width="30" height="30" id="light-icon"&gt;
        &lt;circle cx="15" cy="15" r="6" fill="currentColor" /&gt;

        &lt;line
          id="ray"
          stroke="currentColor"
          stroke-width="2"
          stroke-linecap="round"
          x1="15"
          y1="1"
          x2="15"
          y2="4"
        &gt;&lt;/line&gt;

        &lt;use href="#ray" transform="rotate(45 15 15)" /&gt;
        &lt;use href="#ray" transform="rotate(90 15 15)" /&gt;
        &lt;use href="#ray" transform="rotate(135 15 15)" /&gt;
        &lt;use href="#ray" transform="rotate(180 15 15)" /&gt;
        &lt;use href="#ray" transform="rotate(225 15 15)" /&gt;
        &lt;use href="#ray" transform="rotate(270 15 15)" /&gt;
        &lt;use href="#ray" transform="rotate(315 15 15)" /&gt;
      &lt;/svg&gt;
      &lt;svg width="30" height="30" id="dark-icon"&gt;
        &lt;path
          fill="currentColor"
          d="
          M 23, 5
          A 12 12 0 1 0 23, 25
          A 12 12 0 0 1 23, 5"
        /&gt;
      &lt;/svg&gt;
    &lt;/button&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Mueva ambos íconos SVG a un </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">button</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">elemento y establezca uno único </font></font><code style="box-sizing: inherit; margin: 0px; padding: 0px 5px 2px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: 400 !important; font-stretch: inherit; line-height: 1em; font-family: &quot;Roboto Mono&quot;, monospace; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 0.8em; vertical-align: baseline; background: var(--gray15);">id</code><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">para cada uno</font></font></figcaption></figure><p>También puede desarmar la apariencia predeterminada del elemento del botón en CSS, excepto la propiedad del cursor. Deberías tener eso como puntero:</p><pre><code class="language-css">. . .

button {
  all: unset;
  cursor: pointer;
}

. . .</code></pre><p>Ahora, implementemos el controlador de eventos en JavaScript. Primero necesitas acceder a los íconos SVG por ID:</p><pre><code class="language-js">const lightIcon = document.getElementById("light-icon");
const darkIcon = document.getElementById("dark-icon");

. . .</code></pre><p>Luego, agregue la <code>dark-mode</code>clase al <code>body</code>elemento en caso de que esté en modo oscuro y oculte uno de los íconos SVG según la <code>darkMode</code>variable. Detectas el modo oscuro como lo hiciste antes:</p><pre><code class="language-js">. . .

// Check if dark mode is preferred
const darkModeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
let darkMode = darkModeMediaQuery.matches;

// Set dark-mode class on body if darkMode is true and pick icon
if (darkMode) {
  document.body.classList.add("dark-mode");
  darkIcon.setAttribute("display", "none");
} else {
  lightIcon.setAttribute("display", "none");
}

. . .</code></pre><p>Y finalmente, podemos implementar la función que invierte la <code>darkMode</code>propiedad. Esta función alterna la <code>dark-mode</code>clase en el elemento del cuerpo y alterna los íconos SVG:</p><pre><code class="language-js">. . .

// Toggle dark mode on button click
function toggleDarkMode() {
  // Toggle darkMode variable
  darkMode = !darkMode;

  // Toggle dark-mode class on body
  document.body.classList.toggle("dark-mode");

  // Toggle light and dark icons
  if (darkMode) {
    lightIcon.setAttribute("display", "block");
    darkIcon.setAttribute("display", "none");
  } else {
    lightIcon.setAttribute("display", "none");
    darkIcon.setAttribute("display", "block");
  }
}</code></pre><p>Ahora, esto funciona: de forma predeterminada, todavía tienes la configuración del sistema operativo o del navegador. Pero una vez que haga clic en este botón, lo anulará manualmente.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Screenshot-2024-03-07-at-12.31.42.png" class="kg-image" alt="Captura de pantalla-2024-03-07-at-12.31.42" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Aspecto final en modo claro.</font></font></figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/03/Screenshot-2024-03-07-at-12.31.27.png" class="kg-image" alt="Captura de pantalla-2024-03-07-at-12.31.27" width="600" height="400" loading="lazy"><figcaption><font style="box-sizing: inherit; vertical-align: inherit;"><font style="box-sizing: inherit; vertical-align: inherit;">Aspecto final en modo oscuro</font></font></figcaption></figure><!--kg-card-begin: html--><h2 id="pasos">Próximos pasos</h2>
<!--kg-card-end: html--><p>Con todo esto en su lugar, tiene una funcionalidad que toma la configuración del modo oscuro del navegador o del sistema operativo de forma predeterminada, y puede anularla con un atractivo botón de alternancia. En la <a href="https://youtu.be/GUSUA72t7p0">versión de YouTube de este tutorial</a> , también puede aprender cómo <code>localStorage</code>guardar esta configuración para la próxima sesión.</p><p>Si desea obtener más información sobre los SVG, consulte <a href="https://svg-tutorial.com/">SVG-tutorial.com</a> , donde puede obtener más información sobre los SVG desde niveles principiantes hasta avanzados con muchos ejemplos excelentes.</p><p>Si desea utilizar este comportamiento en un juego, consulta el <a href="https://www.freecodecamp.org/news/gorillas-game-in-javascript/">tutorial del juego Gorillas JavaScript</a> , donde creamos el juego completo desde cero. Es un enorme tutorial de dos horas que cubre el dibujo en un elemento Canvas con JavaScript y toda la lógica del juego con JavaScript simple.</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.17977528089888%;" class="fluid-width-video-wrapper">
            <iframe width="356" height="200" src="https://www.youtube.com/embed/2q5EufbUEQk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="Tutorial de juego JavaScript con HTML Canvas: Gorilas" name="fitvid0" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-optical-sizing: inherit; font-kerning: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 22px; vertical-align: middle; position: absolute; top: 0px; left: 0px; width: 720px; height: 404.484px;"></iframe>
          </div>
        </div>
      </figure> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Crea una Página Web Responsive con HTML y CSS ]]>
                </title>
                <description>
                    <![CDATA[ La meta del desarrollo web responsivo es crear sitios web que se vean geniales en cualquier dispositivo, teléfono, tableta o computadora. En este curso, aprenderás a construir una página web responsiva paso a paso en español con HTML y CSS. Acabamos de publicar un curso en el canal de YouTube ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/crea-una-pagina-web-responsive-con-html-y-css/</link>
                <guid isPermaLink="false">66269f2b7b1bd304018eec78</guid>
                
                    <category>
                        <![CDATA[ HTML ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Estefania Cassingena Navone ]]>
                </dc:creator>
                <pubDate>Wed, 24 Apr 2024 05:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/04/thumbnail-v1-v2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>La meta del desarrollo web responsivo es crear sitios web que se vean geniales en cualquier dispositivo, teléfono, tableta o computadora. En este curso, aprenderás a construir una página web responsiva paso a paso en español con HTML y CSS.</p><p>Acabamos de publicar un curso en el <a href="https://www.youtube.com/freecodecampespanol">canal de YouTube en español freeCodeCamp.org</a> que te enseñará Desarrollo Web Responsivo creando una página web paso a paso. Usarás los conceptos básicos que necesitas comprender para dominar el desarrollo web responsivo. Al final del curso, podrás diseñar e implementar sitios web responsivos con HTML y CSS.</p><p>El curso fue creado por David Choi. David es un desarrollador de software a quien le encanta programar y compartir sus conocimientos con todos los que quieran adentrarse en el mundo de la programación y la computación.</p><p>David te enseñará a crear e implementar diseños web modernos y responsivos paso a paso con HTML y CSS (sin frameworks ni bibliotecas (<em>libraries</em>)).</p><p>Si tu objetivo es diseñar y crear sitios web modernos, definitivamente necesitas aprender cómo hacerlos responsivos. Antes de comenzar a adentrarnos en el tema con el curso de David, veamos una introducción rápida. </p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/04/frame-4.png" class="kg-image" alt="frame-4" width="600" height="400" loading="lazy"><figcaption>Las primeras secciones de la página web que crearás paso a paso.</figcaption></figure><h2 id="-qu-es-el-desarrollo-web-responsivo">¿Qué es el desarrollo web responsivo?</h2><p>Un sitio web responsivo es un sitio web que adapta su diseño y contenido al tamaño de la pantalla. Debería verse y funcionar correctamente en computadoras, laptops, tabletas, teléfonos inteligentes y otros dispositivos.</p><p>El desarrollo web responsivo es el enfoque utilizado por los desarrolladores para crear sitios web que se adaptan a dispositivos de distintos tamaños. Esto da como resultado una mejor experiencia de usuario ya que tendrá acceso al contenido en un diseño adaptado específicamente para el dispositivo que está usando. Los motores de búsqueda también priorizan a los sitios web que ofrecen una buena experiencia de usuario en todos los dispositivos.</p><p>Puedes desarrollar sitios web responsivos con HTML y CSS (sin frameworks ni bibliotecas). Aquí es donde CSS Flexbox viene al rescate. Durante el curso, practicarás tus habilidades de CSS Flexbox. Veamos de qué se trata.</p><h3 id="flexbox">Flexbox</h3><p>Flexbox es un modelo de diseño CSS para organizar elementos en una sola dimensión. Con Flexbox, puedes ubicar elementos horizontal o verticalmente, distribuir el espacio de manera uniforme para cambiar el diseño según el tamaño de la pantalla e incluso controlar el orden de los elementos.</p><p><strong>💡 Dato:</strong> Si necesitas repasar tus habilidades de HTML, CSS y Flexbox, puedes tomar cursos sobre estos temas en nuestro canal de YouTube en español antes de comenzar el proyecto.</p><ul><li><a href="https://www.youtube.com/watch?v=XqFR2lqBYPs">Aprende HTML y CSS - Curso Desde Cero</a></li><li><a href="https://www.youtube.com/watch?v=iwFEc6I8wSA">Aprende CSS Flexbox - Curso desde Cero</a></li></ul><h2 id="proyecto-de-p-gina-web-responsiva-en-espa-ol">Proyecto de página web responsiva en español</h2><p>Durante el curso:</p><ul><li>Analizarás el diseño que David creó para el sitio web.</li><li>Prepararás tu entorno de desarrollo.</li><li>Instalarás Visual Studio Code.</li><li>Crearás la estructura del sitio web en HTML.</li><li>Definirás y asignarás estilos CSS para la versión móvil.</li><li>Definirás y asignarás estilos CSS para la versión de escritorio.</li></ul><p>Combinarás CSS básico con Flexbox para asignar estilos que se adapten al tamaño de la pantalla.</p><p>Aquí tenemos algunas capturas de pantalla del curso para darte una idea del proyecto genial que crearás con David:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/04/frame-2.png" class="kg-image" alt="frame-2" width="600" height="400" loading="lazy"><figcaption>La versión de escritorio de la página web.</figcaption></figure><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/04/frame-3.png" class="kg-image" alt="frame-3" width="600" height="400" loading="lazy"><figcaption>La versión móvil de la página web.</figcaption></figure><p>Te invitamos a tomar el curso en el canal de YouTube de <a href="https://www.youtube.com/freecodecampespanol">freeCodeCamp.org en español</a>:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.17977528089888%;" class="fluid-width-video-wrapper">
            <iframe width="356" height="200" src="https://www.youtube.com/embed/VgHproadDD8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="" title="Crea una Página Web Responsive con HTML y CSS" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>✍️ Curso creado por David Choi.</p><ul><li>YouTube: <a href="https://www.youtube.com/@deivchoi">@deivchoi</a></li><li>GitHub: <a href="https://github.com/choidavid4">@choidavid4</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Div Color de fondo: Cómo cambiar  el color de fondo en CSS ]]>
                </title>
                <description>
                    <![CDATA[ Si estás trabajando en un proyecto de desarrollo web, establecer un color de fondo agradable puede darle al sitio web un aspecto más atractivo. Para establecer un color de fondo para un div o elemento parecido en CSS, utiliza la propiedad background-color. Al configurar la propiedad, background-colortu creatividad es el ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/div-color-de-fondo-como-cambiar-el-color-de-fondo-en-css/</link>
                <guid isPermaLink="false">65c263d0aa1f2203f0eb10d2</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Cristian Fernando Villca Gutierrez ]]>
                </dc:creator>
                <pubDate>Mon, 11 Mar 2024 15:28:53 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/backgroundcolor-1.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/div-background-color-how-to-change-background-color-in-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Div Background Color – How to Change Background Color in CSS</a>
      </p><h3 id="si-est-s-trabajando-en-un-proyecto-de-desarrollo-web-establecer-un-color-de-fondo-agradable-puede-darle-al-sitio-web-un-aspecto-m-s-atractivo-">Si estás trabajando en un proyecto de desarrollo web, establecer un color de fondo agradable puede darle al sitio web un aspecto más atractivo.</h3><p>Para establecer un color de fondo para un <code>div</code> o elemento parecido en CSS, utiliza la propiedad <code>background-color</code>.</p><p>Al configurar la propiedad, <code>background-color</code>tu creatividad es el límite en cuanto hasta dónde quieres llegar.</p><p>Entonces, en este artículo, te mostraré cómo puedes configurar la propiedad <code>background-color</code>.</p><h2 id="c-mo-configurar-background-color-con-nombres-de-color">Cómo configurar <code>background-color</code> con nombres de color</h2><p>Con los colores con nombre, puede establecer el color de fondo incorporando la propiedad <code>background-color</code> y asignándole un valor expresado en un nombre de color como <code>red</code>, <code>green</code>, <code>blue</code>, etc.</p><pre><code class="language-css">div {
   background: green;
}</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-1-1.png" class="kg-image" alt="ss-1-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/02/ss-1-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2024/02/ss-1-1.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2024/02/ss-1-1.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-1-1.png 1911w" sizes="(min-width: 720px) 720px" width="1911" height="1019" loading="lazy"><figcaption>Ejemplo de un div color verde en CSS</figcaption></figure><p>Puede utilizar los siguientes estilos para que la página web se vea mejor. Simplemente, establezca un ancho y alto para el <code>div</code>, para que el <code>background-color</code> pueda tener efecto:</p><pre><code class="language-css">body {
   display: flex;
   align-items: center;
   justify-content: center;
   height: 100vh;
   background-color: #d3d3d3;
 }

div {
   background: green;
 }</code></pre><p>Los navegadores modernos reconocen alrededor de 147 colores, por lo que todavía su uso es un poco limitado.</p><h2 id="c-mo-configurar-background-color-con-colores-hexadecimales">Cómo configurar <code>background-color</code> con colores hexadecimales</h2><p>Con valores hexadecimales, puedes establecer un color de fondo para un <code>div</code> o cualquier otro elemento con un total de 6 caracteres.</p><p>Los colores hexadecimales comienzan con el signo de numeral (#), cualquier número del 0 al 9 y, finalmente, cualquier letra de la A a la F.</p><p>Los primeros 2 valores representan el rojo, los 2 siguientes representan el verde y los 2 últimos representan el azul.</p><p>Con valores hexadecimales, puedes sumergirte profundamente en el círculo cromático e incluso usar colores que nadie ha usado nunca.</p><pre><code class="language-css">div {
   background: #2ecc71;
}</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-2-1.png" class="kg-image" alt="ss-2-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/02/ss-2-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2024/02/ss-2-1.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2024/02/ss-2-1.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-2-1.png 1904w" sizes="(min-width: 720px) 720px" width="1904" height="1023" loading="lazy"><figcaption>Ejemplo de div usando colores hexadecimales</figcaption></figure><h2 id="c-mo-configurar-background-color-con-colores-rgb">Cómo configurar <code>background-color</code> con colores RGB</h2><p>RGB significa Red (Rojo), Green (Verde) y Blue (Azul).</p><p>Para configurar el color de fondo con RGB, especifica la cantidad de rojo, verde y azul que desea con números entre 0 y 255.</p><pre><code class="language-css">div {
   background: rgb(220, 20, 60);
}</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-3-2.png" class="kg-image" alt="ss-3-2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/02/ss-3-2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2024/02/ss-3-2.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2024/02/ss-3-2.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-3-2.png 1896w" sizes="(min-width: 720px) 720px" width="1896" height="1008" loading="lazy"><figcaption>Ejemplo de div usando colores RGB</figcaption></figure><p>RGB también tiene una variación llamada RGBA. La última A significa alfa y te permite determinar qué tan opaco quieres que sea el color.</p><p>El alfa toma un valor de 0,0 a 1,0. 0,0 significa 0% de opacidad, 0,5 significa 50% de opacidad y 1,0 significa 100% de opacidad.</p><pre><code class="language-css">div {
    background: rgb(220, 20, 60, 0.6);
}</code></pre><p></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-4.png" class="kg-image" alt="ss-4" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/02/ss-4.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2024/02/ss-4.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2024/02/ss-4.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-4.png 1907w" sizes="(min-width: 720px) 720px" width="1907" height="1022" loading="lazy"><figcaption>Ejemplo de div con RGB y una opacidad del 60%</figcaption></figure><h2 id="c-mo-configurar-background-color-con-colores-hsl">Cómo configurar <code>background-color</code> con colores HSL</h2><p>HSL significa Hue (Tono), Saturation (Saturación) y Lightness (Luminosidad). Es la forma más dinámica dentro de las formas en que puedes especificar un color de fondo para un <code>div</code> u otros elementos.</p><ul><li><strong>Hue (Tono)</strong> representa la rueda de colores en 360°. 0° es rojo, 120° es verde y 240° es azul.</li><li><strong>Saturation (Saturación)</strong> es la cantidad de gris en el color expresada en porcentajes. 0% es el tono de gris y 100% es el mismo color.</li><li>Como su nombre lo indica, la <strong><strong>lightness</strong> (luminosidad) </strong>es la cantidad de oscuridad y luminosidad del color expresada como porcentaje. 0% es negro y 100% es blanco.</li></ul><pre><code class="language-css">div {
   background: hsl(16, 100%, 50%);
 }</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-5.png" class="kg-image" alt="ss-5" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/02/ss-5.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2024/02/ss-5.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/size/w1600/2024/02/ss-5.png 1600w, https://www.freecodecamp.org/espanol/news/content/images/2024/02/ss-5.png 1911w" sizes="(min-width: 720px) 720px" width="1911" height="1021" loading="lazy"><figcaption>Ejemplo de div usando colores HSL</figcaption></figure><h1 id="conclusi-n">Conclusión</h1><p>Dado que puedes aplicar colores de 4 maneras diferentes, debes preguntarte cuál deberías usar.</p><p>Cuando usas colores con nombre, estás un poco limitado en cuanto a hasta dónde puedes llegar al aplicar diferentes tonos de colores.</p><p>Cada color, como rojo, verde, azul, amarillo o cualquier otro color, tiene muchas variaciones a las que no tendrás acceso con colores con nombre.</p><p>Sólo puedes acceder a unos 147 colores predefinidos reconocidos por los navegadores. Los colores hexadecimales, por otro lado, son muy dinámicos. Se utilizan principalmente entre desarrolladores y la creatividad es el límite. Estos colores hexadecimales te permiten utilizar diferentes tonos del mismo color.</p><p>Los colores RGB son tan dinámicos como los colores hexadecimales. Puede especificar la cantidad de rojo, verde y azul de 0 a 255, y también puede usar el valor alfa agregado para especificar la transparencia del color.</p><p>HSL es el más dinámico de todos ellos. Puede especificar exactamente el color de 0 a 360 grados en el círculo cromático, establecer la saturación y la oscuridad como porcentaje y establecer la opacidad en cualquier valor entre 0,0 y 1,0.</p><p>Por lo tanto, decidir cuál usar entre colores con nombre, hexadecimales, RGB y HSL depende de usted y de qué tan creativo quiera ser y cuáles sean las necesidades de su proyecto.</p><p>Gracias por leer.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS display: none y visibility: hidden – ¿Cuál es la diferencia? ]]>
                </title>
                <description>
                    <![CDATA[ display:none y visibility:hidden son dos declaraciones de estilos que puedes usar para ocultar elementos en la pantalla con CSS. Pero, ¿cuáles son las diferencias entre ellos? Al crear aplicaciones, hay ocasiones en las que deseas ocultar elementos visualmente (no eliminarlos del DOM, solo de la pantalla). Puedes hacer esto de ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/css-display-none-y-visibility-hidden-cual-es-la-diferencia/</link>
                <guid isPermaLink="false">65e737ee1222b503eefb0f37</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Angel Santana ]]>
                </dc:creator>
                <pubDate>Fri, 08 Mar 2024 07:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/03/11.-display-visibility-2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/css-display-none-and-visibility-hidden-the-difference/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">CSS display:none and visibility:hidden – What's the Difference?</a>
      </p><p><code>display:none</code> y <code>visibility:hidden</code> son dos declaraciones de estilos que puedes usar para ocultar elementos en la pantalla con CSS. Pero, ¿cuáles son las diferencias entre ellos?</p><p>Al crear aplicaciones, hay ocasiones en las que deseas ocultar elementos visualmente (no eliminarlos del DOM, solo de la pantalla). Puedes hacer esto de diferentes maneras.</p><p>Dos enfoques comunes incluyen el uso de la propiedad <code>display</code> con el valor <strong><strong>none</strong></strong> o la propiedad &nbsp;<code>visibility</code> con el valor <strong><strong>hidden</strong></strong>.</p><p>Aunque ambos enfoques ocultan el elemento visualmente, hacen que el elemento se comporte de diferentes maneras. Explicaré estas diferencias en este artículo.</p><p>Este es el ejemplo que usaré para explicar cómo funciona todo esto:</p><p>El HTML:</p><pre><code class="language-html">&lt;div class="container"&gt;
  &lt;div class="block1"&gt;&lt;/div&gt;
  &lt;div class="block2"&gt;&lt;/div&gt;
  &lt;div class="block3"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><p>Y el CSS:</p><pre><code class="language-css">.container {
  padding: 20px;
  width: max-content;
  display: flex;
  border: 1px solid black;
}

.block1,
.block2,
.block3 {
  height: 40px;
  width: 120px;
}

.block1 {
  background-color: rgb(224, 110, 49);
  margin-right: 20px;
}

.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
}

.block3 {
  background-color: rgb(12, 154, 142);
}
</code></pre><p>Tenemos un <code>div</code> con una clase de <strong><strong>container</strong></strong>. Este <code>div</code> tiene tres <code>divs</code> hijos con clases de <strong><strong>block1</strong></strong>, <strong><strong>block2</strong></strong> y <strong><strong>block3</strong></strong>, respectivamente. Hemos especificado algunos estilos para los <code>divs</code>. El primer hijo <code>div</code> es <code>orange</code>, el segundo es <code>blue</code>, y el tercero es <code>teal</code>.</p><p>Aquí está el resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-77.png" class="kg-image" alt="image-77" width="600" height="400" loading="lazy"></figure><h2 id="c-mo-utilizar-display-none-en-css"><strong>Cómo utilizar <code>display: none</code> en CSS</strong></h2><p>La propiedad <code>display</code> establece cómo se muestra un elemento (como <strong><strong>inline</strong></strong> o <strong><strong>block</strong></strong>) y también determina el diseño de los elementos hijos de un elemento padre (como <strong><strong>flex</strong></strong>, <strong><strong>grid</strong></strong>, etc.).</p><p>Con un valor <strong><strong>none</strong></strong> para esta propiedad, la visualización del elemento se desactiva. Esto significa que el elemento – así como sus hijos – no se mostrarán. El documento se representa sin el elemento, <strong>como si no existiera</strong>.</p><p>Ahora veremos cómo funciona <code>display: none</code>. A continuación se muestra un ejemplo con este estilo aplicado al elemento <strong><strong>.block2</strong></strong>:</p><pre><code class="language-css">.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  display: none;
}
</code></pre><p>Aquí está el resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-78.png" class="kg-image" alt="image-78" width="600" height="400" loading="lazy"></figure><p>Como puedes ver aquí, el elemento <strong><strong>.container</strong></strong> ha reducido su ancho. Es como si el elemento <strong><strong>.block2</strong></strong> no existiera. Debido a que usamos <code>display:none</code> en este elemento, no se representa en el documento. Entonces su espacio en la pantalla queda vacío para que lo ocupen otros elementos.</p><p>También podemos probar esto moviendo y agregando <code>display: none</code> al elemento <strong><strong>.block1</strong></strong>:</p><pre><code class="language-css">.block1 {
  background-color: rgb(224, 110, 49);
  margin-right: 20px;
  display: none;
}

.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  display: none;
}
</code></pre><p>El resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-79.png" class="kg-image" alt="image-79" width="600" height="400" loading="lazy"></figure><p>Aquí ves que <strong><strong>.block1</strong></strong> y <strong><strong>.block2</strong></strong> no se representan, por lo que sus espacios están ocupados.</p><h2 id="c-mo-utilizar-visibility-hidden-en-css"><strong>Cómo utilizar <code>visibility: hidden</code> en CSS</strong></h2><p>La propiedad <code>visibility</code>, especifica si un elemento es visible o no. Pero esta propiedad no afecta el diseño del elemento. Esta es la principal diferencia en comparación con la propiedad <code>layout</code>.</p><p>Con un valor <strong><strong>hidden</strong></strong> para esta propiedad, el elemento al que se aplica se vuelve "invisible". El espacio requerido por el modelo de cajas del elemento permanece, pero el elemento en sí está oculto.</p><p>Veamos cómo se aplica esta propiedad a nuestro ejemplo anterior. Aquí está el resultado de este estilo aplicado al elemento <strong><strong>.block2</strong></strong>:</p><pre><code class="language-css">.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  visibility: hidden;
}
</code></pre><p>El resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-80.png" class="kg-image" alt="image-80" width="600" height="400" loading="lazy"></figure><p>Como notarás aquí, a diferencia de <code>display: none</code>, el elemento <strong><strong>.block2</strong></strong> es invisible, pero su diseño permanece intacto. De hecho, el <code>margin-right</code> sobre este elemento todavía está ahí. Sólo el elemento en sí está oculto.</p><p>Agreguemos también este estilo a <strong><strong>.block1</strong></strong> para ver el resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-81.png" class="kg-image" alt="image-81" width="600" height="400" loading="lazy"></figure><p>Ahora ambos elementos son invisibles, pero aún se representan en el documento, por lo que su espacio no está vacío.</p><p>Lo siguiente que quizás estés pensando es "¿Cuál es la diferencia entre <code>visibility: hidden</code> y <code>opacity: 0</code>?"</p><h2 id="visibility-hidden-vs-opacity-0"><strong><code>visibility: hidden</code> vs <code>opacity: 0</code></strong></h2><p>Ambos estilos se ven muy similares. Puedo mostrarte esto reemplazando <code>visibility:hidden</code> con <code>opacity:0</code> en nuestros ejemplos anteriores:</p><pre><code class="language-css">.block1 {
  background-color: rgb(224, 110, 49);
  margin-right: 20px;
  opacity: 0;
}

.block2 {
  background-color: rgb(77, 77, 234);
  margin-right: 20px;
  opacity: 0;
}
</code></pre><p>El resultado:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/12/image-82.png" class="kg-image" alt="image-82" width="600" height="400" loading="lazy"></figure><p>Puedes ver que visualmene no hay diferencia entre este resultado y el anterior. Pero hay una diferencia en el comportamiento de los elementos.</p><p>Los elementos con <code>visibility: hidden</code> <strong>no son interactuables</strong>. No sé si esta es la mejor palabra para esto 😂 pero lo que quiero decir es que los usuarios no pueden interactuar (por ejemplo, haciendo click) con dichos elementos. Esto se debe a que dichos elementos son realmente invisbles.</p><p>Los elementos con <code>opacity: 0</code>, por otro lado, <strong>son interactivos</strong>, ya que en realidad son visibles, solo que están transparentes. La propiedad <code>opacity</code> no especifica la visibilidad de un elemento – solo especifica la transparencia.</p><p>Podemos comprobar esta diferencia con un ejemplo. Digamos que el elemento <strong><strong>.block2</strong></strong> tenía un atributo <code>onclick</code> como este:</p><pre><code class="language-html">&lt;div class="block2" onclick="alert('hello')"&gt;&lt;/div&gt;
</code></pre><p>Si usa <code>visibility:hidden</code> en este elemento, al hacer click en el espacio donde está el elemento, no se activará nada. Pero si usa <code>opacity:0</code> en este elemento, al hacer click en ese mismo espacio, se activará el modal de alerta que muestra el texto "hello". Puede probar esto en su navegador para verlo en vivo.</p><h2 id="casos-de-uso-para-display-none-y-visibility-hidden"><strong>Casos de uso para <code>display:none</code> y <code>visibility:hidden</code></strong></h2><p>Estas declaraciones de estilo pueden tener diferentes propósitovs dependiendo de lo que desee lograr.</p><p>En mi experiencia, uso <code>display:none</code> cuando quiero ocultar algo. Piense en ocultar una ventana emergente, un elemento de la lista de tareas pendientes en la interfaz de usuario o la barra lateral de una página.</p><p>El uso de <code>visibility:hidden</code> para estas cosas hace que se conserve su espacio y podría hacer que una página parezca extraña cuando hay un espacio en blanco.</p><p>Las únias veces que utilizo <code>visibility:hidden</code> es cuando quiero mostrar alguna animación mientras "oculto" o "muestro" un elemento. La propiedad <code>display</code> no permite animar entre valores, pero la propiedad <code>visibility</code> sí. Uso <code>visibility</code> en combinación con <code>opacity</code> para tales animaciones de aparición y desaparición gradual.</p><h2 id="concluyendo"><strong>Concluyendo</strong></h2><p>En resumen, <code>display: none</code>, <code>visibility: hidden</code>, y <code>opacity: 0</code> se pueden usar para ocultar elementos visualmente, pero:</p><ul><li><code>display: none</code> desactiva el diseño de los elementos, por lo que no se representan.</li><li><code>visibility: hidden</code> oculta los elementos sin cambiar su diseño.</li><li><code>opacity: 0</code> hace que los elementos sean transparentes, pero los usuarios pueden interactuar con ellos.</li></ul><p>Si te ha gustado este artículo, compártelo con otros para aprender 😇</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Aprende Tailwind CSS - Curso completo con proyectos ]]>
                </title>
                <description>
                    <![CDATA[ Tailwind es un framework CSS con clases predefinidas que puedes combinar para crear sitios web modernos y adaptables muy rápidamente. Acabamos de publicar un curso en el canal de YouTube en español freeCodeCamp.org [https://www.youtube.com/freecodecampespanol] que te enseñará Tailwind CSS desde los conceptos básicos hasta conceptos más avanzados y proyectos. Al ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/aprende-tailwind-css-curso-completo-con-proyectos/</link>
                <guid isPermaLink="false">65d946b9400c3a03efdc9b19</guid>
                
                    <category>
                        <![CDATA[ Tailwind ]]>
                    </category>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Estefania Cassingena Navone ]]>
                </dc:creator>
                <pubDate>Thu, 07 Mar 2024 03:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/Version-2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Tailwind es un framework CSS con clases predefinidas que puedes combinar para crear sitios web modernos y adaptables muy rápidamente.</p><p>Acabamos de publicar un curso en el <a href="https://www.youtube.com/freecodecampespanol">canal de YouTube en español freeCodeCamp.org</a> que te enseñará Tailwind CSS desde los conceptos básicos hasta conceptos más avanzados y proyectos. Al final del curso, podrás diseñar e implementar sitios web responsivos con Tailwind CSS.</p><p>Este curso fue creado por David Ruiz. David es Desarrollador Web Front-End con más de 5 años de experiencia. Comparte proyectos y cursos sobre Tailwind CSS, HTML, CSS, JavaScript y React en su canal de YouTube.</p><p>En este curso, te enseñará cómo crear e implementar diseños web modernos y responsivos paso a paso con las clases predefinidas de Tailwind CSS.</p><p>Antes de comenzar a sumergirnos en Tailwind con el curso de David, veamos una introducción rápida a Tailwind CSS &nbsp;y po qué es importante para ti si tu objetivo es diseñar y crear sitios web modernos y responsivos de forma eficiente.</p><h2 id="-qu-es-tailwind-css"><strong>¿Qué es Tailwind CSS?</strong></h2><p>Tailwind CSS es un framework CSS con clases predefinidas que puedes utilizar para asignar estilo a los elementos HTML.</p><p>Con Tailwind CSS, puedes agregar clases CSS a tus elementos HTML directamente dentro del archivo HTML y ver cómo los estilos predefinidos se aplican inmediatamente.</p><p><strong>💡 Dato:</strong> ¡Sí! Con Tailwind, escribimos nuestro CSS dentro del archivo HTML.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/02/Screenshot-2024-02-23-at-8.47.14-PM.png" class="kg-image" alt="Screenshot-2024-02-23-at-8.47.14-PM" width="600" height="400" loading="lazy"><figcaption>Tailwind CSS (Sitio Web Oficial).</figcaption></figure><h2 id="-por-qu-escoger-tailwind-css"><strong>¿Por qué escoger Tailwind CSS?</strong></h2><p>Aprender Tailwind CSS puede ser muy útil para mejorar tu flujo de trabajo como desarrollo web. Sus ventajas incluyen:</p><ul><li><strong>Desarrollo más rápido</strong> porque puedes utilizar clases CSS predefinidas en lugar de definir los estilos CSS tú mismo.</li><li><strong>Diseño responsivo</strong> porque las clases CSS predefinidas admiten variantes para distintos tamaños de pantalla. Puedes desarrollar un sitio web responsivo directamente desde tu archivo HTML, sin media queries adicionales.</li><li><strong>Archivos CSS más simples</strong> porque no definirás todos los estilos tú mismo en archivos CSS personalizados.</li><li><strong>Consistencia</strong> porque tú y tus colegas usarán las mismas clases de CSS con las mismas convenciones de nomenclatura en todo el proyecto.</li><li><strong>Funciones de personalización </strong>porque puedes personalizar y configurar muchas de estas clases CSS predefinidas para adaptarlas a tus necesidades.</li></ul><p>Suena genial, ¿cierto? &nbsp;🙂</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/02/frame-5.png" class="kg-image" alt="frame-5" width="600" height="400" loading="lazy"><figcaption>Asignándole estilo a un formulario HTML con Tailwind CSS (Captura de pantalla del curso).</figcaption></figure><p>Al aprender Tailwind CSS, estarás adquiriendo habilidades muy valiosas para tu carrera de desarrollo web.</p><p>Si estás listo para comenzar a incorporar Tailwind CSS en tu flujo de trabajo, veamos el contenido del curso.</p><h2 id="curso-de-tailwind-css-en-espa-ol"><strong>Curso de Tailwind CSS en español</strong></h2><p>Durante el curso, aprenderás los siguientes aspectos de Tailwind CSS:</p><ul><li>Cómo instalar y configurar Tailwind CSS</li><li>Colores</li><li>Tamaño</li><li>Estados</li><li>Pseudo-clases</li><li>Diseño web adaptable</li><li>CSS Flexbox con Tailwind CSS</li><li>CSS Grid con Tailwind CSS</li><li>¡Y más!</li></ul><p>Además, aprenderás a activar y desactivar el modo oscuro (dark mode) con los estilos predefinidos de Tailwind CSS y crearás tres proyectos reales completos:</p><ul><li>Un panel de notificaciones</li><li>Un dashboard (tablero)</li><li>Una landing page (página de inicio)</li></ul><p>Te invitamos a tomar el curso en el canal de YouTube de <a href="https://www.youtube.com/freecodecampespanol">freeCodeCamp.org en español</a>:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/5HtRcMSO1Ro?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="Aprende Tailwind CSS - Curso Completo" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>✍️ Curso creado por David Ruiz.</p><ul><li>YouTube: <a href="https://www.youtube.com/CodingTube">@CodingTube</a></li><li>Twitter: <a href="https://twitter.com/CodingTube">@CodingTube</a></li><li>Página web: <a href="https://www.codingtube.dev/">https://www.codingtube.dev/</a></li><li>GitHub: <a href="https://github.com/Davichobits">@Davichobits</a></li><li>LinkedIn: <a href="https://www.linkedin.com/in/davidirc/">David Israel Ruiz Cabrera</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Aprende CSS Flexbox desde cero - Curso paso a paso ]]>
                </title>
                <description>
                    <![CDATA[ Con CSS Flexbox, puedes crear sitios web responsivos fácilmente que se adapten a diferentes tamaños de pantalla y dispositivos. Es una habilidad esencial para el desarrollo web moderno. Publicamos un curso en el canal de YouTube de freeCodeCamp.org en español [https://www.youtube.com/freecodecampespanol] que te enseñará Flexbox desde los fundamentos. Al final ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/aprende-css-flexbox-desde-cero-curso-paso-a-paso/</link>
                <guid isPermaLink="false">65cb72d4c4734e03f2ead948</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Flexbox ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Curso ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Estefania Cassingena Navone ]]>
                </dc:creator>
                <pubDate>Tue, 20 Feb 2024 05:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/Thumbnail-1-2.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Con CSS Flexbox, puedes crear sitios web responsivos fácilmente que se adapten a diferentes tamaños de pantalla y dispositivos. Es una habilidad esencial para el desarrollo web moderno.</p><p>Publicamos un curso en el canal de YouTube de <a href="https://www.youtube.com/freecodecampespanol">freeCodeCamp.org en español</a> que te enseñará Flexbox desde los fundamentos. Al final del curso, podrás diseñar e implementar diseños responsivos.</p><p>Este curso fue creado por Leosbel Poll Sotomayor. Leosbel es un ingeniero de software con más de 10 años de experiencia, que comenzó a crear hace 20 años en Cuba y ahora vive en Canadá gracias a sus habilidades de programación. Creó este curso para la comunidad freeCodeCamp.</p><p>¿Listos? Veamos una descripción general de Flexbox y lo que aprenderás durante el curso.</p><h2 id="-qu-es-css-flexbox"><strong>¿Qué es CSS Flexbox?</strong></h2><p>CSS Flexbox significa CSS Flexible Box Layout. Es un modelo de diseño que te permite reorganizar elementos responsivos dentro de un contenedor en base a propiedades CSS que definen cómo los descendientes deben "moverse" para ajustarse al tamaño de su contenedor.</p><p>Con Flexbox puedes alinear, distribuir y espaciar elementos usando propiedades sencillas para evitar cálculos complejos en tu CSS.</p><p>Durante el curso, aprenderás a utilizar las siguientes propiedades:</p><ul><li><code><strong>flex-direction</strong></code></li><li><code><strong>justify-content</strong></code></li><li><code><strong>flex-wrap</strong></code></li><li><code><strong>align-items</strong></code></li><li><code><strong>align-content</strong></code></li><li><code><strong>flex-grow</strong></code></li><li><code><strong>flex-basis</strong></code></li><li><code><strong>flex-shrink</strong></code></li></ul><p>¡Y más! También aprenderás a combinarlos con Media Queries en CSS para crear diseños responsivos aún más poderosos.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/02/frame-3.png" class="kg-image" alt="frame-3" width="600" height="400" loading="lazy"><figcaption>Ejemplo de Flexbox. Distribuir elementos automáticamente.</figcaption></figure><h3 id="oportunidades-profesionales">Oportunidades profesionales</h3><p>Si tu objetivo es tener una carrera en el campo del desarrollo web, Flexbox te será de gran ayuda. Estas habilidades son altamente demandadas y buscadas por empleadores a nivel mundial.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2024/02/frame-4.png" class="kg-image" alt="frame-4" width="600" height="400" loading="lazy"><figcaption>Ejemplo de Flexbox. Diseño clásico con barra de navegación, menú lateral, contenido principal y pie de página.&nbsp;</figcaption></figure><h3 id="curso-de-flexbox-en-espa-ol"><strong>Curso de Flexbox en español</strong></h3><p>Genial. Ahora que ya sabes por qué Flexbox es tan importante, veamos los temas que aprenderás durante el curso:</p><ul><li>Introducción</li><li>¿Qué es Flexbox?</li><li>Importancia de Flexbox</li><li>Fundamentos de Flexbox</li><li>Herramientas que usarás durante el curso</li><li>Cómo configurar tu entorno de desarrollo</li><li>Propiedades relacionadas con contenedores</li><li>Pérdida de datos en CSS</li><li>Propiedades relacionadas con descendientes (hijos)</li><li>Ejemplo: Barra de navegación</li><li>Ejemplo: Diseño clásico</li><li>Flexbox vs. Grid</li></ul><p>Te invitamos a tomar el curso en el canal de YouTube de <a href="https://www.youtube.com/freecodecampespanol">freeCodeCamp.org en español</a>:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.49999999999999%;" class="fluid-width-video-wrapper">
            <iframe width="200" height="113" src="https://www.youtube.com/embed/iwFEc6I8wSA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="" title="Aprende CSS Flexbox - Curso desde Cero" name="fitvid0"></iframe>
          </div>
        </div>
      </figure><p>✍️ Curso creado por Leosbel Poll Sotomayor.</p><ul><li>YouTube: <a href="https://www.youtube.com/@_LeoDev">LeoDev</a></li><li>Twitter: <a href="https://twitter.com/_LeoDev">@_LeoDev</a></li><li>LinkedIn: <a href="https://www.linkedin.com/in/leosbel-poll-sotomayor/">Leosbel Poll Sotomayor</a></li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ CSS Bold – Cómo poner texto en negrita en HTML con CSS ]]>
                </title>
                <description>
                    <![CDATA[ CSS es una poderosa herramienta para desarrolladores web. Esta te permite darle estilo y formato a tu contenido HTML de varias formas. Una de las formas más conocidas con la que podemos colocar texto en negrita es usando la propiedad font-weight. El texto en negrita añade énfasis a información clave, ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/css-bold-how-to-bold-text-in-html-with-font-weight/</link>
                <guid isPermaLink="false">65c299beaa1f2203f0eb10de</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jamer José ]]>
                </dc:creator>
                <pubDate>Tue, 13 Feb 2024 19:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/02/cover-template--4-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>CSS es una poderosa herramienta para desarrolladores web. Esta te permite darle estilo y formato a tu contenido HTML de varias formas.</p><p>Una de las formas más conocidas con la que podemos colocar texto en negrita es usando la propiedad <code>font-weight</code>. El texto en negrita añade énfasis a información clave, crea contraste visual y mejora la legibilidad del contenido.</p><p>En este artículo, aprenderás como usar CSS para darle énfasis a texto en HTML usando la propiedad <code>font-weight</code>. Ya sea que seas un principiante o un desarrollador experimentado, este artículo te proporcionará una guía completa para crear texto en negrita en su HTML utilizando CSS.</p><h2 id="sobre-la-propiedad-font-weight"><strong>Sobre la propiedad font-weight</strong></h2><p>La propiedad <code>font-weight</code> es una propiedad de CSS usada para definir el "peso" o grosor de una fuente. Determina el grado de negrita o luminosidad del texto, y los valores más altos indican un peso de fuente más negrita.</p><p>Esta propiedad acepta varios valores, incluyendo algunos de tipo numérico y también algunas palabras clave.</p><p>En el caso de los valores numéricos tenemos un rango de 100 a 900 con incrementos de 100 (e.g. 100, 200, 300, ..., 900) entré más alto el valor, más gruesa será la fuente. Un valor de 400 es considerado <strong>«</strong>normal<strong>»</strong>, mientras que un valor de 700 se considera <strong>«</strong>en negrita<strong>»</strong>. Algunas de las palabras clave que podemos usar también son <code>bold</code>, <code>bolder</code>, <code>lighter</code>, y <code>normal</code>.</p><h2 id="c-mo-crear-texto-en-negrita-usando-css"><strong>Cómo crear texto en negrita usando CSS</strong></h2><p>Crear texto en negrita en HTML con CSS es un proceso sencillo que se puede lograr de varias maneras. Se puede optar por utilizar cualquier forma de estilo, como en línea (con la etiqueta <code>style</code>), interno (definiendo los estilos dentro de las etiquetas <code>&lt;style&gt;&lt;/style&gt;</code> o externo (importando una hoja de estilos con la etiqueta <code>&lt;link /&gt;</code> desde un archivo <code>.css</code>). Veamos cada una de las opciones:</p><h3 id="con-estilos-en-l-nea"><strong>Con estilos en línea</strong></h3><p>Podemos usar los estilos en línea para aplicar directamente la propiedad <code>font-weight</code> directamente al elemento HTML, por ejemplo:</p><pre><code class="language-html">&lt;p style="font-weight: bold;"&gt;Este es un texto en negrita&lt;/p&gt;
</code></pre><p>Sin embargo, los estilos en línea pueden hacer que tu código HTML luzca desordenado y difícil de mantener, especialmente cuando tenemos varios elementos que requieren los mismos estilos.</p><h3 id="con-estilos-internos">Con estilos internos</h3><p>Los estilos internos te permite aplicar estilos de CSS dentro de la sección <code>head</code>, por ejemplo:</p><pre><code class="language-html">&lt;head&gt;
  &lt;style&gt;
    p {
      font-weight: bold;
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;p&gt;Este es un texto en negrita&lt;/p&gt;
&lt;/body&gt;
</code></pre><p>Este método es útil cuando estamos aplicando los mismos estilos a múltiples elementos en una misma página.</p><h3 id="con-estilos-externos">Con estilos externos</h3><p>Usar estilos externos requiere crear un archivo CSS aparte y referenciar desde nuestro html usando la etiqueta <code>link</code>, por ejemplo:</p><pre><code class="language-html">&lt;head&gt;
  &lt;link rel="stylesheet" type="text/css" href="styles.css"&gt;
&lt;/head&gt;
</code></pre><p>El archivo CSS tendrá entonces todos los estilos que queramos para nuestro HTML y podremos cambiarlos sin necesidad de cambiar el código HTML.</p><pre><code class="language-css">p {
  font-weight: bold;
}
</code></pre><h2 id="mejores-pr-cticas-a-la-hora-de-usar-texto-en-negrita-en-html"><strong>Mejores prácticas a la hora de usar texto en negrita en HTML</strong></h2><p>Ya que el texto en negrita puede ayudarnos a poner énfasis en cierta información, es esencial seguir las mejores prácticas para asegurarnos que el texto se mantiene legible y accesible.</p><p>Estas son algunas de las mejores prácticas para usar texto en negrita en tu código HTML:</p><p><strong>Escogiendo el grosor correcto</strong>: Cuando usamos texto en negrita, es esencial escoger el grosor adecuado para asegurarnos que nuestro texto sigue siendo fácil de leer.</p><p>Mientras que una fuente con más grosor puede ser propicia para encabezados, una fuente más ligera sería apropiada para cuerpos de texto grandes. Es importante asegurarnos que el texto en negrita no se repita constantemente ya que puede ser abrumador y restar valor a otros elementos de la página.</p><p><strong>Balanceando el texto en negrita con otros formatos:</strong> Mientras que el texto en negrita puede ser una forma provechosa de llamar la atención hacia información importante, es importante también saber balancear junto con otros estilos de formato para crear un sistema de jerarquía visual.</p><p>Usando otros estilos como cursivas, subrayado o incluso un color diferente puede darle a tu texto distintos niveles de importancia.</p><p><strong>Evita el abuso del texto en negrita:</strong> Abusar del texto en negrita puede hacer que el contenido sea difícil de leer y reste diseño al resto de tu página.</p><p>Es importante usar el texto en negrita en proporciones escasas, sólo cuando este es realmente necesario y para enfatizar información importante. Evita usar el texto en negrita para párrafos enteros o bloques de texto, ya que esto puede dificultar la lectura a los usuarios y hace indistinguible la información importante del contenido regular.</p><p><strong>Realiza pruebas de accesibilidad</strong>: Al momento de usar texto en negrita, es esencial asegurarnos de que este es accesible a todo los usuarios, incluyendo aquellos que poseen dificultades visuales.</p><p>Los lectores de pantalla pueden tener dificultades para leer texto con mucho estilo, por lo que es importante probar la página utilizando herramientas de accesibilidad para garantizar que el texto en negrita tenga el formato adecuado y sea accesible.</p><h2 id="conclusi-n"><strong><strong>Conclusi</strong>ó<strong>n</strong></strong></h2><p>Para concluir, usar texto en negrita en tu contenido HTML puede ayudarte con efectividad a darle énfasis a la información importante y crear una jerarquía visual en el texto.</p><p>Escoger el grosor correcto para tu contenido y saber balancear con otros estilos de formato, evitar el sobre uso y hacer pruebas de accesibilidad son los pasos necesarios para asegurarnos que nuestro contenido a la hora de usar texto en negrita se mantenga legible y accesible para todo los usuarios.</p><p>Gracias por leer, diviértete en tu proyecto!</p><p>¡Embárcate en un viaje de aprendizaje! <a href="https://joelolawanle.com/contents">Explora más de 200 artículos de expertos sobre desarrollo web</a>. Echa un vistazo a mi blog para ver más de mi fascinante contenido.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Todo en mayúsculas con CSS: ¿Cómo poner texto en mayúsculas con estilo? ]]>
                </title>
                <description>
                    <![CDATA[ Cuando se diseña un sitio web o se trabaja en un proyecto, es posible que desees utilizar texto en mayúsculas por varias razones. Tal vez quieras usar una abreviatura o un acrónimo, enfatizar cierto texto o usarlo como encabezado. Hay varias maneras de poner texto en mayúsculas con HTML. La ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/todo-en-mayusculas-con-css-como-poner-texto-en-mayusculas-con-estilo/</link>
                <guid isPermaLink="false">65ba4de8aa1f2203f0eb029e</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Cristian Fernando Villca Gutierrez ]]>
                </dc:creator>
                <pubDate>Tue, 06 Feb 2024 06:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2024/01/how-to-uppercase-text-in-CSS.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/all-caps-in-css-how-to-uppercase-text-with-style/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">All Caps in CSS - How to Uppercase Text with Style</a>
      </p><h3 id="cuando-se-dise-a-un-sitio-web-o-se-trabaja-en-un-proyecto-es-posible-que-desees-utilizar-texto-en-may-sculas-por-varias-razones-tal-vez-quieras-usar-una-abreviatura-o-un-acr-nimo-enfatizar-cierto-texto-o-usarlo-como-encabezado-">Cuando se diseña un sitio web o se trabaja en un proyecto, es posible que desees utilizar texto en mayúsculas por varias razones. Tal vez quieras usar una abreviatura o un acrónimo, enfatizar cierto texto o usarlo como encabezado.</h3><p>Hay varias maneras de poner texto en mayúsculas con HTML. La primera es escribir el texto en mayúsculas directo en el HTML:</p><pre><code class="language-html">&lt;p&gt;TEXTO EN MAYUSCULAS&lt;/p&gt;
</code></pre><p>La segunda forma es utilizar el método de cadenas de JavaScript <code>toUpperCase()</code> y representarlo en el DOM:</p><pre><code class="language-javascript">const mayusculas = cedena.toUpperCase()

// aqui se muestra en pantalla</code></pre><p>La tercera forma, que veremos en este artículo, es usar la propiedad de transformación de texto de CSS:</p><pre><code class="language-css">selector {
  text-transform: uppercase;
}</code></pre><p>Esto aplica el estilo de mayúsculas en el elemento seleccionado.</p><p>Esta declaración no cambia el contenido del DOM. Por ejemplo, echa un vistazo a este código HTML:</p><pre><code class="language-html">&lt;p class='parrafo'&gt;
  Some text
&lt;/p&gt;</code></pre><p>Y a este estilo:</p><pre><code class="language-css">.parrafo {
  text-transform: uppercase;
}</code></pre><p>En la UI, el texto tendrá un estilo como el siguiente:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-137.png" class="kg-image" alt="image-137" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/01/image-137.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-137.png 1000w" sizes="(min-width: 720px) 720px" width="1000" height="285" loading="lazy"><figcaption>Texto en mayúsculas con CSS&nbsp;</figcaption></figure><p>Pero en el DOM, el texto sigue siendo el mismo:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-139-1.png" class="kg-image" alt="image-139-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2024/01/image-139-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2024/01/image-139-1.png 1000w" sizes="(min-width: 720px) 720px" width="1000" height="144" loading="lazy"><figcaption>El DOM no se altera, solo la vista en la UI</figcaption></figure><p>Cuando copias el texto en el navegador, el texto original "Some text" se copia en algunos navegadores, pero en otros se copia la versión con estilo. </p><h2 id="-deber-as-usar-text-transform-en-css-u-otros-m-todos">¿Deberías usar <code>text-transform</code> en CSS u otros métodos?</h2><p>Si usas mayúsculas por razones de estilo te recomiendo que uses CSS. La razón es que puede haber inconsistencias en la forma en la que los diferentes navegadores y las herramientas del navegador manejan el texto en mayúsculas.</p><p>Una de las diferencias es la inconsistencia entre copiar y pegar el texto en diferentes navegadores.</p><p>Otra inconsistencia es que algunos lectores de pantalla interpretan el texto en mayúsculas como abreviaturas. Por lo tanto, un texto como "SOME TEXT" se leerá como "S.O.M.E. T.E.X.T.", lo que puede afectar la manera en la que el lector comprende el mensaje.</p><p>Sin embargo, vale la pena señalar que algunos lectores de pantalla también interpretan el texto en mayúsculas con CSS como abreviaturas.</p><p>Se recomienda mantener los estilos como estilos. Si deseas tener texto en mayúsculas solo por motivos de estilo, usa CSS y deja el texto original en HTML. Pero si usas mayúsculas para abreviaturas o tienes un motivo específico para tener texto en mayúsculas, puedes escribirlo en HTML.</p><p>Puedes consultar este <a href="https://twitter.com/Mandy_Kerr/status/1285866670284668930">tweet sobre mayúsculas sin CSS</a> para ver las discusiones al respecto. </p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo centrar un elemento  vertical y horizontalmente con posición absoluta en CSS ]]>
                </title>
                <description>
                    <![CDATA[ Los elementos posicionados absolutamente se eliminan del flujo de un documento. Y, a veces, saber cómo colocar correctamente dichos elementos en el centro de la página puede resultar confuso. Quiero decir, CSS ya es confuso. 😅 En este artículo , quiero mostrarles como centrar un elemento absoluto vertical u horizontalmente ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/unthttps-www-freecodecamp-org-news-content-images-size-w2000-2022-05-pexels-jack-hawley-57905-jpgitled/</link>
                <guid isPermaLink="false">6590821ee058cc03f95811b3</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jose Zambrano ]]>
                </dc:creator>
                <pubDate>Tue, 02 Jan 2024 06:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/12/pexels-jack-hawley-57905.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-center-an-absolute-positioned-element/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Center an Absolute Positioned Element Vertically and Horizontally with CSS</a>
      </p><p>Los elementos posicionados absolutamente se eliminan del flujo de un documento. Y, a veces, saber cómo colocar correctamente dichos elementos en el centro de la página puede resultar confuso.</p><p>Quiero decir, CSS ya es confuso. 😅</p><p>En este artículo , quiero mostrarles como centrar un elemento absoluto vertical u horizontalmente – o ambos – en un contenedor.</p><h2 id="c-digo-de-ejemplo"><strong>Código</strong> <strong>de Ejemplo</strong></h2><p>Para centrar un elemento horizontalmente:</p><pre><code class="language-css">elemento {
  position: absolute;
  left: 0;
  right: 0;
  margin: 0 auto;
}
</code></pre><p>Para centrar un elemento verticalmente:</p><pre><code class="language-css">elemento {
  position: absolute;
  top: 0;
  bottom: 0;
  margin: auto 0;
}
</code></pre><p>Para centrar un elemento tanto vertical como horizontalmente:</p><pre><code class="language-css">  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
</code></pre><p>Pero si desea comprender cómo llegué a estas soluciones, siga leyendo para obtener mas explicaciones. </p><h2 id="-c-mo-funcionan-la-posici-n-absoluta"><strong>¿Cómo funcionan la posición absoluta?</strong></h2><p>Por defecto, los elementos tienen una posición <code>static</code> al menos que se especifique lo contrario como <code>absolute</code>, <code>fixed</code>, <code>relative</code> o <code>sticky</code>. Puede leer <a href="https://dillionmegida.com/p/static-relative-absolute-fixed-sticky-positions/">aquí el artículo en inglés de estilos de posición de CSS</a> para entender la diferencia. </p><p>Usaré la siguiente interfaz de usuario para explicar como trabajan los elementos <code>absolute</code> :</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-32.png" class="kg-image" alt="image-32" width="600" height="400" loading="lazy"></figure><p>Este es el código de la interfaz de usuario :</p><pre><code class="language-html">&lt;div class="contenedor"&gt;
  &lt;div class="bloque-azul"&gt;&lt;/div&gt;
  &lt;div class="bloque-verde"&gt;&lt;/div&gt;
  &lt;div class="bloque-negro"&gt;&lt;/div&gt;
&lt;/div&gt;
</code></pre><pre><code class="language-css">.contenedor {
  margin: 20px;
  display: flex;
  border: 1px solid black;
  padding: 20px;
  width: 400px;
}

.bloque-azul,
.bloque-verde,
.bloque-negro{
  width: 100px;
  height: 100px;
}

.bloque-azul {
  background-color: blue;
}

.bloque-verde {
  background-color: green;
}

.bloque-negro {
  background-color: black;
}
</code></pre><p>Este contenedor tiene tres bloques: azul, verde, y negro, respectivamente. Los bloques están actualmente <code>static</code>, por lo que están ordenados en el DOM, de la misma manera que está en el código.</p><p>¿Qué sucede cuando al bloque verde le damos una posición <code>absolute</code> ?</p><pre><code class="language-css">.bloque-verde {
  background-color: green;
  position: absolute;
  margin-left: 20px;
  margin-top: 20px;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-31.png" class="kg-image" alt="image-31" width="600" height="400" loading="lazy"></figure><p>Ahora puedes observar que el bloque verde ha abandonado el flujo del documento. El contenedor solo aplica el <code>display:flex</code> a los elementos azul y negro, y el elemento verde deambula sin afectar o las otros.</p><p>Entonces, ¿qué pasaría si quisiéramos colocar este bloque verde en el centro del contenedor?</p><h2 id="c-mo-centrar-elementos-posicionados-absolutamente"><strong>Cómo centrar elementos posicionados absolutamente </strong></h2><p>Centrar elementos posicionados estéticamente usualmente involucra márgenes automáticos, por lo que <code>margin: auto</code> sería suficiente, ¿verdad?</p><pre><code class="language-css">.bloque-verde {
  background-color: green;
  position: absolute;
  margin: auto;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-33.png" class="kg-image" alt="image-33" width="600" height="400" loading="lazy"></figure><p>Definitivamente no es así. Un elemento <code>absolute</code> , pierde su flujo en el contenedor. Tal vez <code>left: auto</code> y <code>right: auto</code> funcione:</p><pre><code class="language-css">.bloque-verde {
  background-color: green;
  position: absolute;
  left: auto;
  right: auto;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-34.png" class="kg-image" alt="image-34" width="600" height="400" loading="lazy"></figure><p>Aún nada. En este punto, es posible que esté tentado en utilizar valores codificados:</p><pre><code class="language-css">.bloque-azul, .bloque-negro {
  display: none;
}

.bloque-verde {
  background-color: green;
  position: absolute;
  left: 190px;
  top: 90px;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-35.png" class="kg-image" alt="image-35" width="600" height="400" loading="lazy"></figure><p>Este resultado parece perfecto (o eso parece) pero no es la mejor solución porque cuando quiera cambiar el tamaño del contenedor, tiene que cambiar los valores codificados.</p><p>Ahora, veamos cómo puedes centrar elementos en posición absoluta.</p><p>La primera parte es aplicar el <code>position : relative</code> al contenedor:</p><pre><code class="language-css">.contenedor {
  // ...
  position: relative;
}
</code></pre><p>Aplicar una posición relativa al contenedor le da un límite al elemento absoluto. Los elementos absolutos están delimitados por el padre posicionado relativamente más cercano. Pero si nada de esto existe, estará delimitado por la ventana gráfica. </p><p>A continuación, centraremos el bloque horizontalmente. Aplicando la propiedad <code>left</code> y <code>right</code> con el valor 0. Esta propiedad respectivamente especifica la distancia del borde izquierdo (del bloque) al contenedor y el borde derecho al contenedor.</p><pre><code class="language-css">.bloque-verde {
  // ...
  left: 0;
  right: 0;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-36.png" class="kg-image" alt="image-36" width="600" height="400" loading="lazy"></figure><p>El <code>left</code> tiene más prioridad porque el contenedor muestra los elementos de izquierda a derecha.</p><p>La belleza llega con el siguiente estilo:</p><pre><code class="language-css">.bloque-verde {
  // ...
  margin: 0 auto;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-37.png" class="kg-image" alt="image-37" width="600" height="400" loading="lazy"></figure><p>Y ahora tienes un elemento absoluto centrado horizontalmente. Piense en las propiedades <code>left</code> y <code>right</code> especifican un contenedor interno para el bloque. Dentro del contenedor, los márgenes izquierdo y derecho pueden ser <code>auto</code> para que sean iguales y lleven el elemento al centro.</p><p>Para centrar este bloque verticalmente, puedes intuir que va de esta manera:</p><pre><code class="language-css">.bloque-verde {
  // ...
  top: 0;
  bottom: 0;
  margin: auto 0;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-39.png" class="kg-image" alt="image-39" width="600" height="400" loading="lazy"></figure><p>El <code>top</code> y <code>bottom</code> especifican la distancia entre los bordes superior e inferior del bloque, que parece un contenedor interior. El uso de <code>auto</code> crea márgenes iguales tanto para <code>margin-top</code> como en <code>margin-bottom</code>.</p><p>Al unir los dos conceptos, puedes centrar el bloque horizontal y verticalmente de esta manera:</p><pre><code class="language-css">.bloque-verde {
  background-color: green;
  position: absolute;
  right: 0;
  left: 0;
  top: 0;
  bottom: 0;
  margin: auto;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/05/image-38.png" class="kg-image" alt="image-38" width="600" height="400" loading="lazy"></figure><p>Con este enfoque, el elemento permanece en el centro si cambia el tamaño del contenedor.</p><h2 id="para-terminar"><strong>Para terminar</strong></h2><p>Los elementos absolutos se comportan diferentes de los elementos estáticos – abandonan el flujo del documento y, por defecto, no respetan el contenedor de donde fueron declarados.</p><p>Con un elemento padre de posición <code>relative</code> , y un elemento con posición &nbsp;<code>absolute</code> tendrá un límite. Y con las propiedades <code>left</code>, <code>right</code>, <code>top</code> y <code>bottom</code> con el valor en <strong><strong>0</strong></strong> (especificando la distancia de el borde), y con el margen en <strong><strong>auto</strong></strong>, el elemento absoluto se centrara en el elemento padre.</p><p>Tenga en cuenta que esta no es la única forma de centrar un elemento posicionado absolutamente. También he visto a alguien en línea usar <code>transform: translate...</code> para lograr esto también. Puedes investigar sobre esto si quieres.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como centrar un Div con CSS ]]>
                </title>
                <description>
                    <![CDATA[ Hay algunos problemas comunes de codificación con los que te puedes encontrar cuando empieces a practicar lo que has aprendido construyendo proyectos. Un problema común al que te enfrentarás como desarrollador web es cómo colocar un elemento en el centro de una página o dentro de un elemento que actúa ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-centrar-un-div-con-css/</link>
                <guid isPermaLink="false">6535c5fca37ad203ea2a0afe</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Santiago Toquica Yanguas ]]>
                </dc:creator>
                <pubDate>Sun, 17 Dec 2023 18:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/12/pexels-pixabay-161043-1.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-center-a-div-with-css/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Center a Div with CSS</a>
      </p><h3 id="hay-algunos-problemas-comunes-de-codificaci-n-con-los-que-te-puedes-encontrar-cuando-empieces-a-practicar-lo-que-has-aprendido-construyendo-proyectos-">Hay algunos problemas comunes de codificación con los que te puedes encontrar cuando empieces a practicar lo que has aprendido construyendo proyectos.</h3><p>Un problema común al que te enfrentarás como desarrollador web es cómo colocar un elemento en el centro de una página o dentro de un elemento que actúa como su contenedor. Es el omnipresente problema de<em> "¿Cómo centro un div?"</em>.</p><p>En este artículo, veremos cómo podemos centrar elementos utilizando varias propiedades CSS. Veremos ejemplos de código en cada sección y una representación visual de los elementos en todos los ejemplos.</p><h2 id="c-mo-centrar-un-div-utilizando-la-propiedad-css-flexbox"><strong>Cómo centrar un Div utilizando la propiedad CSS Flexbox</strong></h2><p>En esta sección, veremos cómo podemos utilizar la propiedad Flexbox de CSS para centrar un elemento horizontalmente, verticalmente y en el centro de una página/contenedor.</p><p>Puedes usar una imagen si lo prefieres, pero nosotros usaremos un simple círculo dibujado con CSS. Aquí está el código:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;div class="contenedor"&gt;

      &lt;div class="circulo"&gt;

      &lt;/div&gt;

&lt;/div&gt;</code></pre><figcaption>HTML contenedor inicial padre y circulo hijo</figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
}

.circulo {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: black;
}</code></pre><figcaption>CSS inicial con clase contenedor y circulo</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--276-.png" class="kg-image" alt="Renderizado del círculo parte superior izquierda" width="600" height="400" loading="lazy"><figcaption>Círculo renderizado</figcaption></figure><p>El posicionamiento con Flexbox requiere que escribamos el código en la clase del elemento padre o contenedor.</p><h3 id="c-mo-centrar-un-div-horizontalmente-usando-flexbox"><strong>Cómo centrar un Div horizontalmente usando Flexbox</strong></h3><p>Ahora escribiremos el código para centrar el elemento div horizontalmente. Seguimos haciendo uso del círculo que creamos anteriormente.</p><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
  display: flex;
  justify-content: center;
}

.circulo {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: black;
}</code></pre><figcaption>CSS inicial con clase contenedor y circulo</figcaption></figure><p>Hemos añadido dos líneas de código para centrar el círculo horizontalmente. Estas son las líneas que hemos añadido:</p><pre><code class="language-css">display: flex;
justify-content: center;</code></pre><p><code>display: flex;</code> nos permite utilizar Flexbox y sus propiedades.</p><p><code>justify-content: center;</code> alinea el círculo al centro horizontalmente.</p><p>Aquí está la posición de nuestro círculo:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--278-.png" class="kg-image" alt="Renderizado del círculo parte superior central" width="600" height="400" loading="lazy"><figcaption>Círculo centrado horizontalmente</figcaption></figure><h3 id="c-mo-centrar-un-div-verticalmente-usando-flexbox"><strong>Cómo centrar un Div verticalmente usando Flexbox</strong></h3><p>Lo que haremos en esta sección es similar a la anterior, excepto por una línea de código.</p><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
  display: flex;
  align-items: center;
}

.circulo {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: black;
}</code></pre><figcaption>CSS inicial con clase contenedor y circulo</figcaption></figure><p>En este ejemplo, hemos utilizado <code>align-items: center;</code> para centrar el círculo verticalmente. Recuerda que debemos escribir primero <code>display: flex;</code> antes de especificar la dirección.</p><p>Aquí está la posición de nuestro círculo:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--280-.png" class="kg-image" alt="Renderizado del círculo parte central izquierda" width="600" height="400" loading="lazy"><figcaption>Círculo centrado verticalmente</figcaption></figure><h3 id="c-mo-posicionar-un-div-en-el-centro-usando-flexbox"><strong>Cómo posicionar un Div en el centro usando Flexbox</strong></h3><p>En esta sección, colocaremos el círculo en el centro de la página utilizando las propiedades de alineación horizontal y vertical de CSS Flexbox. He aquí cómo:</p><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
  display: flex;
  justify-content: center;
  align-items: center;
}

.circulo {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: black;
}</code></pre><figcaption>CSS inicial con clase contenedor y circulo</figcaption></figure><p>Estas son las tres líneas de código que hemos añadido a la clase contenedor anterior:</p><figure class="kg-card kg-code-card"><pre><code class="language-css">display: flex;
justify-content: center;
align-items: center;</code></pre><figcaption>Centrado con propiedades de flexbox</figcaption></figure><p>Como es de esperar, comenzamos con <code>display: flex;</code> que nos permite utilizar Flexbox en CSS. A continuación, utilizamos las propiedades <code>justify-content</code> (alineación horizontal) y <code>align-items</code> (alineación vertical) para colocar el círculo en el centro de la página.</p><p>Esta es la posición de nuestro círculo:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--282-.png" class="kg-image" alt="Renderizado central en horizontal y vertical del plano" width="600" height="400" loading="lazy"><figcaption>Renderizado círculo</figcaption></figure><h2 id="c-mo-centrar-un-div-horizontalmente-usando-la-propiedad-margin-de-css"><strong>Cómo centrar un Div horizontalmente usando la propiedad</strong> <code>margin</code> <strong>de CSS</strong></h2><p>En esta sección, utilizaremos la propiedad <code>margin</code> para centrar nuestro círculo horizontalmente.</p><p>Volvamos a crear nuestro círculo.</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;div class="contenedor"&gt;

      &lt;div class="circulo"&gt;

      &lt;/div&gt;

&lt;/div&gt;</code></pre><figcaption>HTML inicial contenedor padre y circulo hijo</figcaption></figure><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
}

.circulo {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: black;
}</code></pre><figcaption>CSS inicial con clase contenedor y circulo</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--276-.png" class="kg-image" alt="Renderizado del círculo parte superior izquierda" width="600" height="400" loading="lazy"><figcaption>Renderizado círculo</figcaption></figure><p>Esta vez escribiremos el código en la clase <code>círculo</code>. He aquí cómo:</p><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
}

.circulo {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: black;
  margin: 0 auto;
}</code></pre><figcaption>CSS inicial con clase contenedor y circulo</figcaption></figure><p>Todo lo que hemos añadido es el <code>margen: 0 auto;</code> línea de código a la clase <code>circulo</code>.</p><p>Echemos un vistazo a la posición del círculo:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--278--1.png" class="kg-image" alt="Renderizado del círculo parte superior central" width="600" height="400" loading="lazy"><figcaption>Renderizado círculo</figcaption></figure><h2 id="c-mo-centrar-texto-horizontalmente-con-la-propiedad-css-text-align"><strong>Cómo centrar texto horizontalmente con la propiedad CSS</strong> <code>text-align</code></h2><p>En esta sección, veremos cómo centrar texto horizontalmente.</p><p>Este método sólo funciona cuando trabajamos con texto escrito dentro de un elemento.</p><p>He aquí un ejemplo:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;div class="contenedor"&gt;

    &lt;h1&gt;Hello World!&lt;/h1&gt;
      
&lt;/div&gt;</code></pre><figcaption>HTML inicial contenedor padre y h1 hijo</figcaption></figure><p>En el ejemplo anterior, hemos creado un <code>div</code> con una clase de contenedor y un elemento <code>h1</code> con algo de texto. Esto es lo que aparece en este momento:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--272-.png" class="kg-image" alt="Renderizado del texto parte superior izquierda" width="600" height="400" loading="lazy"><figcaption>Texto renderizado</figcaption></figure><p>Escribamos el código CSS.</p><figure class="kg-card kg-code-card"><pre><code class="language-css">.contenedor {
  width: 500px;
  height: 250px;
  margin: 50px;
  outline: solid 1px black;
}

h1 {
  text-align: center;
}</code></pre><figcaption>CSS inicial con clase contenedor y etiqueta h1</figcaption></figure><p>Para alinear el texto del elemento <code>h1</code> en el centro de la página, tuvimos que utilizar la propiedad <code>text-align</code>, dándole un valor de <code>center</code>. Esto es lo que aparece ahora en el navegador:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/04/Screenshot--274-.png" class="kg-image" alt="Renderizado del texto parte superior central" width="600" height="400" loading="lazy"><figcaption>Texto renderizado</figcaption></figure><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>En este artículo, vimos cómo podemos centrar elementos horizontalmente, verticalmente y en el centro de la página usando <strong>Flexbox</strong> y las propiedades <code>margin</code> y <code>text-align</code> en <strong>CSS</strong>.</p><p>En cada sección, vimos tanto un ejemplo de código como una representación visual de lo que hace el código.</p><p>¡Feliz codificación!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Hojas de estilos de CSS externas: Cómo enlazar CSS a HTML e importar en Head ]]>
                </title>
                <description>
                    <![CDATA[ Es considerado una buena práctica tener tus hojas de estilos de CSS en un archivo externo. Entonces, ¿cómo puedes enlazar ese CSS a tu archivo HTML? Enlazar a un archivo externo de CSS es una parte importante de cualquier  plantilla de HTML [/espanol/news/plantilla-basica-html5-ejemplo-de-codigo/]. Y en este artículo, aprenderemos a ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/hojas-de-estilos-de-css-externas-como-enlazar-css-a-html-e-importar-en-head/</link>
                <guid isPermaLink="false">6490a9c09764040891b7e9a0</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Sebastian Mendez ]]>
                </dc:creator>
                <pubDate>Fri, 14 Jul 2023 19:39:29 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/06/pexels-martin-damboldt-814499.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/external-css-stylesheets-how-to-link-css-to-html-and-import-into-head/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">External CSS Stylesheets – How to Link CSS to HTML and Import into Head</a>
      </p><p>Es considerado una buena práctica tener tus hojas de estilos de CSS en un archivo externo. Entonces, ¿cómo puedes enlazar ese CSS a tu archivo HTML?</p><p>Enlazar a un archivo externo de CSS es una parte importante de cualquier <a href="https://www.freecodecamp.org/espanol/news/plantilla-basica-html5-ejemplo-de-codigo/">plantilla de HTML</a>. Y en este artículo, aprenderemos a cómo hacerlo.</p><h2 id="c-mo-enlazar-un-archivo-css-a-un-archivo-html"><strong>Cómo enlazar un archivo CSS a un archivo HTML</strong></h2><p>Puedes enlazar tu archivo CSS a tu archivo HTML añadiendo un elemento <code>link</code> dentro del elemento <code>head</code> de tu archivo HTML, de este modo:</p><pre><code class="language-html">&lt;!DOCTYPE html&gt;
  &lt;html&gt;
    &lt;head&gt;
      &lt;link rel="stylesheet" href="style.css"&gt;
    &lt;/head&gt;
    &lt;body&gt;
    
    &lt;/body&gt;
&lt;/html&gt;</code></pre><p>El elemento <code>link</code> tiene muchos usos, y es importante especificar los atributos correctos de modo que puedas usarlo para importar una hoja de estilos de CSS. Veremos algunos atributos importantes ahora.</p><h2 id="el-atributo-rel"><strong>El atributo<strong><strong> <code>rel</code> </strong></strong></strong></h2><p>El primero de los atributos indispensables es el atributo <code>rel</code>. Usarás este atributo para decirle al navegador cuál es la relación con el archivo importado.</p><p>Escribirás <code>rel="stylesheet"</code> para decirle al navegador que estás importando una hoja de estilos.</p><h2 id="el-atributo-href"><strong>El atributo<strong><strong> <code>href</code></strong></strong></strong></h2><p>El segundo atributo indispensable es el atributo <code>href</code>, el cual especifica el archivo a importar.</p><p>Una situación común es que el archivo de CSS y el archivo de HTML estén en la misma carpeta. En ese caso puedes escribir <code>href="style.css"</code>.</p><p>Si el archivo de CSS y el archivo de HTML están en diferentes carpetas, necesitarás escribir la dirección correcta a la que necesita ir desde el archivo de HTML al archivo de CSS.</p><p>Por ejemplo, una situación habitual es que el archivo de CSS está en una carpeta que es hermana del archivo de HTML, de este modo:</p><pre><code>project --- index.html
            css ---------- style.css</code></pre><p>En este caso necesitarías escribir la dirección de esta forma <code>"css/styles.css"</code>.</p><h2 id="el-atributo-type"><strong>El atributo<strong><strong> <code>type</code></strong></strong></strong></h2><pre><code class="language-html">&lt;link rel="stylesheet" href="style.css" type="text/css"&gt;</code></pre><p>Se utiliza el atributo <code>type</code> para definir el tipo de contenido que estás enlazando. Para una hoja de estilos, esto sería <code>text/css</code>. Pero ya que <code>css</code> es el único lenguaje de hojas de estilos usado en la web, no es solo opcional, si no es incluso a una buena práctica no incluirlo.</p><h2 id="el-atributo-media"><strong>El atributo<strong><strong> <code>media</code></strong></strong></strong></h2><pre><code class="language-html">&lt;link rel="stylesheet" href="style.css" media="screen and (max-width: 600px)"&gt;</code></pre><p>El atributo media no es visible en el ejemplo. Es un atributo opcional que puedes usar para especificar cuando importar una hoja de estilos determinada. Su valor debe ser una media type / media query.</p><p>Esto puede ser útil en caso de que quieras separar los estilos para diferentes dispositivos y resoluciones de pantalla en diferentes archivos. Necesitarías importar cada archivo de CSS con su propio elemento <code>link</code>.</p><h1 id="conclusi-n"><strong><strong><strong>Conclusión</strong></strong></strong></h1><p>En este artículo, aprendiste a como añadir una hoja de estilos externa a tu página web usando el elemento <code>link</code> y los atributos <code>href</code> y <code>rel</code>.</p><p>También aprendiste que puedes importar múltiples hojas de estilos y usar el atributo <code>media</code> para determinar cuando cada una debería ser aplicada.</p><p>¡Qué te diviertas creando páginas web!</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Color de fuente CSS - Cómo aplicar estilo al texto en HTML ]]>
                </title>
                <description>
                    <![CDATA[ Establecer el color del texto en un sitio web que estás creando puede resultar confuso al principio. Pero en este artículo, aprenderás cómo hacerlo. Cómo establecer el color del texto en HTML En CSS, la propiedad background-color es bastante sencilla para establecer el color de fondo de cualquier cosa. Entonces, ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/color-de-fuente-css-como-aplicar-estilo-al-texto-en-html/</link>
                <guid isPermaLink="false">641cae8655e3ad15a8937026</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ BlackeyeB ]]>
                </dc:creator>
                <pubDate>Mon, 27 Mar 2023 18:36:52 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/03/Cssfontcolor.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/css-font-color-how-to-style-text-in-html/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">CSS Font Color – How to Style Text in HTML</a>
      </p><p>Establecer el color del texto en un sitio web que estás creando puede resultar confuso al principio. Pero en este artículo, aprenderás cómo hacerlo.</p><h2 id="c-mo-establecer-el-color-del-texto-en-html">Cómo establecer el color del texto en HTML</h2><p>En CSS, la propiedad <code>background-color</code> es bastante sencilla para establecer el color de fondo de cualquier cosa.</p><p>Entonces, ¿Qué sucede si deseas establecer el color de primer plano de algo en la página? Especialmente el texto, para el que en condiciones normales no querrías establecer un color de fondo.</p><p>No hay una propiedad de <code>foreground-color</code> en CSS, por lo que hace que esto sea posible es la propiedad <code>color</code>.</p><p>En este artículo, te guiaré a través de cómo configurar el color del texto usando la propiedad color. También veremos las diversas formas en que toma valores.</p><p>La propiedad color toma valores de 4 maneras diferentes: Color con nombre, color hexadecimal, color RGB y color HSL. Veamos cada uno ahora.</p><h2 id="colores-con-nombre">Colores con nombre</h2><p>Como su nombre indica, ingresa la propiedad color y aplica el valor nombrando el color deseado. Puede ser rojo, verde, azul, naranja, carmesí, cian o cualquier otro color con nombre. Hay alrededor de 147 colores con nombre reconocidos por los navegadores.</p><p>La sintaxis básica se ve así:</p><pre><code class="language-css">element {
    color: nombreColor
}
</code></pre><pre><code class="language-html">&lt;p&gt;freeCodeCamp&lt;/p&gt;
</code></pre><pre><code class="language-css"> p {
     color: crimson;
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/named-color.png" class="kg-image" alt="named-color" width="600" height="400" loading="lazy"></figure><h2 id="colores-hexadecimales-o-s-lo-colores-hex-">Colores hexadecimales (O sólo colores Hex)</h2><p>Los valores hexadecimales se utilizan para representar colores con un total de 6 caracteres. Comienzan con el signo almohadilla/número (#), luego cualquier número del 0 al 9 y finalmente cualquier letra de la A a la F.</p><p>Los 2 primeros valores representan el rojo, los dos siguientes representan el verde y los 2 últimos representan el azul. Con valores hexadecimales, no hay límite para los tonos de colores que puedes usar.</p><pre><code class="language-html">&lt;p&gt;freeCodeCamp&lt;/p&gt;
</code></pre><pre><code class="language-css"> p {
    color: #dc143c;
 }
</code></pre><h2 id="colores-rgb">Colores RGB</h2><p>RGB significa rojo, verde y azul. Con RGB, especificas el color en términos de la cantidad de rojo, verde y azul deseados. Los tres se expresan con números entre 0 y 255.</p><p>Hay un tipo de RGB llamado <code>rgba</code>. La 'a' adicional significa alfa, lo que permite especificar la opacidad del color. Toma un valor de 0,0 a 1,0: 0,0 significa 0 % de opacidad, 0,5 significa 50 % de opacidad y 1,0 significa 100 % de opacidad.</p><p>La sintaxis básica es <code>rgba(cantidadDeRojo, cantidadDeVerde, cantidadDeAzul, alfa)</code>. </p><p>Puedes limitarlo a <code>rgba(cantidadDeRojo, cantidadDeVerde, cantidadDeAzul)</code> si no deseas un valor alfa.</p><p>Aquí está la sintaxis de los valores RGB regulares:</p><pre><code class="language-html">&lt;p&gt;freeCodeCamp&lt;/p&gt;
</code></pre><pre><code class="language-css"> p {
   color: rgb(220, 20, 60);
 }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/rgb-color.png" class="kg-image" alt="rgb-color" width="600" height="400" loading="lazy"></figure><p>Y aquí está demostrando el valor alfa en acción con un 50 % (0,5) de opacidad:</p><pre><code class="language-css">p {
    color: rgb(219, 20, 60, 0.5);
}
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/rgb-fifty-percent-opacity.png" class="kg-image" alt="rgb-fifty-percent-opacity" width="600" height="400" loading="lazy"></figure><h2 id="colores-hsl">Colores HSL</h2><p>HSL significa tono, saturación y luminosidad. Es otra forma de especificar el color del texto (y cualquier otra cosa que tome color) en CSS.</p><ul><li>Hue representa la rueda de color en 360°. Entonces, 0° es rojo, 120° es verde y 240° es azul. </li><li>La saturación es la cantidad de gris en el color, expresada como un porcentaje. 0% es el tono de gris y 100% es el color en sí. </li><li>La luminosidad es la cantidad de oscuridad y luminosidad en el color expresada como porcentaje. 0% es negro y 100% es blanco.</li></ul><p>Al igual que con los colores RGB, también puedes establecer la opacidad del color. Entonces, también está hsla.</p><p>La sintaxis básica completa es <code>hsl(GradoColor, PorcentajeSaturación, PorcentajeLuminosidad, alfa)</code>. Puedes limitarlo a <code>hsl(GradoColor, PorcentajeSaturación, PorcentajeLuminosidad)</code> en caso de que no desees un valor alfa.</p><pre><code class="language-html">&lt;p&gt;freeCodeCamp&lt;/p&gt;
</code></pre><pre><code class="language-css"> p {
   color: hsl(348, 83%, 47%);
 }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/hsl-color.png" class="kg-image" alt="hsl-color" width="600" height="400" loading="lazy"></figure><p>Puedes aplicar una opacidad particular al color hsl como este:</p><pre><code class="language-css"> p {
   color: hsla(348, 83%, 47%, 0.5);
  }
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2021/09/hsl-fifty-percent-opacity-1.png" class="kg-image" alt="hsl-fifty-percent-opacity-1" width="600" height="400" loading="lazy"></figure><h2 id="-debes-utilizar-colores-con-nombre-colores-hexadecimales-colores-rgb-o-colores-hsl-para-asignar-colores">¿Debes utilizar colores con nombre, colores hexadecimales, colores RGB o colores HSL para asignar colores?</h2><p>Una de las cosas maravillosas de CSS es que hay múltiples formas de hacer lo mismo. Has visto esto al aplicar colores al texto.</p><p>Dado que puedes aplicar colores de 4 maneras diferentes, debes preguntarte cuál es la mejor para usar.</p><p>Cuando usas colores con nombre, estás un poco limitado en cuanto a cuán lejos puedes llegar al aplicar diferentes tonos de colores. El rojo, el verde, el azul, el amarillo o cualquier otro color con nombre tiene muchas variaciones a las que no tendrás acceso con los colores con nombre. Solo tendrás acceso a alrededor de 147 colores predefinidos reconocidos por los navegadores.</p><p>Los colores hexadecimales son muy dinámicos. Son los más utilizados entre los desarrolladores porque el límite es tu creatividad. Con los colores hexadecimales, puedes usar varios tonos e incluso usar un color que nadie haya usado nunca.</p><p>Los colores RGB son tan dinámicos como los colores hexadecimales. Además de poder especificar cuánto rojo, verde y azul deseas de 0 a 255, también puedes establecer qué tan transparente deseas que sea el color con el valor alfa adicional.</p><p>HSL es el más dinámico de todos. Puedes especificar el color exacto que deseas en grados de 0 a 360 dentro de la rueda de colores, establecer qué tan saturado y oscuro deseas que sea en porcentajes, y también establecer una opacidad de 0.0 a 1.0.</p><p>Realmente, depende de ti, del uso que le quieras dar y de cuán creativo o específico quieras ser.</p><h2 id="conclusi-n">Conclusión</h2><p>La aplicación de colores al texto ayuda a que tu sitio web sea más atractivo para los visitantes. La combinación de colores correcta también puede ayudarte a que el contenido sea más legible.</p><p>En este artículo, has aprendido cómo aplicar colores al texto con los 4 tipos diferentes de valores que puedes usar con la propiedad de color.</p><p>Gracias por leer, y sigue programando.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ejemplo de Media Query en CSS  - Ancho de Pantalla Max y Min para Diseño Adaptable en Dispositivos Móviles ]]>
                </title>
                <description>
                    <![CDATA[ Cuando estás diseñando un sitio web, es realmente importante que tu contenido se vea bien en cualquier tamaño de pantalla. En éste artículo, hablaré de cómo usar el diseño adaptable y media queries para lograrlo. También daré ejemplos de código para media queries usando valores máximos y mínimos de tamaños ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/ejemplo-css-media-query-ancho-de-pantalla-max-y-min-para-diseno-adaptable-en-movil/</link>
                <guid isPermaLink="false">63c46ba4700708073437aa5c</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Benjamín Aurelio González Villaumé ]]>
                </dc:creator>
                <pubDate>Tue, 24 Jan 2023 02:20:30 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/01/temp.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/media-query-css-example-max-and-min-screen-width-for-mobile-responsive-design/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Media Query CSS Example – Max and Min Screen Width for Mobile Responsive Design</a>
      </p><p>Cuando estás diseñando un sitio web, es realmente importante que tu contenido se vea bien en cualquier tamaño de pantalla.</p><p>En éste artículo, hablaré de cómo usar el diseño adaptable y media queries para lograrlo. También daré ejemplos de código para media queries usando valores máximos y mínimos de tamaños de pantalla.</p><h2 id="-qu-es-el-dise-o-adaptable">¿Qué es el Diseño Adaptable?</h2><p>El Diseño Adaptable es la práctica de asegurarse que tu contenido se vea bien en todos los tamaños de pantalla. Todo en el sitio web incluido el diseño, la fuente y las imágenes deberían adaptarse automáticamente al dispositivo del usuario. </p><p>A principios de los 2000, los programadores se enfocaban en hacer que sus sitios web se vieran bien en pantallas más grandes como laptops y computadoras de escritorio. Hoy en día, debes considerar dispositivos como teléfonos móviles, tabletas e inclusive relojes. </p><p>Un importante componente del diseño adaptable son los media queries.</p><h2 id="-qu-es-un-media-query">¿Qué es un Media Query?</h2><p>En CSS, un media query (en español "consultas de medios") se utiliza para aplicar una series de estilos basados en ciertas características del navegador incluido ancho, alto o resolución de una pantalla. </p><p>Puedes ver un ejemplo de media query en la página de <a href="https://www.freecodecamp.org/espanol/learn/">currículo de freeCodeCamp</a></p><p>Para pantallas más grandes, como las de un ordenador de escritorio, podemos ver un menú de búsqueda en la esquina superior izquierda.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/fcc_tranl_1_1-1.png" class="kg-image" alt="fcc_tranl_1_1-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/fcc_tranl_1_1-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/fcc_tranl_1_1-1.png 839w" sizes="(min-width: 720px) 720px" width="839" height="187" loading="lazy"></figure><p>Pero en dispositivos móviles, no se encuentra el buscador y sólo tenemos el menú de opciones y el botón de registro.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/fcc_tranl_1_2.png" class="kg-image" alt="fcc_tranl_1_2" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/fcc_tranl_1_2.png 600w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/fcc_tranl_1_2.png 682w" width="682" height="157" loading="lazy"></figure><h2 id="sintaxis-b-sica-de-un-media-query">Sintaxis básica de un media query</h2><p>Aquí está la sintaxis básica de un media query en CSS:</p><pre><code class="language-css">@media tipo-de-medio (característica-del-medio){
/*Los estilos van aquí*/
}</code></pre><p>Veamos por partes lo que está sintaxis significa.</p><p>La <code>@media</code> &nbsp;es un tipo de <code>At-rule</code> ("regla de arroba") en CSS. Estas reglas dictarán cómo el CSS se verá basado en ciertas condiciones.</p><p>El tipo de medio se refiere a la categoría de medio para el dispositivo. Los diferentes medios incluyen <code>all</code> (todos), <code>print</code> (impresoras), <code>screen</code> (pantallas) y <code>speech</code> (discurso).</p><ul><li>all (todos) - funcionan para todos los dispositivos</li><li>print (impresoras) - funciona para dispositivos donde el medio es el modo de vista preliminar de impresión</li><li>screen (pantallas) - funciona para dispositivos con pantallas</li><li>speech (discurso) - funciona para dispositivos como lectores de pantalla donde el contenido le es leído al usuario por el dispositivo.</li></ul><p>Según la <a href="https://developer.mozilla.org/es/docs/Web/CSS/@media">documentación</a>,</p><blockquote>Excepto cuando se utilizan los operadores lógicos <code>not</code> o <code>only</code>, el tipo de medio es opcional y el tipo <code>all</code> está implícito.</blockquote><p>Puedes omitir el tipo de medio y usar la siguiente sintaxis en su lugar.</p><pre><code class="language-css">@media (característica-del-medio){
/*Los estilos van aquí*/
}</code></pre><p>La característica del medio se refiere a las características del navegador que incluye altura y anchura del viewport, orientación o relación de aspecto. Para una lista completa de las características de medios, por favor visita <a href="https://developer.mozilla.org/es/docs/Web/CSS/Media_Queries/Using_media_queries">la documentación de MDN</a>.</p><p>Para éste artículo, nos centraremos en la característica del medio "width" (en español "ancho").</p><p>Si quieres crear media queries más complejos, puedes usar operadores lógicos.</p><ul><li><code>and</code> - Éste operador se usa para unir múltiples características de medio. Si todas las características de medio son verdaderas entonces los estilos dentro de las llaves serán aplicados a la página. </li><li><code>not</code> - Este operador invierte una consulta verdadera a falsa y una consulta falsa a verdadera. </li><li><code>,</code> (coma) - Éste operador separa múltiples características de medios por comas y aplica los estilos dentro de las llaves si una de las condiciones es verdadera. </li></ul><h2 id="ejemplos-de-media-query">Ejemplos de media query</h2><p>Veamos algunos ejemplos que muestran cómo usar los media queries en CSS.</p><p>En el primer ejemplo, queremos que el color de fondo cambie a azul cuando el ancho del dispositivo sea 600px o menos. </p><p>En el CSS, queremos añadir <code>(max-width: 600px)</code> a la característica del medio que le dice a la computadora que identifique los dispositivos con un ancho de pantalla de 600px o menos.</p><p>Dentro del media query, cambiamos los estilos del fondo para el elemento body <code>background-color: #87ceeb;</code>.</p><p>Aquí está el media query completo:</p><pre><code class="language-css">@media (max-width: 600px) {
  body {
    background-color: #87ceeb;
  }
}</code></pre><p>Aquí está el ejemplo en CodePen. Si das clic en el icono "Edit on CodePen" en la esquina superior derecha, puedes hacer pruebas en Codepen. </p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_gOjXgvj" src="https://codepen.io/Tezcatlipoca/embed/preview/gOjXgvj?default-tabs=css%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=gOjXgvj" title="Ejemplo de Media Query #1 (color de fondo)" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" style="width: 100%; overflow: hidden;" loading="lazy"></iframe></figure><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2023/01/fcc_tranl_1_3.png" class="kg-image" alt="fcc_tranl_1_3" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2023/01/fcc_tranl_1_3.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2023/01/fcc_tranl_1_3.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2023/01/fcc_tranl_1_3.png 1129w" sizes="(min-width: 720px) 720px" width="1129" height="486" loading="lazy"></figure><p>En el segundo ejemplo, queremos cambiar el color de fondo de azul a rojo si el dispositivo tiene un ancho de pantalla entre 600 y 760px. Podemos usar el operador lógico <code>and</code> para lograr esto.</p><pre><code class="language-css">@media (min-width: 600px) and (max-width: 768px) {
  body {
    background-color: #de3163;
  }
}</code></pre><p>Aquí está el ejemplo completo en CodePen para que pruebes:</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_rNrYjoM" src="https://codepen.io/Tezcatlipoca/embed/preview/rNrYjoM?default-tabs=html%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=rNrYjoM" title="Ejemplo de Media Query #2 (color de fondo)" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" style="width: 100%; overflow: hidden;" loading="lazy"></iframe></figure><p>Cuando pruebes con ello, deberías ver que el color de fondo es azul si el ancho de pantalla es por debajo de 600px o por encima de 769px </p><h2 id="-deber-as-escribir-un-media-query-para-cada-dispositivo-en-el-mercado">¿Deberías escribir un media query para cada dispositivo en el mercado? </h2><p>La respuesta corta a esa pregunta es no.</p><p>Hay demasiados dispositivos en el mercado para intentar escribir un media query para cada dispositivo. La tecnología está siempre cambiando lo que significa que nuevos dispositivos estarán siempre emergiendo.</p><p>Es más importante que identifiques un rango de dispositivos usando media queries. En el <a href="https://www.freecodecamp.org/espanol/news/tutorial-de-css-de-consultas-de-medios-resoluciones-y-mas/">artículo de freeCodeCamp de Cem Eygi</a>, enumera algunos puntos de ruptura comunes utilizados para las consultas de medios.</p><ul><li>320px — 480px: Dispositivos móviles</li><li>481px — 768px: iPads, Tabletas</li><li>769px — 1024px: pantallas pequeñas, laptops</li><li>1025px — 1200px: Computadoras de escritorio, pantallas grandes</li><li>1201px y más —  Pantallas extra-grandes, TV</li></ul><h2 id="conclusi-n">Conclusión</h2><p>El Diseño Adaptable es la práctica de asegurarse que tu contenido se verá bien en todos los tamaños de pantalla. Todo en el sitio web incluido el diseño, la fuente y las imágenes deberían adaptarse automáticamente al dispositivo del usuario.</p><p>En CSS, un media query es usado para aplicar una serie de estilos basados en las características del navegador incluyendo el ancho, alto o resolución de una pantalla.</p><p>Aquí está la sintaxis básica para un media query en CSS.</p><pre><code class="language-css">@media (característica-del-medio){
/*Los estilos van aquí*/
}</code></pre><p>El tipo de medio es opcional a menos que uses los operadores lógicos <code>not</code> u <code>only</code>. Si el tipo de medio es omitido entonces el media query apuntará a todos los dispositivos.</p><p>Espero que hayas encontrado éste artículo de ayuda y la mejor de la suerte en tu recorrido por CSS.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ HTML vs. Body: Cómo establecer el ancho y el alto para una página de tamaño completa ]]>
                </title>
                <description>
                    <![CDATA[ El CSS es complejo, pero también puede ser flexible, y es esto mismo lo que nos permite arrojar estilos sin mucho cuidado en nuestros archivos CSS. Nuestra página aún carga. No hay "crashes". Cuando hablamos del ancho y el alto de una página, ¿sabes qué es lo que se debe ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/html-pagina-ancho-alto/</link>
                <guid isPermaLink="false">6367daa91c44c307f6c1e069</guid>
                
                    <category>
                        <![CDATA[ CSS ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Romina ]]>
                </dc:creator>
                <pubDate>Wed, 30 Nov 2022 18:22:51 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2022/11/william-warby-WahfNoqbYnM-unsplash--1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/html-page-width-height/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">HTML vs Body: How to Set Width and Height for Full Page Size</a>
      </p><p>El CSS es complejo, pero también puede ser flexible, y es esto mismo lo que nos permite arrojar estilos sin mucho cuidado en nuestros archivos CSS.</p><p>Nuestra página aún carga. No hay "crashes".</p><p>Cuando hablamos del ancho y el alto de una página, ¿sabes qué es lo que se debe configurar en el elemento <code>HTML</code>? ¿Qué hay del elemento <code>body</code>?</p><p>¿Simplemente colocas algunos estilos en ambos elementos y esperas que resulte de la mejor manera?</p><p>Si lo haces, no eres la única persona en esta situación. </p><p>Las respuestas a esas preguntas no son intuitivas. </p><p>Soy 100% culpable de emplear estilos en ambos elementos en el pasado, sin considerar de forma apropiada cuál es la propiedad que debería ser aplicada a cada elemento. ?‍♂️</p><p>No es raro ver propiedades de CSS aplicadas tanto al elemento <code>HTML</code> como al <code>body</code>, de esta forma:</p><pre><code>html, body {
     min-height: 100%;
}
</code></pre><h2 id="-esto-importa"><strong>¿Esto importa?</strong></h2><p>Sí, importa.</p><p>La definición vista más arriba crea un problema:</p><p>Configurar el <code>min-height</code> en 100% en ambos elementos no permite que el elemento <code>body</code> ocupe toda la página como se podría esperar. Si se chequean los valores de estilo luego de la ejecución con las herramientas de desarrollo, el elemento <code>body</code> tiene un alto de cero. </p><p>Mientras, el elemento <code>HTML</code> tiene una altura igual a la parte visible de la página en el navegador. </p><p>Mira la siguiente captura de pantalla desde los Chrome Dev Tools:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2021/02/empty_body.png" class="kg-image" alt="empty_body" width="600" height="400" loading="lazy"><figcaption>El elemento body tiene un margen por defecto de 8px, indicado por la barra en la parte superior. El valor de la altura es 0.</figcaption></figure><h2 id="-por-qu-sucede-esto"><strong>¿Por qué sucede esto?</strong></h2><p>Utilizar un porcentaje como valor para un tamaño requiere que el elemento referencie a un padre sobre el cual basar la proporción. </p><p>El elemento <code>HTML</code> referencia al viewport que tiene una altura igual a su parte visible. Sin embargo, solo configuramos el <code>min-height</code> al elemento <code>HTML</code>... NO un valor de altura. </p><p>Entonces, el elemento <code>body</code> no tiene un valor de altura de un padre para referenciar al calcular a qué debería ser igual el 100%.</p><h2 id="y-el-problema-puede-estar-escondido">Y el problema puede estar escondido</h2><p>Si has comenzado con suficiente contenido para completar el <code>body</code> de la página, quizás no hayas notado este problema. </p><p>Y para hacerlo aún más difícil de notar, si se configura un <code>background-color</code> en ambos elementos o inclusive solo en uno de ellos, el viewport tomará ese color. Esto da la impresión de que el elemento <code>body</code> es tan alto como el viewport.</p><p>No lo es. Su altura aún es cero. </p><p>La imagen de más arriba fue tomada de una página con el siguiente código CSS:</p><pre><code>html, body {
    min-height: 100%;
}
body { background-color: dodgerblue; }
</code></pre><h3 id="-herencia-a-la-inversa"><strong>¿Herencia a la inversa?</strong></h3><p>En un giro extraño, el elemento <code>HTML</code> asume el <code>background-color</code> del elemento <code>body</code> si no se configura un <code>background-color</code> por separado para el mismo.</p><h2 id="-entonces-cu-l-es-el-alto-ideal-para-una-p-gina-responsiva"><strong>¿Entonces cuál es el alto ideal para una página responsiva?</strong></h2><p>Durante años, la respuesta fue la siguiente:</p><pre><code>html {
    height: 100%;
}
body {
    min-height: 100%;
}
</code></pre><p>Esto permite que el elemento <code>HTML</code> referencie al viewport padre y tenga un valor de altura igual al 100% del valor del viewport.</p><p>Con el elemento <code>HTML</code> recibiendo un valor de altura, el <code>min-height</code> asignado al elemento <code>body</code> le da una altura inicial que coincide con el del elemento padre.</p><p>Esto permite que el <code>body</code> pueda crecer en altura si el contenido es mayor a la zona visible de la página. </p><p>La única desventaja de esto es que el elemento <code>HTML</code> no puede crecer más allá del alto del espacio visible del viewport. Sin embargo, permitir que el elemento <code>body</code> pueda ir más allá del elemento <code>HTML</code> se ha considerado una práctica aceptable. </p><h2 id="la-soluci-n-moderna-se-ha-simplificado">La solución moderna se ha simplificado</h2><pre><code>body { min-height: 100vh; }
</code></pre><p>Este ejemplo utiliza unidades &nbsp;<code>vh</code> (alto del viewport) para permitir que el <code>body</code> configure un alto mínimo en base al alto total del viewport.</p><p>Como se ha mencionado previamente respecto al <code>background-color</code>, si no se configura un valor de altura para el elemento <code>HTML</code>, este asumirá que el valor es aquel que se le otorga al elemento <code>body</code>. </p><p>Por lo tanto, esta solución evita que el elemento <code>body</code> se extienda por demás como en la solución anterior y ¡ambos elementos crecerán con el contenido!</p><p>El uso de unidades <code>vh</code> ha causado algunos inconvenientes en navegadores en dispositivos móviles, pero <a href="https://developer.chrome.com/blog/url-bar-resizing/">parece que Chrome y Safari ahora manejan estas unidades de forma consistente.</a></p><h2 id="el-alto-de-p-gina-puede-causar-que-aparezca-una-barra-de-desplazamiento-horizontal"><strong>El alto de página puede causar que aparezca una barra de desplazamiento horizontal</strong></h2><p>Esperen, ¿qué?</p><p>¿No debería esto decir "ancho de página"?</p><p>No.</p><p>En otra serie extraña de eventos, el alto de página puede activar la aparición de la barra de desplazamiento horizontal en el navegador.</p><p>Cuando el contenido de la página es más extenso que la altura del viewport, se activa la barra de desplazamiento vertical a la derecha. Esto puede causar que la página automáticamente también obtenga una barra de desplazamiento horizontal.</p><h2 id="entonces-cu-l-es-la-soluci-n"><strong>Entonces, ¿cuál es la solución?</strong></h2><p>Quizás puedas dormir mejor sabiendo que comienza con la configuración del ancho de página.</p><p>Este problema aparece cuando cualquier elemento - no solo el de <code>HTML</code> o el <code>body</code> - se configura en 100vw (ancho de viewport).</p><p>Las unidades de viewport no tienen en cuenta los 10 pixeles (aproximadamente) que toma la barra de desplazamiento vertical.</p><p>En consecuencia, cuando se activa la barra de desplazamiento vertical, también aparece la horizontal.</p><h2 id="-c-mo-configurar-la-p-gina-para-tomar-el-ancho-completo">¿Cómo configurar la página para tomar el ancho completo?</h2><p>Quizás no se deba hacer.</p><p>El no establecer un ancho en los elementos <code>HTML</code> y <code>body</code> provoca que los mismos tomen por defecto el tamaño total de la pantalla. Si estableces un ancho distinto a auto, considera utilizar una regla CSS para configurar los valores iniciales primero. </p><p>Recuerda, por defecto, el elemento <code>body</code> tiene un margen de 8px en todos sus lados.</p><p>Una regla de CSS para establecer los valores iniciales puede remover esto. De otra forma, el configurar el ancho en 100% antes de quitar los márgenes puede ocasionar que el elemento body se desborde. Aquí está la regla CSS que utilizo:</p><pre><code>* { 
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
</code></pre><h2 id="c-mo-establecer-el-ancho-a-tu-preferencia">Cómo establecer el ancho a tu preferencia</h2><p>Aunque no siempre sea necesario establecer un ancho, en general lo hago. </p><p>Quizás solo sea un hábito.</p><p>Si estableces un ancho de 100% en el elemento, <code>body</code> obtendrás una página que tome el ancho total. Esto es prácticamente lo mismo que no configurar un ancho y dejar que simplemente se tome el valor por defecto. </p><p>Si quieres utilizar el elemento <code>body</code> como un contenedor más pequeño y dejar que el elemento <code>HTML</code> rellene la página, podrías configurar un valor de <code>max-width</code> en el <code>body</code>.</p><p>Aquí hay un ejemplo:</p><pre><code>html { background-color: #000; } 
body {
    min-height: 100vh;
    max-width: 400px;
    background-color: papayawhip; 
    margin: 0 auto;
}</code></pre><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>Cuando no se provee un valor de altura para el elemento <code>HTML</code>, configurar un alto y/o <code>min-height</code> en el elemento <code>body</code> a 100% da como resultado una altura cero (antes de que agregues contenido).</p><p>Sin embargo, cuando no se provee un valor de ancho al elemento <code>HTML</code>, configurar el mismo del elemento <code>body</code> a 100% resulta en una página que toma el ancho completo. </p><p>Esto puede ser poco intuitivo y confuso.</p><p>Para crear una página que ocupe el alto completo y que sea responsiva, configura el <code>min-height</code> del elemento <code>body</code> en 100vh.</p><p>Si estableces un ancho de página, elige 100% por sobre 100vw para evitar la aparición sorpresa de barras de desplazamiento horizontales.</p><p>Te dejaré con un tutorial de mi canal de YouTube que muestra las configuraciones de alto y ancho en CSS para una página HTML que ocupa todo el tamaño de pantalla y se adapta a su contenido:</p><figure class="kg-card kg-embed-card" data-test-label="fitted">
        <div class="fluid-width-video-container">
          <div style="padding-top: 56.17833333333333%;" class="fluid-width-video-wrapper">
            <iframe src="https://www.youtube.com/embed/dpuKVjX6BJ8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" title="Embedded content" loading="lazy" name="fitvid0" style="box-sizing: inherit; margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; font-size: 22px; vertical-align: middle; position: absolute; top: 0px; left: 0px; width: 720px; height: 404.484px;"></iframe>
          </div>
        </div>
      </figure><p>¿Tienes alguna otra forma de establecer el alto y el ancho por medio de CSS que sea de tu preferencia?</p><p>¡Comparte tu método!</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
