{"id":14,"date":"2013-01-09T13:11:42","date_gmt":"2013-01-09T13:11:42","guid":{"rendered":"http:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/?p=14"},"modified":"2018-10-21T20:17:13","modified_gmt":"2018-10-21T19:17:13","slug":"responsive","status":"publish","type":"post","link":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/css\/responsive\/","title":{"rendered":"Responsive design"},"content":{"rendered":"<p>[\u00daltima actualizaci\u00f3n: 21\/10\/2018]<\/p>\n<p>El <i>responsive design<\/i> es una aproximaci\u00f3n al dise\u00f1o de p\u00e1ginas web que tiene el objetivo de crear p\u00e1ginas que den una buena de experiencia de usuario independientemente del dispositivo que se use para acceder a ellas. Los elementos que suelen caracterizarla son tres:<\/p>\n<ul>\n<li>el uso de una ret\u00edcula fluida (esto es, definida usando unidades como <code>em<\/code>s o porcentajes, que responden a los diferentes tama\u00f1os del <i>viewport<\/i> del navegador, y no en unidades absolutas, como los p\u00edxeles);<\/li>\n<li>el uso de contenidos flexibles (por ejemplo, definiendo el ancho de las im\u00e1genes como un porcentaje del ancho de su contenedor, y no en p\u00edxeles);<\/li>\n<li>el uso de <i>media queries<\/i> para permitir que el dise\u00f1o cambie en funci\u00f3n de las caracter\u00edsticas del navegador que accede a \u00e9l.<\/li>\n<\/ul>\n<p>El que probablemente sea el &#8216;texto fundacional&#8217; del &#8216;responsive&#8217; es <a href=\"http:\/\/alistapart.com\/article\/dao\">A Dao of Web Design<\/a>, publicado en <cite>A List Apart<\/cite> en abril de 2000, y que aun es uno de los textos m\u00e1s relevantes sobre dise\u00f1o web.<\/p>\n<h2>Media Queries<\/h2>\n<p>Las <i>media queries<\/i> son un m\u00f3dulo de CSS (<a title=\"Media Queries\" href=\"http:\/\/www.w3.org\/TR\/css3-mediaqueries\/\">especificaci\u00f3n en el W3C<\/a>) que permite ajustar el CSS que se aplica a cada elemento de una p\u00e1gina en funci\u00f3n de caracter\u00edsticas del navegador y dispositivo que se usa para acceder a ella, como la resoluci\u00f3n de pantalla o su profundidad de color.<\/p>\n<p>Uno de los tipos de <i>media query<\/i> que <em>no<\/em> existen y que muchos desarrolladores suelen considerar pr\u00e1cticamente una necesidad es una <i>media query<\/i> basada en el <strong>ancho de banda<\/strong>: si el ancho de banda disponible es alto serviremos una imagen de alta calidad, mientras que si estamos en una situaci\u00f3n de bajo ancho de banda serviremos im\u00e1genes con compresiones m\u00e1s altas, sacrificando calidad por el ahorro de tiempo en la descarga. A pesar de que dicha idea se ha discutido en m\u00faltiples ocasiones, hasta el momento las dificultades de implementaci\u00f3n han hecho que la idea no se haya materializado. Encontrar\u00e9is una discusi\u00f3n sobre el tema en <a href=\"https:\/\/www.smashingmagazine.com\/2013\/01\/bandwidth-media-queries-we-dont-need-em\/\">Bandwidth Media Queries? We Don\u2019t Need \u2019Em!<\/a>.<\/p>\n<p>Como con cualquier innovaci\u00f3n, si debemos dar soporte a navegadores relativamente antiguos, ser\u00e1 necesario utilizar <i>polyfills<\/i> u otras soluciones alternativas. Algunas de ellas son <a href=\"https:\/\/github.com\/scottjehl\/Respond\">Respond.js<\/a>, <a href=\"http:\/\/adapt.960.gs\/\">Adapt.js<\/a>, <a href=\"https:\/\/github.com\/heathcliff\/css3-mediaqueries-js\">css3-mediaqueries.js<\/a> o <a href=\"http:\/\/wicky.nillia.ms\/enquire.js\/\">enquire.js<\/a>.<\/p>\n<h2>Im\u00e1genes<\/h2>\n<p>Uno de los puntos m\u00e1s problem\u00e1ticos en el dise\u00f1o <i>responsive<\/i> es el de las im\u00e1genes, como ya avanzamos en el punto anterior: servir la imagen adecuada a cada dispositivo en funci\u00f3n del contexto no es un problema sencillo. En febrero de 2013 el W3C public\u00f3 un primer borrador sobre <a href=\"http:\/\/www.w3.org\/TR\/html-picture-element\/\">el elemento <code>picture<\/code><\/a>. El elemento est\u00e1 implementado ya en las versiones 33 de Firefox y 38 de Chrome y a julio de 2014 se estaba trabajando en su implementaci\u00f3n en Webkit.<\/p>\n<p>De todas formas, aun se tardar\u00e1 en que <code>picture<\/code> est\u00e9 suficientemente implementado en los navegadores (siempre pod\u00e9is consultar la informaci\u00f3n m\u00e1s actualizada en el <a href=\"https:\/\/caniuse.com\/#search=picture\">apartado correspondiente de canIuse.com<\/a>). Mientras tanto, disponemos de algunas soluciones <em>temporales<\/em>, cada una de ellas con sus ventajas e inconvenientes:<\/p>\n<dl>\n<dt><a href=\"http:\/\/adaptive-images.com\/\">Adaptive Images<\/a><\/dt>\n<dd>Combina el uso de un fichero <code>.htaccess<\/code> con PHP y JavaScript.<\/dd>\n<dt><a href=\"https:\/\/responsivedesign.is\/resources\/javascript-jquery\/jquery-picture\/\">jQuery Picture<\/a><\/dt>\n<dd>Plug-in de la biblioteca de JavaScript jQuery.<\/dd>\n<dt><a href=\"http:\/\/responsiveimg.com\/\">Responsive Img<\/a><\/dt>\n<dd>Plug-in de la biblioteca de JavaScript jQuery.<\/dd>\n<\/dl>\n<p>Pod\u00e9is encontrar una gran cantidad de informaci\u00f3n al respecto en <a href=\"http:\/\/responsiveimages.org\/\">ResponsiveImages.org<\/a>. Tambi\u00e9n es una lectura interesante <a href=\"http:\/\/dev.opera.com\/articles\/responsive-images\/\">Responsive Images: Use Cases and Documented Code Snippets to Get You Started<\/a> (<cite lang=\"en\">dev.opera<\/cite>, julio de 2014)<\/p>\n<h2>Para saber m\u00e1s<\/h2>\n<p>Quiz\u00e1 la mejor lista de recursos sea <a href=\"https:\/\/bradfrost.github.io\/this-is-responsive\/resources.html\">Responsive Resources<\/a>, mantenida por Brad Frost.<\/p>\n<p><a href=\"https:\/\/www.sitepoint.com\/responsive-web-design-tips-and-notes\/\">Understanding Responsive Web Design: Clear Concepts and Practical Applications<\/a> (Enero de 2013)<\/p>\n<p><a href=\"https:\/\/www.sitepoint.com\/understanding-responsive-web-design-how-to-manage-fonts\/\">Responsive Web Design: Using Fonts Responsively<\/a> (Enero de 2013)<\/p>\n<p><a href=\"https:\/\/blog.easy-designs.net\/archives\/responsive-tables\/\">Responsive Tables<\/a> (Febrero de 2013)<\/p>\n<p><a href=\"http:\/\/bradfrost.com\/blog\/post\/the-overflow-pattern\/\">The Overflow Pattern<\/a> (7 de enero, 2013)<\/p>\n<p><a href=\"http:\/\/poslepu.blogspot.com.es\/2013\/02\/responsive-design-and-accessibility.html\">Responsive Design and Accessibility<\/a> (febrero de 2013)<\/p>\n<p>Algo que debe considerarse es que los problemas del dise\u00f1o <i>reponsive<\/i> no se limitan al dise\u00f1o, ni al dise\u00f1o <em>y<\/em> el desarrollo, sino que los contenidos que publicamos tambi\u00e9n deben tener en cuenta la nueva filosof\u00eda:<\/p>\n<p><iframe loading=\"lazy\" title=\"Karen McGrane: Adapting Ourselves to Adaptive Content - An Event Apart\" src=\"https:\/\/player.vimeo.com\/video\/56705945?dnt=1&amp;app_id=122963\" width=\"640\" height=\"360\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\"><\/iframe><\/p>\n<p>Aunque el <i>responsive<\/i> es una parte esencial de una estrategia de contenidos multidispositivo, no puede ser el \u00fanico componente de dicha estrategia, puesto que deben considerarse m\u00e1s aspectos. Un art\u00edculo muy interesante sobre el tema es <a href=\"https:\/\/www.smashingmagazine.com\/2014\/07\/responsive-web-design-should-not-be-your-only-mobile-strategy\/\">You May Be Losing Users If Responsive Web Design Is Your Only Mobile Strategy<\/a> (Maximiliano Firtman, <cite lang=\"en\">Smashing Magazine<\/cite>, julio de 2014)<\/p>","protected":false},"excerpt":{"rendered":"<p>[\u00daltima actualizaci\u00f3n: 21\/10\/2018] El responsive design es una aproximaci\u00f3n al dise\u00f1o de p\u00e1ginas web que tiene el objetivo de crear p\u00e1ginas que den una buena de experiencia de usuario independientemente del dispositivo que se use para acceder a ellas. Los elementos que suelen caracterizarla son tres: el uso de una ret\u00edcula fluida (esto es, definida &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/css\/responsive\/\" class=\"more-link\">Seguir leyendo<span class=\"screen-reader-text\"> \u00abResponsive design\u00bb<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-14","post","type-post","status-publish","format-standard","hentry","category-css","entry"],"_links":{"self":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":25,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/posts\/14\/revisions\/487"}],"wp:attachment":[{"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.uoc.edu\/blogs\/htmlcss\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}