Labs ICT

HTML Responsive Design

Responsive web design is an approach that makes web pages render well on a variety of devices and window or screen sizes. It ensures that users have a good viewing experience whether they're using a desktop computer, tablet, or mobile phone. Responsive design uses flexible grids, flexible images, and CSS media queries to adapt the layout to different screen sizes.

Viewport Meta Tag

The viewport meta tag is essential for responsive design. It tells the browser how to control the page's dimensions and scaling:

<!-- Basic viewport setup -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<!-- Additional viewport options -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

<!-- Allow zooming -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">

<!-- Set minimum and maximum scale -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0">

Viewport Properties

Property Description Example
width Sets the width of the viewport width=device-width
height Sets the height of the viewport height=device-height
initial-scale Initial zoom level when page loads initial-scale=1.0
maximum-scale Maximum zoom level allowed maximum-scale=2.0
minimum-scale Minimum zoom level allowed minimum-scale=0.5
user-scalable Whether users can zoom the page user-scalable=no

Don't worry about the responsive design for now, we will cover it in the CSS part.

Responsive Images

Responsive images ensure that images look good on all devices while loading efficiently. HTML provides several attributes and elements for creating responsive images.

srcset Attribute

The srcset attribute allows you to specify multiple image sources for different screen sizes:

<!-- Basic srcset example -->
<img src="small.jpg"
     srcset="small.jpg 500w,
             medium.jpg 1000w,
             large.jpg 1500w"
     alt="Responsive image">

picture Element

The picture element gives you more control over which image is displayed based on different conditions:

<!-- Picture element for art direction -->
<picture>
  <source media="(min-width: 800px)" srcset="large.jpg">
  <source media="(min-width: 500px)" srcset="medium.jpg">
  <img src="small.jpg" alt="Responsive image">
</picture>

sizes Attribute

The sizes attribute works with srcset to tell the browser how large the image will be displayed at different viewport sizes:

<!-- srcset with sizes attribute -->
<img src="small.jpg"
     srcset="small.jpg 500w,
             medium.jpg 1000w,
             large.jpg 1500w"
     sizes="(max-width: 600px) 100vw,
            (max-width: 1200px) 50vw,
            33vw"
     alt="Responsive image">

When to Use Each Method

  • srcset: Use when you have the same image at different resolutions
  • picture: Use when you need different images for different screen sizes (art direction)
  • sizes: Use with srcset to optimize image loading based on display size

๐Ÿงช Quick Quiz

What does 'viewport' meta tag control?