<?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[ Diseño Web Responsive - 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[ Diseño Web Responsive - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 15 May 2026 04:13:45 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/diseno-web-responsive/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Diseño web adaptativo: cómo hacer que un sitio web se vea bien en teléfonos y tabletas ]]>
                </title>
                <description>
                    <![CDATA[ En el panorama de los dispositivos conectados evolucionando rápidamente, el diseño web adaptativo (adaptable a cualquier dispositivo) sigue siendo crucial en el desarrollo web. No hace mucho tiempo, el término "diseño web adaptativo" no existía. Pero hoy, la mayoría de nosotros hemos tenido que adoptarlo hasta cierto punto.  Según ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/diseno-web-adaptable-como-hacer-que-un-sitio-web-se-vea-bien-en-telefonos-y-tabletas/</link>
                <guid isPermaLink="false">641e3d3f083d0a0781fde500</guid>
                
                    <category>
                        <![CDATA[ Diseño Web Responsive ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ BlackeyeB ]]>
                </dc:creator>
                <pubDate>Tue, 04 Apr 2023 01:58:58 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2023/03/curve-design-futuristic-lines-911738.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Responsive Web Design – How to Make a Website Look Good on Phones and Tablets</a>
      </p><p>En el panorama de los dispositivos conectados evolucionando rápidamente, el diseño web adaptativo (adaptable a cualquier dispositivo) sigue siendo crucial en el desarrollo web.</p><p>No hace mucho tiempo, el término "diseño web adaptativo" no existía. Pero hoy, la mayoría de nosotros hemos tenido que adoptarlo hasta cierto punto.</p><p> <a href="https://www.statista.com/statistics/275814/mobile-share-of-organic-search-engine-visits/">Según (las estadísticas) Statistica</a>, a partir de 2019, el 61% de todas las visitas de búsqueda de Google se realizan en un dispositivo móvil. En septiembre de 2020, <a href="https://webmasters.googleblog.com/2020/03/announcing-mobile-first-indexing-for.html">Google cambiará su algoritmo de búsqueda</a> para priorizar los sitios web compatibles con dispositivos móviles.</p><p><strong>En esta publicación cubriré lo siguiente:</strong></p><ul><li>¿Qué es el diseño web adaptativo? </li><li>La metaetiqueta viewport y lo que hace </li><li>Técnicas efectivas utilizadas en el diseño web responsive para adaptarse a dispositivos móviles y tabletas </li><li>Herramientas para ayudar a simular y monitorizar la experiencia del usuario de dispositivos móviles y tabletas</li></ul><h2 id="-qu-es-el-dise-o-web-adaptativo-rwd-">¿Qué es el diseño web adaptativo? (RWD)</h2><p>El diseño web adaptativo se enfoca en el entorno del usuario de un sitio web. El entorno del usuario dependerá de qué dispositivo tenga conectado a Internet.</p><p>Hay muchas características de los dispositivos que proporcionan oportunidades para un enfoque centrado en el usuario. Algunas de estas incluyen:</p><ul><li>conexión de red </li><li>tamaño de pantalla </li><li>tipo de interacción (pantallas táctiles, almohadillas táctiles) </li><li>resolución de pantalla.</li></ul><p>Antes de que el diseño web adaptativo fuera popular, muchas empresas administraban un sitio web completamente separado que recibía el tráfico reenviado en función del agente de usuario.</p><p>Pero en el diseño web adaptativo, el servidor siempre envía el mismo código HTML a todos los dispositivos, y se usa CSS para alterar la representación de la página en el dispositivo.</p><p>Independientemente de las dos estrategias anteriores, el primer paso para crear un sitio web para teléfono o tableta es asegurarse de que el navegador conozca la intención. Aquí es donde entra en juego la metaetiqueta viewport.</p><h2 id="la-metaetiqueta-viewport-para-identificar-un-sitio-web-m-vil">La metaetiqueta Viewport para identificar un sitio web móvil</h2><p>La metaetiqueta viewport le indica al navegador cómo ajustar la página al ancho de cada dispositivo.</p><p>Cuando el elemento meta viewport está ausente, los navegadores móviles mostrarán páginas web con la configuración de escritorio predeterminada. Esto da como resultado una experiencia aparentemente alejada y no adaptativo.</p><p>A continuación se muestra una implementación estándar:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;meta name="viewport" content="width=device-width,initial-scale=1"/&gt;</code></pre><figcaption>Ejemplo de metaetiqueta de viewport</figcaption></figure><p>Ahora que el navegador sabe lo que sucede, ¿Podemos utilizar técnicas populares para hacer nuestro sitio web adaptativo?</p><h2 id="consultas-media-css-para-diferentes-tama-os-y-orientaciones-de-pantalla">Consultas @media CSS para diferentes tamaños y orientaciones de pantalla</h2><p>Si eres nuevo en el diseño web adaptativo, las consultas @media son la primera y más importante característica de CSS que debes aprender. Las consultas @media te permiten diseñar elementos según el ancho de la ventana gráfica. Una estrategia popular de CSS es escribir estilos móviles primero y construir sobre ellos con estilos más complejos y específicos de escritorio.</p><p>Las consultas @media son una parte importante del diseño web adaptativo que se usa comúnmente para diseños de cuadrícula, tamaños de fuente, márgenes y relleno que difieren entre el tamaño y la orientación de la pantalla.</p><p>A continuación, se muestra un ejemplo de un caso de uso común de estilo móvil primero en el que una columna tiene un ancho del 100 % para dispositivos más pequeños, pero en viewports más grandes es del 50 %.<br></p><figure class="kg-card kg-code-card"><pre><code class="language-css">.column {
  width: 100%;
}

@media (min-width: 600px) {
  .column {
    width: 50%;
  }
}</code></pre><figcaption>Primer ejemplo de CSS móvil</figcaption></figure><p>El código anterior es un ejemplo simple, pero lo que realmente está haciendo es bastante interesante.</p><ol><li>Al considerar el móvil primero, el elemento "columna" se configura para tener un ancho del 100%; </li><li>Al usar una consulta @media de <code>min-width</code>, definimos reglas específicamente para viewports con un ancho mínimo de <code>600px</code> (ventanas de visualización más anchas que <code>600px</code>). Por lo tanto, para viewports de más de <code>600px</code>, nuestro elemento de columna tendrá un ancho del 50 % de su elemento principal.</li></ol><p>Si bien las consultas @media son esenciales para el diseño web adaptativo, muchas otras características nuevas de CSS también se están adoptando ampliamente y son compatibles con los navegadores. Flexbox es una de estas nuevas e importantes características de CSS en términos de diseño web responsive.</p><h2 id="-qu-es-flexbox">¿Qué es FlexBox?</h2><p>Quizás te estés preguntando: "¿Qué hace Flexbox?" La mejor pregunta es: "¿Qué no puede hacer Flexbox?" ¿Cuál es la forma más fácil de centrar verticalmente con CSS? FlexBox. ¿Cómo se crea una grid layout adaptativo? Flexbox. ¿Cómo podemos lograr la paz mundial? Flexbox.</p><p>El módulo Flexbox Layout (Flexible Box) proporciona una forma más eficiente de diseñar, alinear y distribuir el espacio entre los elementos de un contenedor, incluso cuando su tamaño es dinámico (de ahí la palabra "flex").</p><p>En el siguiente ejemplo, combinamos consultas @media como se explicó anteriormente para crear una cuadrícula adaptativo.</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;style&gt;
  main {
    background: #d9d7d5;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
  }

  div {
    background: #767775;
    flex-basis: 100%;
    height: 100px;
    margin-bottom: 0.5rem;
  }

  @media (min-width: 600px) {
    main {
      flex-wrap: nowrap;
    }

    div {
      flex-basis: 33%;
    }
  }
&lt;/style&gt;
&lt;main&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
&lt;/main&gt;</code></pre><figcaption>Ejemplo de CSS flexbox</figcaption></figure><p>Logramos lo siguiente con este código:</p><ol><li>Establecer un diseño de flexbox con <code>display: flex</code> en nuestro elemento contenedor <code>main</code>.</li><li>Estilo para móvil primero. Configuramos el elemento <code>main</code> a <code>flex-wrap: wrap</code> lo que permite que los elementos secundarios se envuelvan dentro de nuestro diseño de caja flexible (flexbox layout) como se ilustra a continuación en la figura 1. Establecemos &nbsp;<code>flex-basis: 100%</code> en nuestros elementos <code>div</code> para garantizar que abarquen el 100% del ancho principal en el diseño de flexbox (figura 1).</li><li>Estilo para dispositivos más grandes como tabletas y ordenadores de escritorio. Utilizamos una consulta @media similar a nuestro ejemplo de la sección anterior para configurar nuestro elemento <code>main</code> del contenedor a <code>flex-wrap: nowrap</code>. Esto asegura que los elementos secundarios no se ajusten y que mantengan una columna dentro de un tipo de diseño de fila. <br>Al establecer <code>div</code> en &nbsp;<code>flex-basis: 33%</code> dentro de la consulta @media, establecemos columnas que tienen un 33% del ancho del padre (parent).</li><li>En este ejemplo, la magia aparecería en dispositivos más grandes con nuestras reglas combinadas de consultas @media y flexbox. porque definimos <code>display: flex</code> , y debido a que no anulamos la regla dentro de la consulta @media, tenemos un diseño flexible para dispositivos móviles, tabletas y computadoras de escritorio. La consulta @media <code>flex-basis: 33%</code> y las reglas heredadas de <code>display: flex</code> nos darán un diseño de caja flexible reconocible como se ve en la figura 2. En el pasado, para lograr este tipo de diseño de columna, tendríamos que hacer un trabajo arduo y escribir enredos de CSS.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/grid-mobile-1.png" class="kg-image" alt="grid-mobile-1" width="600" height="400" loading="lazy"><figcaption>Figura 1: Ejemplo de cuadrícula de flexbox móvil</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/grid-desktop.png" class="kg-image" alt="grid-desktop" width="600" height="400" loading="lazy"><figcaption>Figura 2: Ejemplo de cuadrícula Flexbox de escritorio</figcaption></figure><p>Flexbox proporciona una excelente manera de lograr diseños variados y fluidos. En algunos casos, es posible que no tengamos esa libertad en el espacio vertical. Es posible que necesitemos encajar un elemento dentro de una altura fija. En esta situación, tenemos otra técnica a nuestra disposición: el desplazamiento horizontal.</p><h2 id="desplazamiento-horizontal-con-desplazamiento-de-desbordamiento">Desplazamiento horizontal con desplazamiento de desbordamiento</h2><p>Puede llegar un momento en que tenga contenido que desborde la ventana gráfica (viewport) sin una forma elegante de manejarlo. He aquí... ¿Overflow scroll al rescate?</p><p>Los usos comunes de esta técnica incluyen tablas y menús desplazables. <br>A continuación se muestra un ejemplo de un menú desplazable. </p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;style&gt;
  menu {
    background: #d9d7d5;
    padding: 0.25rem;
    overflow-y: scroll;
    white-space: nowrap;
  }

  span {
    background: #767775;
    color: #ffffff;
    display: inline-block;
    margin: 0.25rem;
    padding: 0.5rem;
  }
&lt;/style&gt;
&lt;menu&gt;
  &lt;span&gt;Responsive Web Design&lt;/span&gt;
  &lt;span&gt;RWD&lt;/span&gt;
  &lt;span&gt;Responsive menu&lt;/span&gt;
  &lt;span&gt;Overflow scroll example&lt;/span&gt;
  &lt;span&gt;This is a lot of content!&lt;/span&gt;
  &lt;span&gt;Yes&lt;/span&gt;
  &lt;span&gt;we&lt;/span&gt;
  &lt;span&gt;have&lt;/span&gt;
  &lt;span&gt;another&lt;/span&gt;
  &lt;span&gt;item&lt;/span&gt;
&lt;/menu&gt;</code></pre><figcaption>Ejemplo de menú de desplazamiento horizontal</figcaption></figure><p>¿¡Cómo hiciste eso!? Hagamos una inmersión más profunda.</p><ul><li><code>overflow-y: scroll</code> es el ingrediente clave de esta receta. Al especificarlo, los elementos hijos desbordarán el eje horizontal con un comportamiento de desplazamiento.</li><li>¡No tan rapido! Aunque puedas pensar que <code><code>overflow-y</code></code> sería suficiente, también tenemos que decirle al navegador que no envuelva los elementos hijos con <code>white-space: nowrap</code></li></ul><p>Ahora que tenemos algunas técnicas de diseño RWD bajo la manga, echemos un vistazo a los elementos que plantean desafíos específicos a su naturaleza visual: imágenes y video.</p><h2 id="im-genes-adaptativas"><strong><strong>Im</strong>á<strong>ge</strong>ne<strong>s</strong> </strong>adaptativas</h2><p>Mediante el uso de atributos de etiquetas de imágenes, podemos acomodar una variedad de dispositivos y resoluciones. A continuación se muestra un ejemplo de una imagen adaptativa.</p><pre><code class="language-html">&lt;style&gt;
  img {
    max-width: 100%;
  }
&lt;/style&gt;

&lt;picture&gt;
  &lt;source type="image/webp" srcset="https://my-image.com/my-image-100.webp 1x, https://my-image.com/my-image-200.webp 2x"&gt;
  &lt;source type="image/png" srcset="https://my-image.com/my-image-100.png 1x, https://my-image.com/my-image-200.png 2x"&gt;
  &lt;img alt="my image" src="https://my-image.com/my-image-200.png" loading="lazy" width="100" height="100"&gt;
&lt;/picture&gt;</code></pre><p>Esto está haciendo muchas cosas. Vamos a desglosarlo:</p><ol><li>Configurando <code>max-width: 100%</code> la imagen se escalará hacia arriba o hacia abajo según el ancho de su contenedor.</li><li>Mediante el uso de una combinación de las etiquetas <code>picture</code>, <code>source</code>, e <code>img</code> en realidad, solo representamos una imagen y solo cargamos la imagen que mejor se ajusta según el dispositivo del usuario.</li><li><strong>WebP</strong> es un formato de imagen moderno que proporciona una compresión superior para imágenes en la web. Utilizando <code>source</code> podemos hacer referencia a una imagen WebP para usarla en navegadores que la admitan, y otra etiqueta <code>source</code> para hacer referencia a una versión PNG de las imágenes que no son compatibles con WebP.</li><li><code>srcset</code> se usa para decirle al navegador qué imagen usar según la resolución del dispositivo.</li><li>Establecemos la <a href="https://web.dev/native-lazy-loading/">carga diferida nativa</a> utilizando el par atributo/valor <code>loading="lazy"</code>.</li></ol><h2 id="v-deo-adaptativo">Vídeo adaptativo</h2><p>El video adaptativo es otro tema que ha inspirado una gran cantidad de artículos y documentación.</p><p>Una estrategia clave para establecer imágenes, videos, iframes y otros elementos adaptativos implica el uso de la relación de aspecto. El cuadro de relación de aspecto no es una técnica nueva y es una herramienta bastante útil para tener bajo la manga como desarrollador web.</p><p><a href="https://css-tricks.com/fluid-width-video/">Este artículo proporciona una demostración sólida</a> sobre cómo lograr videos de ancho "fluido". Echemos un vistazo al código y lo desglosamos.</p><pre><code class="language-html">&lt;style&gt;
  .videoWrapper {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
  }

  .videoWrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
&lt;/style&gt;

&lt;div class="videoWrapper"&gt;
  &lt;!-- Copy &amp; Pasted from YouTube --&gt;
  &lt;iframe width="560" height="349" src="http://www.youtube.com/embed/n_dZNLr2cME?rel=0&amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</code></pre><p>En este ejemplo, tenemos un video de YouTube incrustado como un iframe y un contenedor <code>div</code> con la clase <code>videoWrapper</code>. Este código está haciendo mucho... profundicemos.</p><ul><li><code>position: relative</code> en el elemento contenedor permite que los elementos hijos utilicen el posicionamiento absoluto en relación con él.</li><li><code>height: 0</code> combinado con <code>padding-bottom: 56.25%</code> es el ingrediente clave aquí que establece un comportamiento dinámico, imponiendo una relación de aspecto de 16:9.</li><li><code>position: absolute</code>, <code>top: 0</code> y <code>left: 0</code> establecido en el iframe crea un comportamiento en el que el elemento se posiciona absolutamente en relación con su raíz (parent)... pegándolo en la parte superior izquierda.</li><li>Y finalmente, el ancho y la altura del 100% hacen que el elemento secundario, iframe sea el 100% de su raíz. La raíz, <code>.videoWrapper</code> toma el control total de establecer este diseño de relación de aspecto.</li></ul><p>Lo sé... es mucho. Podemos hacer más para que los videos y las imágenes se vean mejor en teléfonos y tabletas. Fomentaría la investigación sobre esos temas de forma independiente además de esto.</p><p>Bien, ahora que somos expertos en diseño web adaptativo, ¿cómo podemos probar lo que hemos hecho? Afortunadamente, tenemos varias herramientas para simular y monitorizar la experiencia del usuario en una variedad de dispositivos.</p><h2 id="herramientas-para-simular-y-monitorizar-sitios-web-adaptativos">Herramientas para simular y monitorizar sitios web adaptativos</h2><p>Hay una variedad de herramientas útiles para ayudarnos a crear sitios web con un diseño web adaptativo. A continuación hay un par que me parecen especialmente útiles.</p><h3 id="emulaci-n-m-vil-de-chrome-devtools">Emulación móvil de Chrome DevTools</h3><p>Chrome's DevTools proporciona emulación móvil de una variedad de tabletas y dispositivos móviles. También proporciona una opción &nbsp;"adaptativo" que te permite definir un tamaño de ventana (viewport) de visualización personalizado.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/Screen-Shot-2020-07-12-at-6.19.18-PM.png" class="kg-image" alt="Screen-Shot-2020-07-12-at-6.19.18-PM" width="600" height="400" loading="lazy"><figcaption>Figura 3: Emulación de dispositivos móviles y tabletas con Chrome DevTools</figcaption></figure><h3 id="monitorizaci-n-del-rendimiento-del-sitio-web-m-vil-con-foo">Monitorización del rendimiento del sitio web móvil con Foo</h3><p>Lighthouse es una herramienta de código abierto que proporciona una forma de analizar el rendimiento del sitio web específico para un dispositivo.</p><p><a href="https://www.foo.software/lighthouse/">Foo usa Lighthouse en segundo plano para monitorizar el rendimiento del sitio web y proporciona comentarios para el análisis.</a> Puedes configura la monitorización para dispositivos móviles y de escritorio para obtener comentarios continuos sobre la capacidad de respuesta de tu sitio web.</p><p>Por ejemplo, un informe de Lighthouse destacará las imágenes que se cargaron incorrectamente según el dispositivo.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/Screen-Shot-2020-07-12-at-6.31.09-PM.png" class="kg-image" alt="Screen-Shot-2020-07-12-at-6.31.09-PM" width="600" height="400" loading="lazy"><figcaption>Figura 4: Informe Lighthouse con emulación de dispositivo móvil</figcaption></figure><h2 id="conclusi-n">Conclusión</h2><p>El diseño web adaptativo continuará evolucionando rápidamente, pero si nos mantenemos al tanto de las tendencias actuales, podemos brindar la mejor experiencia a nuestros usuarios. ¡Espero que estas herramientas y técnicas sean útiles!</p><p>Los usuarios de nuestro sitio web no solo se beneficiarán de un diseño versátil, sino que también los motores de búsqueda clasificarán nuestras páginas web más alto.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Diseño Web Responsive — Cómo hacer que un sitio Web se vea bien en Teléfonos y Tabletas ]]>
                </title>
                <description>
                    <![CDATA[ En el panorama de rápida evolución de dispositivos conectados, el diseño web responsive continúa siendo crucial en el desarrollo web. Hasta hace poco, el término “desarrollo web responsive” era inexistente. Actualmente la mayoría de nosotros hemos tenido que adoptarlo de alguna manera. De acuerdo a Statista, desde el 2019, 61% ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/diseno-web-responsive-como-hacer-que-un-sitio-web-se-vea-bien-en-telefonos-y-tabletas/</link>
                <guid isPermaLink="false">5fd40a188c7cd154bb9738c6</guid>
                
                    <category>
                        <![CDATA[ Diseño Web Responsive ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Maryori S. Boneu ]]>
                </dc:creator>
                <pubDate>Tue, 15 Dec 2020 13:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/04/photo-1482053450283-3e0b78b09a70.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>En el panorama de rápida evolución de dispositivos conectados, el diseño web responsive continúa siendo crucial en el desarrollo web.</p><p>Hasta hace poco, el término “desarrollo web responsive” era inexistente. Actualmente la mayoría de nosotros hemos tenido que adoptarlo de alguna manera.</p><p>De acuerdo a Statista, desde el 2019, 61% de todas las visitas a la búsqueda de Google se realizan desde un dispositivo móvil. En septiembre de 2020, <a href="https://webmasters.googleblog.com/2020/03/announcing-mobile-first-indexing-for.html">Google cambió su algoritmo de búsqueda</a> para priorizar sitios web que sean amigables con la navegación desde dispositivos móviles.</p><p><strong>En este post abordaré lo siguiente:</strong></p><ul><li>¿Qué es el diseño web responsive?</li><li>El meta tag viewport y lo que hace</li><li>Técnicas efectivas usadas en el diseño web responsive para adaptarse a dispositivos móviles y tabletas</li><li>Herramientas que ayudan a simular y monitorear la experiencia del usuario en dispositivos móviles y tabletas</li></ul><h2 id="-qu-es-el-dise-o-web-responsive-rwd-"><strong>¿Qué es el Diseño Web Responsive? (RWD)</strong></h2><p>El diseño web responsive es un enfoque que se centra en el entorno del usuario dentro de un sitio web. El entorno del usuario dependerá del dispositivo que tenga conectado a internet.</p><p>Existen múltiples características de un dispositivo que brindan oportunidades para hacer un enfoque centrado en el usuario. Algunas de estas incluyen:</p><ul><li>Conexión de red</li><li>Tamaño de la pantalla</li><li>Tipos de interacción (pantallas táctiles, track pads)</li><li>Resolución gráfica.</li></ul><p>Antes que el diseño web responsive fuese popular, muchas compañías manejaban un sitio web completamente separado, el cual recibía tráfico reenviado basándose en el agente de usuario (user-agent).</p><p>Pero en el diseño web responsive, el servidor siempre manda el mismo código HTML a todos los dispositivos y se hace uso de CSS para alterar la renderización de la página en el dispositivo.</p><p>Independientemente de las dos estrategias previas, el primer paso en la creación un sitio web para teléfonos o tabletas, es asegurarse que el navegador conozca la intención. Aquí es donde el meta tag viewport entra en juego.</p><h2 id="el-meta-tag-viewport-para-identificar-un-sitio-web-m-vil"><strong>El Meta Tag Viewport para identificar un sitio web móvil</strong></h2><p>El meta tag viewport le indica al navegador cómo ajustar la página al ancho de cada dispositivo.</p><p>Cuando el elemento meta viewport está ausente, los navegadores móviles mostrarán las páginas con su configuración de escritorio por defecto. Esto resulta en una experiencia que parece ser no responsive y de vista reducida.</p><p>A continuación una implementación estándar:</p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;meta name="viewport" content="width=device-width,initial-scale=1"/&gt;</code></pre><figcaption>Ejemplo de meta tag viewport</figcaption></figure><p>Ahora que el navegador sabe lo que está pasando, podemos utilizar técnicas populares para hacer que nuestro sitio web sea responsive.</p><h2 id="media-queries-de-css-para-tama-os-de-pantalla-y-orientaciones-diferentes"><strong><strong>Media Queries </strong>de CSS para Tamaños de Pantalla y Orientaciones Diferentes</strong></h2><p>Si eres nuevo al diseño web responsive, las Media Queries son la primera y más importante característica de CSS por aprender. Las Media Queries te permiten estilizar elementos basado en el ancho del viewport (área visible de un navegador). Una estrategia popular de CSS consiste en escribir los estilos móviles primero y construir sobre estos los estilos más complejos, específicos de escritorio.</p><p>Las Media Queries son una parte importante del diseño web responsive comúnmente usadas para grid layouts, tamaños de texto, márgenes y padding que difieren según el tamaño de pantalla y la orientación.</p><p>A continuación un ejemplo de un caso de uso común en estilización Mobile First, en donde una columna tiene 100% de ancho para dispositivos pequeños, pero en viewports más amplios tiene un 50% de ancho.</p><figure class="kg-card kg-code-card"><pre><code class="language-css">.column {
  width: 100%;
}

@media (min-width: 600px) {
  .column {
    width: 50%;
  }
}</code></pre><figcaption>Ejemplo CSS Mobile First</figcaption></figure><p>El código anterior es un ejemplo simple, pero lo que realmente hace es bastante interesante.</p><ol><li>Considerando Mobile First, el elemento "column" se le definió un ancho de 100%;</li><li>Usando una Media Query <code>min-width</code>, definimos reglas específicamente para viewports con un ancho mínimo de <code>600px</code> (área visible más anchas que <code>600px</code>). De esta manera, para viewports más anchos que <code>600px</code>, nuestro elemento "column" tendrá un ancho correspondiente al 50% de su elemento padre.</li></ol><p>Si bien, las Media Queries son esenciales para el diseño web responsive, muchas otras características de CSS también están siendo adoptadas a gran escala y reciben soporte en los navegadores. Caja Flexible (Flexbox) es una de esas nuevas e importantes características de CSS cuando de diseño web responsive se trata.</p><h2 id="-qu-es-flexbox"><strong>¿Qué es<strong> Flexbox?</strong></strong></h2><p>Te estarás preguntando — "¿Qué hace Flexbox?" La mejor pregunta sería — "¿Hay algo que Flexbox no pueda hacer?" ¿Cuál es la manera más fácil de centrar verticalmente con CSS? La respuesta: Flexbox. ¿Cómo se crea un diseño de cuadrícula (grid layout) responsive? Flexbox.</p><p>El módulo Diseño de Caja Flexible (Flexible Box Layout) proporciona una manera más eficiente de diseñar, alinear y distribuir espacio entre los ítems en un contenedor, incluso cuando su tamaño es dinámico — De ahí la palabra "flex".</p><p>En el ejemplo a continuación, combinamos Media Queries como se explica arriba para crear un Grid responsive. </p><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;style&gt;
  main {
    background: #d9d7d5;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
  }

  div {
    background: #767775;
    flex-basis: 100%;
    height: 100px;
    margin-bottom: 0.5rem;
  }

  @media (min-width: 600px) {
    main {
      flex-wrap: nowrap;
    }

    div {
      flex-basis: 33%;
    }
  }
&lt;/style&gt;
&lt;main&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
  &lt;div&gt;&lt;/div&gt;
&lt;/main&gt;</code></pre><figcaption>Ejemplo CSS de Flexbox</figcaption></figure><p>Con este código logramos lo siguiente:</p><ol><li>Establecer un diseño Flexbox con <code>display: flex</code> en nuestro elemento contenedor llamado <code>main</code>.</li><li>Estilizar para Mobile First. Definimos &nbsp;<code>flex-wrap: wrap</code> al elemento <code>main</code> que permite a los elementos hijo acomodarse dentro de nuestro diseño Flexbox como se ilustra en la Figura 1. Definimos <code>flex-basis: 100%</code> en nuestro elemento <code>div</code> para asegurarnos que ocupe el 100% del ancho del elemento padre en el diseño Flexbox (Figura 1).</li><li>Estilizar para dispositivos más grandes como las tabletas y computadores de escritorio. Utilizamos una Media Query similar a nuestro ejemplo en la sección anterior para establecerle <code>flex-wrap: nowrap</code> a nuestro elemento contenedor &nbsp;<code>main</code>. Esto asegura que los elementos hijo no fluyan y el diseño se mantenga como columnas dentro de una sola fila. Al definir &nbsp;<code>flex-basis: 33%</code> a <code>div</code> dentro de la Media Query — establecemos columnas que corresponden al 33% de ancho del elemento padre.</li><li>En este ejemplo, la magia se vería en dispositivos más grandes con reglas combinadas de las Media Query y de Flexbox. Debido a que definimos &nbsp;<code>display: flex</code> y, además, no anulamos la regla dentro de la Media Query, tenemos un diseño Flexbox para móviles, tabletas y escritorio. La Media Query <code>flex-basis: 33%</code> y la regla heredada <code>display: flex</code> nos da un diseño Flexbox reconocible como se puede observar en la Figura 2. En el pasado, hacer este tipo de diseño de columna era trabajo duro, siendo necesario escribir muchos enredos en CSS para lograrlo.</li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/grid-mobile-1.png" class="kg-image" alt="grid-mobile-1" width="600" height="400" loading="lazy"><figcaption>Figura 1: Ejemplo de diseño flexbox grid para móviles</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/grid-desktop.png" class="kg-image" alt="grid-desktop" width="600" height="400" loading="lazy"><figcaption>Figura 2: Ejemplo de diseño flexbox grid para escritorio</figcaption></figure><p>Flexbox proporciona una buena manera de lograr diseños variados y fluidos. En algunos casos, puede que no tengamos este tipo de libertad en espacios verticales. Es posible que sea necesario adaptar un elemento a un valor de alto fijo. En dicha situación, existe otra técnica a nuestra disposición — desplazamiento horizontal.</p><h2 id="desplazamiento-horizontal-con-overflow-scroll"><strong>Desplazamiento h<strong>orizontal </strong>con Overflow Scroll</strong></h2><p>Podría llegar el momento en donde haya contenido se desborda del viewport sin una manera atractiva de resolverlo. He aquí... ¡Overflow Scroll al rescate!</p><p>Los usos comunes de esta técnica incluyen menús desplegables y tablas. A continuación un ejemplo de un menú desplazable.</p><!--kg-card-begin: html--><menu style="margin: auto; max-width: 826px; background: #d9d7d5; padding: 0.25rem; overflow-y: scroll; white-space: nowrap;">
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">Responsive Web Design</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">RWD</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">Responsive menu</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">Overflow scroll example</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">This is a lot of content!</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">Yes</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">we</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">have</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">another</span>
  <span style="background: #767775; color: #ffffff; display: inline-block; margin: 0.25rem; padding: 0.5rem;">item</span>
</menu><!--kg-card-end: html--><figure class="kg-card kg-code-card"><pre><code class="language-html">&lt;style&gt;
  menu {
    background: #d9d7d5;
    padding: 0.25rem;
    overflow-y: scroll;
    white-space: nowrap;
  }

  span {
    background: #767775;
    color: #ffffff;
    display: inline-block;
    margin: 0.25rem;
    padding: 0.5rem;
  }
&lt;/style&gt;
&lt;menu&gt;
  &lt;span&gt;Deseño Responsive Web&lt;/span&gt;
  &lt;span&gt;RWD&lt;/span&gt;
  &lt;span&gt;menú Responsive&lt;/span&gt;
  &lt;span&gt;Ejemplo Overflow scroll&lt;/span&gt;
  &lt;span&gt;¡Esto es mucho contenido!&lt;/span&gt;
  &lt;span&gt;Si&lt;/span&gt;
  &lt;span&gt;Nosotros&lt;/span&gt;
  &lt;span&gt;tenemos&lt;/span&gt;
  &lt;span&gt;otro&lt;/span&gt;
  &lt;span&gt;elemento&lt;/span&gt;
&lt;/menu&gt;</code></pre><figcaption>Ejemplo de menú con desplazamiento horizontal&nbsp;</figcaption></figure><p>¿¡Pero cómo hiciste eso!? Profundicemos:</p><ul><li><code>overflow-y: scroll</code> es el ingrediente clave de esta receta. Al definirlo, los elementos hijo se desbordarán sobre el eje horizontal con comportamiento de desplazamiento.</li><li>¡No tan rápido! Aunque pienses que &nbsp;<code><code>overflow-y</code></code> es suficiente, también debemos hacerle saber al navegador que no envuelva a los elementos hijos con &nbsp;<code>white-space: nowrap</code>.</li></ul><p>Ahora que tenemos unas cuantas técnicas de RWD bajo nuestra manga, veamos elementos que suponen retos específicos por su naturaleza visual — imágenes y videos.</p><h2 id="im-genes-responsive"><strong>Imágenes <strong>Responsive</strong></strong></h2><p>Al usar atributos de tag modernos para imágenes, podemos acomodar un rango de dispositivos y resoluciones. A continuación, un ejemplo de una imagen responsive.</p><pre><code class="language-html">&lt;style&gt;
  img {
    max-width: 100%;
  }
&lt;/style&gt;

&lt;picture&gt;
  &lt;source type="image/webp" srcset="https://my-image.com/my-image-100.webp 1x, https://my-image.com/my-image-200.webp 2x"&gt;
  &lt;source type="image/png" srcset="https://my-image.com/my-image-100.png 1x, https://my-image.com/my-image-200.png 2x"&gt;
  &lt;img alt="my image" src="https://my-image.com/my-image-200.png" loading="lazy" width="100" height="100"&gt;
&lt;/picture&gt;</code></pre><p>Esto hace bastantes cosas. Vamos a desglosarlo:</p><ol><li>Al definir <code>max-width: 100%</code> la imagen se va a ampliar o reducir basada en el ancho de su contenedor.</li><li>Al usar la combinación de los tags &nbsp;<code>picture</code>, <code>source</code> e <code>img</code>, en realidad estamos renderizando solo una imagen y cargando la que mejor se adapte al dispositivo del usuario.</li><li><strong><strong>WebP</strong></strong> es un formato de imagen moderno que brinda compresión superior para imágenes en la web. Al utilizar &nbsp;<code>source</code> podemos hacer referencia a una imagen WebP para usar en navegadores que cuenten con el soporte y agregar otro tag &nbsp;<code>source</code> para referenciar una versión PNG de las imágenes que no tienen soporte WebP.</li><li><code>srcset</code> es usado para decirle al navegador qué imagen utilizar basada en la resolución del dispositivo.</li><li>Establecemos <a href="https://web.dev/native-lazy-loading/">native lazy loading</a> (carga diferida nativa) mediante el uso del par atributo / valor (attribute / value) &nbsp;<code>loading="lazy"</code>.</li></ol><h2 id="videos-responsive"><strong><strong>Video</strong>s <strong>Responsive</strong></strong></h2><p>El video Responsive es otro tema que ha inspirado un gran número de artículos y documentación.</p><p>Una estrategia clave para establecer imágenes, videos, iframes responsive y otros elementos implica el uso de relación de aspecto (aspect-ratio). La caja de relación de aspecto no es una técnica nueva y además es muy útil de tener bajo la manga para los Desarrolladores Web.</p><p>Este artículo brinda una demostración sólida acerca de cómo lograr vídeos de ancho "fluido". Veamos el código y desglosemos:</p><pre><code class="language-html">&lt;style&gt;
  .videoWrapper {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
  }

  .videoWrapper iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
  }
&lt;/style&gt;

&lt;div class="videoWrapper"&gt;
  &lt;!-- Copy &amp; Pasted from YouTube --&gt;
  &lt;iframe width="560" height="349" src="http://www.youtube.com/embed/n_dZNLr2cME?rel=0&amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</code></pre><p>En este ejemplo tenemos un video embebido de YouTube cómo iframe y un contenedor <code>div</code> con la clase <code>videoWrapper</code>. Este código está haciendo bastante... profundicemos:</p><ul><li><code>position: relative</code> en el elemento contenedor le permite a los elementos hijos utilizar la posición absoluta, que es relativa a dicho elemento contenedor.</li><li><code>height: 0</code> combinado con <code>padding-bottom: 56.25%</code> es el ingrediente clave aquí, el cual establece un comportamiento dinámico, aplicando la relación de aspecto &nbsp;<code>16:9</code>.</li><li><code>position: absolute</code>, <code>top: 0</code> y <code>left: 0</code> definidos en el iframe, crean un comportamiento en el que los elementos se posicionan absolutamente relativos a su padre... fijándose en la parte superior izquierda.</li><li>Finalmente, <code>width: 100%</code> y <code>height: 100%</code> &nbsp;hace que el elemento hijo iframe sea el 100% de su padre. El padre &nbsp;<code>.videoWrapper</code> toma control completo de establecer la relación de aspecto.</li></ul><p>Lo sé... es bastante. Hay más que podemos hacer para lograr que videos e imágenes se vean lo mejor posible en teléfonos y tabletas. Les animo a que investiguen estos temas por su cuenta en adición a esto.</p><p>Bien, ahora que somos los amos del diseño web responsive, ¿cómo podemos poner a prueba lo que hemos hecho? Afortunadamente, tenemos un número de herramientas para simular y monitorear la experiencia de usuario en una variedad de dispositivos.</p><h2 id="herramientas-para-simular-y-monitorear-sitios-web-responsive"><strong>Herramientas para simular y monitorear sitios web responsive</strong></h2><p>Existe una variedad de herramientas útiles para ayudarnos a crear sitios web con diseño responsive. A continuación encontramos un par de estas que me parecen especialmente útiles.</p><h3 id="emulaci-n-m-vil-en-chrome-devtools"><strong>Emulación móvil en <strong>Chrome DevTools</strong></strong></h3><p>Las Chrome DevTools (Herramientas para Desarrolladores de Chrome) proporcionan emulación móvil para un rango de tabletas y dispositivos móviles. También ofrece una opción "Responsive" que te permite definir un tamaño personalizado del viewport.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/Screen-Shot-2020-07-12-at-6.19.18-PM.png" class="kg-image" alt="Screen-Shot-2020-07-12-at-6.19.18-PM" width="600" height="400" loading="lazy"><figcaption>Figura 3: Emulación móvil y de tableta de Chrome DevTools</figcaption></figure><h3 id="monitoreando-el-desempe-o-de-un-sitio-web-m-vil-con-foo"><strong>Monitoreando el desempeño de un Sitio Web Móvil con Foo</strong></h3><p>Lighthouse es una herramienta de código abierto (open-source) que brinda una manera de analizar el desempeño de un sitio específico a cada dispositivo.</p><p>Foo usa Lighthouse detrás de escena para monitorear el desempeño de un sitio web y brindar feedback para su análisis. Se puede configurar el monitoreo para ambos escritorio y dispositivos móviles y obtener feedback continuo acerca de qué tan responsive es tu sitio web.</p><p>Por ejemplo, un reporte de Lighthouse mostrará las imágenes que son cargadas inapropiadamente basada en el dispositivo.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2020/07/Screen-Shot-2020-07-12-at-6.31.09-PM.png" class="kg-image" alt="Screen-Shot-2020-07-12-at-6.31.09-PM" width="600" height="400" loading="lazy"><figcaption>Figura 4: Reporte de Lighthouse emulando un sitio web móvil</figcaption></figure><h2 id="conclusi-n"><strong>Conclusión</strong></h2><p>El diseño web responsive continuará evolucionando rápidamente, pero si nos mantenemos al tanto de las tendencias actuales, podremos brindar la mejor experiencia para nuestros usuarios. ¡Espero que estas herramientas y técnicas sean de gran utilidad!</p><p>No solo nuestros usuarios se beneficiarán de un diseño versátil, también los motores de búsqueda le darán a nuestra página una clasificación superior.</p><p>Traducido del artículo <strong><a href="https://www.freecodecamp.org/news/responsive-web-design-how-to-make-a-website-look-good-on-phones-and-tablets/">Responsive Web Design – How to Make a Website Look Good on Phones and Tablets</a><strong> </strong></strong>de<strong><strong> </strong></strong><a href="https://www.freecodecamp.org/news/author/adam/"><strong>Adam Henson</strong></a></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
