{"id":22591,"date":"2020-07-09T14:43:17","date_gmt":"2020-07-09T14:43:17","guid":{"rendered":"https:\/\/www.heartinternet.uk\/blog\/?p=22591"},"modified":"2020-07-09T14:43:17","modified_gmt":"2020-07-09T14:43:17","slug":"beyond-screen-sizes-responsive-design-in-2020","status":"publish","type":"post","link":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/","title":{"rendered":"Beyond screen sizes: responsive design in 2020"},"content":{"rendered":"<p><strong>By Kilian Valkhof<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Responsive design was introduced more than 10 years ago. In fact, Ethan Marcotte\u2019s <\/span><a href=\"https:\/\/alistapart.com\/article\/responsive-web-design\/\"><span style=\"font-weight: 400;\">seminal article<\/span><\/a><span style=\"font-weight: 400;\"> turned 10 on 25 May. Here&#8217;s how I would describe responsive design:<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">The way a website adapts to different screen sizes by reflowing and repositioning content as the available space allows.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">We do this by using media queries and flexibly sized elements using relative, minimum and maximum sizes. In recent years, this has gotten easier with the introduction of the <\/span><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/CSS_Flexible_Box_Layout\/Basic_Concepts_of_Flexbox\"><span style=\"font-weight: 400;\">Flexbox<\/span><\/a><span style=\"font-weight: 400;\"> and <\/span><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/CSS_Grid_Layout\/Basic_Concepts_of_Grid_Layout\"><span style=\"font-weight: 400;\">Grid<\/span><\/a><span style=\"font-weight: 400;\"> layout modes, which have been developed with responsive design in mind.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Before responsive design, we already had a way to develop websites for smaller devices. Back in 2008 I wrote an article for a Dutch web development site on handheld stylesheets. These used the now deprecated &#8220;handheld&#8221; media type and were supported by mobile browsers back then, like Opera Mini and Internet Explorer Mobile. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, overall support for these handheld stylesheets, and what you could do with them, was pretty terrible. I ended my article with a glimmer of hope. Soon we would be able to use a thing called &#8220;media queries&#8221;, which would allow us to respond to device widths, heights and <\/span><i><span style=\"font-weight: 400;\">number of colours<\/span><\/i><span style=\"font-weight: 400;\">. Somehow that seemed important to mention back then.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The best news was that Opera 9 and Safari 3 already supported it. We didn&#8217;t realise it back then, but the mobile internet and media queries were here to stay.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We&#8217;re now more than a decade in, and of course support for media queries is terrific:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22619\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image8-300x100.png\" alt=\"\" width=\"300\" height=\"100\" \/><\/p>\n<p><a href=\"https:\/\/caniuse.com\/css-mediaqueries\"><i><span style=\"font-weight: 400;\">Support for media queries<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> according to caniuse.com.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">I also think we have a solid, shared understanding of what constitutes good responsive design. Here&#8217;s how I would describe it. (If you disagree, <\/span><a href=\"http:\/\/twitter.com\/kilianvalkhof\"><span style=\"font-weight: 400;\">find me on Twitter<\/span><\/a><span style=\"font-weight: 400;\">.)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Responsive design means\u2026\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Mobile first<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Media queries with widths in ems<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Base font-size of at least 16 pixels<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Allows for user resizing and zooming, even on mobile<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Scrolling is fine, because there is no fold.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">But I think we&#8217;re now at a point where we can start considering a new type of responsiveness. One that doesn&#8217;t just look at the width and height of the screen, but also at what your user prefers. For simplicity&#8217;s sake, let&#8217;s call this: <strong>r<\/strong><\/span><b>esponsive websites.<\/b><\/p>\n<h2><span style=\"font-weight: 400;\">Responsive websites<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A responsive website doesn&#8217;t just respond to viewport sizes but also adapts to user preferences. In web development, we usually reason about what a device can do, but we really want to be responsive to the user, their environment and their preferences. The device is just the proxy that sits between us and the user.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Luckily, on the modern web we already have a lot of ways to be more responsive. We can respond to:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">User preferences<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Environment<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Network conditions<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Device<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">In the rest of this article, we&#8217;ll go over these and see what&#8217;s possible in each of these categories. Unless explicitly mentioned you can use these features in production right now, with good support in all evergreen browsers.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">User preferences<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Let&#8217;s start with user preferences. You&#8217;re probably familiar with the first one: <\/span><i><span style=\"font-weight: 400;\">Prefers-color-scheme<\/span><\/i><span style=\"font-weight: 400;\">. Or as you might know it, dark mode support.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=prefers-color-scheme.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">With this setting, users can indicate to your website that they prefer to see a light or dark interface. If there is no explicit preference, your browser will default to light mode.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22625\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image10-300x176.png\" alt=\"\" width=\"300\" height=\"176\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">A website with both a light and dark mode style shown in <\/span><\/i><a href=\"https:\/\/polypane.com\"><i><span style=\"font-weight: 400;\">Polypane<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Some users might be sensitive to bright lights or just prefer darker colours, but others might explicitly choose a light mode for the usually increased contrast. Offering both a light and dark mode can help make your website more accessible to users.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you already have a website, there&#8217;s a fair chance that it&#8217;s in what you would consider &#8220;light mode&#8221;. If you want to add a dark mode but don&#8217;t have a lot of time or budget, then you can add something I like to call &#8220;cheap dark mode&#8221;:<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=cheap-dark-mode.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">This isn&#8217;t perfect but it will get you dark mode in just a few lines of code. Here&#8217;s how it works: First it adds a dark background colour. Then it uses a filter to invert all the colours on the page (the background won&#8217;t be affected).\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The invert turns all light colours dark and all dark colours light, but it also switches all colours. Blue becomes orange, green becomes pink and so on. If you want your colours to remain mostly the same, you&#8217;ll also have to rotate their hue 180 degrees, so they&#8217;re back to normal. This does mean that your colours&#8217; lightness will change. You don&#8217;t get to keep your brand colours perfectly, but this is <\/span><i><span style=\"font-weight: 400;\">cheap<\/span><\/i><span style=\"font-weight: 400;\"> dark mode after all.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">There&#8217;s another thing we need to do though: With the invert, all our images and videos are now also inverted and they&#8217;re being shown as negatives. We want to turn those back to their original colour. We can do that by adding another invert (inverting the invert) and rotating the hue another 180 degrees (getting it back to the original colour).<\/span><\/p>\n<h4><strong>Prefers reduced motion<\/strong><\/h4>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=prefers-reduced-motion.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">With <\/span><i><span style=\"font-weight: 400;\">prefers-reduced-motion<\/span><\/i><span style=\"font-weight: 400;\"> a user can indicate that they want to see less stuff happening on the screen. Reasons they want to do this can include motion sickness, vestibular disorders or just plainly they don&#8217;t want to wait around while your nice animations play.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If a user has this turned on, it doesn&#8217;t mean you can&#8217;t show <\/span><i><span style=\"font-weight: 400;\">any<\/span><\/i><span style=\"font-weight: 400;\"> motion, just that you have to be mindful: use motion only where it helps understanding, and if you do use motion, choose simple motions like a fade. If it doesn&#8217;t help understanding, turn it off. For videos, make sure you don&#8217;t autoplay them.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you&#8217;re building a new website, it&#8217;s good to think of motion as a progressive enhancement. Develop your website with reduced motion, and add the animations in a <\/span><span style=\"font-weight: 400;\">prefers-reduced-motion: no-preference<\/span><span style=\"font-weight: 400;\"> media query. That way the default experience is the more accessible one, and users that don&#8217;t mind animations get them for free.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For existing websites you can add &#8220;cheap&#8221; reduced motion support by turning off all animations and transitions, like so:<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file= cheap-reduced-motion.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Make sure you also use the following bit of JavaScript to check if you can autoplay videos:<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=prefers-reduced-motion.js\"><\/script><\/p>\n<p><i><span style=\"font-weight: 400;\">The previous two media queries have wide support in all evergreen browsers, but the next few user preferences don&#8217;t. Consider them a taste of what&#8217;s to come.<\/span><\/i><\/p>\n<h4><strong>Prefers-reduced-transparancy<\/strong><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22618\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image7-300x195.png\" alt=\"\" width=\"300\" height=\"195\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">A website without (left) and with (right) reduced transparency.<\/span><\/i><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=prefers-reduced-transparency.css\"><\/script><br \/>\nUsers can use this media query to indicate that they prefer seeing text on solid colours, usually due to visual impairments making it hard to read text on busy backgrounds, like images or patterns. This feature can also help people with dyslexia or concentration problems to read your content easier.<\/p>\n<p>Unfortunately, there is no browser support yet.<\/p>\n<p><strong>Prefers-contrast<\/strong><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=prefers-contrast.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Equally unsupported, <\/span><i><span style=\"font-weight: 400;\">prefers-contrast<\/span><\/i><span style=\"font-weight: 400;\"> indicates whether a user prefers a high or low contrast interface. (Notice how it&#8217;s <\/span><i><span style=\"font-weight: 400;\">prefers-contrast<\/span><\/i><span style=\"font-weight: 400;\"> and not <\/span><i><span style=\"font-weight: 400;\">prefers-reduced-contrast<\/span><\/i><span style=\"font-weight: 400;\"> like the previous media queries. This one goes both ways!)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Some visual impairments can make it difficult to make out details or subtle differences in colour, in which case people will prefer a higher contrast. On the other hand, people might be sensitive to harsh, high contrast and prefer low contrast.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Note that wanting less transparency is not the same as wanting more contrast, and these should not be lumped together. They are there for different reasons and can be compensated differently for.<\/span><\/p>\n<h4><strong>Inverted-colors<\/strong><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22609\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image3-300x263.png\" alt=\"\" width=\"300\" height=\"263\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">Safari showing a website without (left) and with (right) inverted colours. Source: <\/span><\/i><a href=\"https:\/\/a11yproject.com\/posts\/operating-system-and-browser-accessibility-display-modes\/\"><i><span style=\"font-weight: 400;\">The A11Y Project<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=inverted-colors.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">You&#8217;ll notice this media query doesn&#8217;t start with <\/span><i><span style=\"font-weight: 400;\">prefers<\/span><\/i><span style=\"font-weight: 400;\">, and that&#8217;s because it indicates that the operating system has already inverted colours. The operating system in this instance is Mac OS, the only OS to implement this setting.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You might think you&#8217;d use this to double-invert your images (like our cheap dark mode from earlier in the article) but Safari, the only browser to support this media query, already does this for you.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can however, still invert or hue-shift other parts of your website to make sure your icon colours are still correct and brand colours are being followed.<\/span><\/p>\n<h4><strong>-ms-high-contrast\/forced-colors<\/strong><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22606\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image1-300x172.png\" alt=\"\" width=\"300\" height=\"172\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22622\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image9-300x173.png\" alt=\"\" width=\"300\" height=\"173\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">GitHub.com shown without forced colours (left) and with (right). Source: <\/span><\/i><a href=\"https:\/\/adrianroselli.com\/2017\/11\/os-high-contrast-versus-inverted-colors.html\"><i><span style=\"font-weight: 400;\">adrianroselli.com<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file= ms-high-contrast.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">On the Windows and Edge side, we have the <\/span><span style=\"font-weight: 400;\">-ms-high-contrast<\/span><span style=\"font-weight: 400;\"> media query. A big difference with <\/span><span style=\"font-weight: 400;\">inverted-colors<\/span><span style=\"font-weight: 400;\"> is that it\u2019s much more destructive. It will strip out any background images if there&#8217;s text over them and force all your background and text colours to use system colours, making everything uniform with the rest of your operating system.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you&#8217;ve been doing web development for a while, you might remember that we could style elements with system colours. That&#8217;s no longer possible due to security implications, but in the windows high contrast mode a subset of them is back:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><b>windowText<\/b><span style=\"font-weight: 400;\">: controls the colour of text content.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>highlightText<\/b><span style=\"font-weight: 400;\">: controls the colour of selected text.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>highlight<\/b><span style=\"font-weight: 400;\">: controls the background colour of selected text.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>buttonFace<\/b><span style=\"font-weight: 400;\">: controls the colour of a &lt;button&gt; element&#8217;s text.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>window<\/b><span style=\"font-weight: 400;\">: controls the colour of the background.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The <\/span><b>&lt;a&gt;<\/b><span style=\"font-weight: 400;\"> element controls the colour of links.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">These colour names are not here for you to pick and choose, high colour mode already overwrites all your text, background and button colours with these values. They&#8217;re there for you to use on other elements to make them fit the rest of the site, like custom icons.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Only Edge implements the <\/span><span style=\"font-weight: 400;\">-ms-high-contast<\/span><span style=\"font-weight: 400;\"> value, the spec equivalent that&#8217;s being worked on is called <\/span><span style=\"font-weight: 400;\">forced-colors<\/span><span style=\"font-weight: 400;\">, but it has no browser support at the moment.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">These last three media queries, <\/span><\/i><i><span style=\"font-weight: 400;\">prefers-contrast<\/span><\/i><i><span style=\"font-weight: 400;\">, <\/span><\/i><i><span style=\"font-weight: 400;\">inverted-colors<\/span><\/i><i><span style=\"font-weight: 400;\"> and <\/span><\/i><i><span style=\"font-weight: 400;\">forced-colors<\/span><\/i><i><span style=\"font-weight: 400;\">, do not serve the same purpose. <\/span><\/i><i><span style=\"font-weight: 400;\">Forced-colors<\/span><\/i><i><span style=\"font-weight: 400;\"> very explicitly overwrites your styling to one of the user\u2019s choosing, often with significantly increased contrast. With <\/span><\/i><i><span style=\"font-weight: 400;\">prefers-contrast<\/span><\/i><i><span style=\"font-weight: 400;\"> it&#8217;s your job to increase contrast, but the user would still like to see your design. Lastly, <\/span><\/i><i><span style=\"font-weight: 400;\">inverted-colors<\/span><\/i><i><span style=\"font-weight: 400;\"> has no such explicit goal but is primarily used to make screens less bright.<\/span><\/i><\/p>\n<h3><span style=\"font-weight: 400;\">Environment<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Alongside user preferences, there&#8217;s also two upcoming media queries that will tell you something about the environment your page is shown in, <\/span><span style=\"font-weight: 400;\">light-level<\/span><span style=\"font-weight: 400;\"> and <\/span><span style=\"font-weight: 400;\">environment-blending<\/span><span style=\"font-weight: 400;\">. Neither are supported by browsers at the moment.<\/span><\/p>\n<h4><strong>Light-level<\/strong><\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22615\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image6-300x198.png\" alt=\"\" width=\"300\" height=\"198\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">Polypane emulating a dimmed, normal and washed screen side by side.<\/span><\/i><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file= light-level.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Light level has three possible values: <\/span><i><span style=\"font-weight: 400;\">dim<\/span><\/i><span style=\"font-weight: 400;\">, <\/span><i><span style=\"font-weight: 400;\">normal<\/span><\/i><span style=\"font-weight: 400;\"> and <\/span><i><span style=\"font-weight: 400;\">washed<\/span><\/i><span style=\"font-weight: 400;\">. When each of these values is triggered is determined by the operating system based on the light sensor or camera on the device.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Light level will be <\/span><i><span style=\"font-weight: 400;\">dim<\/span><\/i><span style=\"font-weight: 400;\"> if the screen is shown in a dark place, whereas <\/span><i><span style=\"font-weight: 400;\">washed<\/span><\/i><span style=\"font-weight: 400;\"> means that it&#8217;s shown under bright lights or in outdoor conditions with lots of sunlight.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Operating systems nowadays already compensate for these situations by themselves by increasing or decreasing brightness, but we can make specific changes to our web pages too. In dim situations, you might opt to decrease strong contrast here and there and decrease the overall brightness of your page. In washed situations you will want to increase the contrast of all text compared to the background to make sure that it&#8217;s still readable.<\/span><\/p>\n<h4><strong>Environment-blending<\/strong><\/h4>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=environment-blending.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Environment blending is a little more sci-fi. With it you can test whether or not a screen blends with its environment, for example if it&#8217;s projected on a piece of glass (think Minority report or the HoloLens). There&#8217;s three possible values: <\/span><i><span style=\"font-weight: 400;\">opaque<\/span><\/i><span style=\"font-weight: 400;\">, which is the default and like a regular monitor. <\/span><i><span style=\"font-weight: 400;\">Additive<\/span><\/i><span style=\"font-weight: 400;\">, which is when the image is projected onto a transparent screen, means that white is 100 percent light and black is 100 percent transparent. Lasty, <\/span><i><span style=\"font-weight: 400;\">subtractive<\/span><\/i><span style=\"font-weight: 400;\"> is when you have an LCD display like a gameboy screen, where pixels that are &#8220;on&#8221; are black, and if they&#8217;re off, they&#8217;re transparent.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Network: prefers-reduced-data and the save-data header<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Not everyone is lucky enough to have fast or reliable internet, or unlimited data plans. If you don&#8217;t, you&#8217;re generally not happy with websites downloading many megabytes per page and would rather have a slimmed-down version.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Browsers can send the <\/span><span style=\"font-weight: 400;\">Save-data: on<\/span><span style=\"font-weight: 400;\"> HTTP header, and servers can then choose to send smaller images and videos, prevent downloading some scripts and disable any form of polling or preloading. Mobile browsers have this in their settings already, and for desktop browsers there are browser extensions that do this.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dealing with such a request on a web server level is often hard to do. Either because you lack access or the configuration requirements to make it work are just too complex. That&#8217;s unfortunate because it&#8217;s potentially very impactful.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file= prefers-reduced-data.css\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">Coming up in browsers, and available behind a flag in Chromium Canary, is the <\/span><span style=\"font-weight: 400;\">prefers-reduced-data<\/span><span style=\"font-weight: 400;\"> media query. Though you can do less with it compared to the <\/span><span style=\"font-weight: 400;\">Save-data<\/span><span style=\"font-weight: 400;\"> header (which you could theoretically use to send an entirely different web page), you can still use it in CSS to prevent downloading unneeded fonts and background images, or simply requesting smaller background images. And in JavaScript you can use it to prevent polling, preloading and automatically streaming video.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Though the <\/span><span style=\"font-weight: 400;\">prefers-reduced-data<\/span><span style=\"font-weight: 400;\"> media query is not implemented yet, both Firefox (behind a flag) and Chrome implement a new Network Information API which lets you check if <\/span><span style=\"font-weight: 400;\">saveData<\/span><span style=\"font-weight: 400;\"> is on, and what the effective type of an internet connection is.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file= network-information-api.js\"><\/script><\/p>\n<p><span style=\"font-weight: 400;\">effectiveType<\/span><span style=\"font-weight: 400;\"> takes into account not just the type (Wi-Fi, cellular etc) but also how long previous round trips to the server took and what the download speed is. There&#8217;s slow-2g, 2g, 3g and 4g as possible values.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Responding to device settings<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Though my main point in this article is that the device is a proxy for user preferences, we&#8217;re also getting more access to information about the device that we can use to provide better experiences.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22607\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image2-300x149.png\" alt=\"\" width=\"300\" height=\"149\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">A notched phone showing bands to prevent text from running behind the notch. Source: <\/span><\/i><a href=\"https:\/\/webkit.org\/blog\/7929\/designing-websites-for-iphone-x\/\"><i><span style=\"font-weight: 400;\">Webkit<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=viewport-cover.html\"><\/script><\/p>\n<p>When Apple came out with the notch on the iPhone X, they introduced a new viewport property called viewport-fit: cover, without which a site would be shown banded on a notched phone.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22613\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image5-300x149.png\" alt=\"\" width=\"300\" height=\"149\" \/><\/p>\n<p><i><span style=\"font-weight: 400;\">With <\/span><\/i><i><span style=\"font-weight: 400;\">viewport-fit: cover<\/span><\/i><i><span style=\"font-weight: 400;\">, text falls behind the notch and becomes unreadable. Source: <\/span><\/i><a href=\"https:\/\/webkit.org\/blog\/7929\/designing-websites-for-iphone-x\/\"><i><span style=\"font-weight: 400;\">Webkit<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">Turning it on can obscure content, so in order to then respond to that, they also introduced new &#8220;environment variables&#8221; to use in your CSS to make sure your content would be readable.<\/span><\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=envs.css\"><\/script><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-22611\" src=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/image4-300x149.png\" alt=\"\" width=\"300\" height=\"149\" \/><\/p>\n<p><em>The safe-area-inset-* environment values give you a safe space where your content won&#8217;t be obscured. Source: Webkit.<\/em><\/p>\n<p>This feature has been available in Mobile Safari since the iPhone 10, and in Chrome for Android since version 69.<\/p>\n<p><strong>Interaction<\/strong><\/p>\n<p>Lastly, I want to point out the new interaction media queries. These are supported across the board in evergreen browsers, though iPads don&#8217;t change from coarse to fine with the new trackpad (they might in a future update). Nowadays, we have many more input devices compared to when the web got started. Mouse pointers still exist, but we also have touch, external controllers like Wii remotes and even things like AR hand detection.<\/p>\n<p>Some things that are easy to do with a mouse are harder or impossible to do with touch devices, like hitting small targets or hovering. With the interaction media features you can adapt to these devices in clever ways.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/Kilian\/7fb4440b832d22351e656e15090ae3ba.js?file=interaction.css\"><\/script><\/p>\n<p>The way I would go about this is consider a touch device as the most minimal implementation. It won&#8217;t have hover effects, and the precision of your input device is coarse. For this group, you can&#8217;t have things popping up on hover, so they need to be visible or behind an explicit toggle, and your tap targets will need to be larger. Then as you start to get hover capabilities, you can add those with hover:hover. As you get more precise input, you can choose to make clickable targets smaller (but not too small!). This way you can make an interface that works well with the input device a user has, not despite it.<\/p>\n<p>The interaction media queries pointer and hover will check the primary input device, like touch on mobile, making the pointer coarse even if you&#8217;re using a stylus. If you want to check the capabilities of any of the input devices that are connected to your device, you can use any-pointer and any-hover.<\/p>\n<p><strong>In closing<\/strong><\/p>\n<p>As we\u2019ve seen, there are many more ways to adapt our websites than just to the screen size of your user\u2019s device. With new media queries we can accomodate a user&#8217;s preference for a dark website and for seeing less motion. We can serve up a stripped down website if a user wants to save data and make sure our site works regardless of the user\u2019s input device. In the future, we can further adapt our websites to accommodate people&#8217;s eyesight, whether they want more or less contrast, or if they need extra help to make text easier to read. We can do this not just based on user preference but also on their environmental conditions, for example when they&#8217;re in a dark room or in bright sunlight.<\/p>\n<p>It might feel like a lot more work and a lot more you need to take into account, but remember that was the case with responsive design, too. With responsive design we needed to go from a single preferred screen width to a near-infinite number of screen sizes. And just like with responsive design, we&#8217;ll find ways to integrate this into our workflow using progressive enhancement and new defaults. Websites are about to become a lot more responsive, and I&#8217;m glad they are.<\/p>\n<p><strong>About Kilian<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">Kilian is the creator of <\/span><a href=\"https:\/\/polypane.app\"><span style=\"font-weight: 400;\">Polypane<\/span><\/a><span style=\"font-weight: 400;\">, the web browser for developers and designers. Polypane helps developers, designers and QA build and test high-quality websites with tools like built-in live reloading, accessibility testing, design comparison, built-in handoff support, social media previews and testing for a wide range of situations like colour blindness, bright sunlight, colour contrast issues and other visual impairments. Kilian is a frequent open-source contributor and has nearly two decades of experience building websites. He regularly speaks and writes about topics like responsive websites, design systems and accessibility. He can be found on <\/span><a href=\"https:\/\/twitter.com\/kilianvalkhof\"><span style=\"font-weight: 400;\">Twitter<\/span><\/a><span style=\"font-weight: 400;\"> and writes on his <\/span><a href=\"https:\/\/kilianvalkhof.com\"><span style=\"font-weight: 400;\">blog<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kilian Valkhof considers a new type of responsiveness. One that doesn&#8217;t just look at the width and height of the screen, but also at what your user prefers.<\/p>\n","protected":false},"author":4,"featured_media":22632,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,12,22,24],"tags":[],"class_list":{"0":"post-22591","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-creative-news","8":"category-guest-posts","9":"category-ui-ux","10":"category-web-design"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Beyond screen sizes: responsive design in 2020 - Heart Internet<\/title>\n<meta name=\"description\" content=\"Beyond screen sizes: responsive design in 2020 - Written by the team at Heart Internet.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Beyond screen sizes: responsive design in 2020 - Heart Internet\" \/>\n<meta property=\"og:description\" content=\"Beyond screen sizes: responsive design in 2020 - Written by the team at Heart Internet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\" \/>\n<meta property=\"og:site_name\" content=\"Heart Internet\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/heartinternet\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-09T14:43:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design-1024x768.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Heart Internet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:site\" content=\"@heartinternet\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Heart Internet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\"},\"author\":{\"name\":\"Heart Internet\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/4cf88a3a32d3dc3df684ebe5b470bb78\"},\"headline\":\"Beyond screen sizes: responsive design in 2020\",\"datePublished\":\"2020-07-09T14:43:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\"},\"wordCount\":2975,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png\",\"articleSection\":[\"Creative News\",\"Guest Posts\",\"UI\/UX\",\"Web Design\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\",\"name\":\"Beyond screen sizes: responsive design in 2020 - Heart Internet\",\"isPartOf\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png\",\"datePublished\":\"2020-07-09T14:43:17+00:00\",\"description\":\"Beyond screen sizes: responsive design in 2020 - Written by the team at Heart Internet.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png\",\"width\":1920,\"height\":1440},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.heartinternet.uk\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Beyond screen sizes: responsive design in 2020\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/heartblog.victory.digital\/#website\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"name\":\"Heart Internet\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/heartblog.victory.digital\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/heartblog.victory.digital\/#organization\",\"name\":\"Heart Internet\",\"url\":\"https:\/\/heartblog.victory.digital\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"contentUrl\":\"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp\",\"width\":992,\"height\":252,\"caption\":\"Heart Internet\"},\"image\":{\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/heartinternet\/\",\"https:\/\/x.com\/heartinternet\",\"https:\/\/www.linkedin.com\/company\/heart-internet-ltd\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/4cf88a3a32d3dc3df684ebe5b470bb78\",\"name\":\"Heart Internet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g\",\"caption\":\"Heart Internet\"},\"url\":\"https:\/\/www.heartinternet.uk\/blog\/author\/heart-internet\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Beyond screen sizes: responsive design in 2020 - Heart Internet","description":"Beyond screen sizes: responsive design in 2020 - Written by the team at Heart Internet.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/","og_locale":"en_GB","og_type":"article","og_title":"Beyond screen sizes: responsive design in 2020 - Heart Internet","og_description":"Beyond screen sizes: responsive design in 2020 - Written by the team at Heart Internet.","og_url":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/","og_site_name":"Heart Internet","article_publisher":"https:\/\/www.facebook.com\/heartinternet\/","article_published_time":"2020-07-09T14:43:17+00:00","og_image":[{"width":1024,"height":768,"url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design-1024x768.png","type":"image\/png"}],"author":"Heart Internet","twitter_card":"summary_large_image","twitter_creator":"@heartinternet","twitter_site":"@heartinternet","twitter_misc":{"Written by":"Heart Internet","Estimated reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#article","isPartOf":{"@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/"},"author":{"name":"Heart Internet","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/4cf88a3a32d3dc3df684ebe5b470bb78"},"headline":"Beyond screen sizes: responsive design in 2020","datePublished":"2020-07-09T14:43:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/"},"wordCount":2975,"commentCount":1,"publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png","articleSection":["Creative News","Guest Posts","UI\/UX","Web Design"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/","url":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/","name":"Beyond screen sizes: responsive design in 2020 - Heart Internet","isPartOf":{"@id":"https:\/\/heartblog.victory.digital\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage"},"image":{"@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage"},"thumbnailUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png","datePublished":"2020-07-09T14:43:17+00:00","description":"Beyond screen sizes: responsive design in 2020 - Written by the team at Heart Internet.","breadcrumb":{"@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#primaryimage","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2020\/07\/Respinsive-design.png","width":1920,"height":1440},{"@type":"BreadcrumbList","@id":"https:\/\/www.heartinternet.uk\/blog\/beyond-screen-sizes-responsive-design-in-2020\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.heartinternet.uk\/blog\/"},{"@type":"ListItem","position":2,"name":"Beyond screen sizes: responsive design in 2020"}]},{"@type":"WebSite","@id":"https:\/\/heartblog.victory.digital\/#website","url":"https:\/\/heartblog.victory.digital\/","name":"Heart Internet","description":"","publisher":{"@id":"https:\/\/heartblog.victory.digital\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/heartblog.victory.digital\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/heartblog.victory.digital\/#organization","name":"Heart Internet","url":"https:\/\/heartblog.victory.digital\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/","url":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","contentUrl":"https:\/\/www.heartinternet.uk\/blog\/wp-content\/uploads\/2025\/02\/HeartInternet_Logo_Colour.webp","width":992,"height":252,"caption":"Heart Internet"},"image":{"@id":"https:\/\/heartblog.victory.digital\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/heartinternet\/","https:\/\/x.com\/heartinternet","https:\/\/www.linkedin.com\/company\/heart-internet-ltd"]},{"@type":"Person","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/4cf88a3a32d3dc3df684ebe5b470bb78","name":"Heart Internet","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/heartblog.victory.digital\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","caption":"Heart Internet"},"url":"https:\/\/www.heartinternet.uk\/blog\/author\/heart-internet\/"}]}},"_links":{"self":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/22591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/comments?post=22591"}],"version-history":[{"count":0,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/posts\/22591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media\/22632"}],"wp:attachment":[{"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/media?parent=22591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/categories?post=22591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.heartinternet.uk\/blog\/wp-json\/wp\/v2\/tags?post=22591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}