Bird
Raised Fist0
NextJSframework~5 mins

Responsive images in NextJS

Choose your learning style10 modes available
Introduction

Responsive images help your website show the right image size for different screen sizes. This makes pages load faster and look good on phones, tablets, and desktops.

When you want your website images to look sharp on all devices.
When you want to save data by loading smaller images on small screens.
When you want to improve your website speed and user experience.
When you want to support different screen resolutions like retina displays.
Syntax
NextJS
import Image from 'next/image'

<Image
  src="/path/to/image.jpg"
  alt="Description of image"
  width={width}
  height={height}
  sizes="(max-width: 600px) 100vw, 50vw"
/>

The Image component from Next.js automatically optimizes images.

The sizes attribute tells the browser how wide the image will be at different screen widths.

Examples
This loads a dog image that is 800x600 pixels. On screens smaller than 600px wide, it uses the full screen width. On bigger screens, it uses half the screen width.
NextJS
import Image from 'next/image'

<Image
  src="/dog.jpg"
  alt="A cute dog"
  width={800}
  height={600}
  sizes="(max-width: 600px) 100vw, 50vw"
/>
This loads a logo image with fixed size and uses priority to load it faster because it is important for the page.
NextJS
import Image from 'next/image'

<Image
  src="/logo.png"
  alt="Company logo"
  width={400}
  height={100}
  priority
/>
This uses the fill prop to make the image fill its parent container and cover it nicely.
NextJS
import Image from 'next/image'

<Image
  src="/landscape.jpg"
  alt="Beautiful landscape"
  fill
  style={{ objectFit: 'cover' }}
/>
Sample Program

This component shows a nature image that changes size depending on the screen width. It uses Next.js Image with sizes to load the best image size. The image has rounded corners for a nice look.

NextJS
import Image from 'next/image'

export default function ResponsiveImageExample() {
  return (
    <main style={{ maxWidth: '800px', margin: 'auto' }}>
      <h1>Responsive Image Example</h1>
      <Image
        src="/nature.jpg"
        alt="Nature scene"
        width={800}
        height={500}
        sizes="(max-width: 600px) 100vw, 50vw"
        style={{ borderRadius: '8px' }}
      />
      <p>This image adjusts size based on your screen width.</p>
    </main>
  )
}
OutputSuccess
Important Notes

Always provide a meaningful alt text for accessibility.

Use the sizes attribute to help browsers pick the right image size.

The Next.js Image component automatically optimizes images for performance.

Summary

Responsive images load the right size for different screens to improve speed and look.

Next.js Image component makes it easy to use responsive images.

Remember to use alt text and sizes for best results.

Practice

(1/5)
1. What is the main benefit of using responsive images in a Next.js app?
easy
A. They load the right image size for different screen widths, improving speed.
B. They automatically add captions to images.
C. They convert images to black and white on small screens.
D. They disable images on mobile devices to save data.

Solution

  1. Step 1: Understand responsive images purpose

    Responsive images adjust to screen size to load faster and look better.
  2. Step 2: Identify Next.js Image component benefit

    Next.js Image component helps load the right image size automatically.
  3. Final Answer:

    They load the right image size for different screen widths, improving speed. -> Option A
  4. Quick Check:

    Responsive images = load right size fast [OK]
Hint: Responsive images adapt size to screen for speed [OK]
Common Mistakes:
  • Thinking responsive images add captions automatically
  • Believing images turn black and white on small screens
  • Assuming images are disabled on mobile devices
2. Which is the correct way to import and use the Next.js Image component for responsive images?
easy
A. import Image from 'next/image';
B. import { Image } from 'react';
C. import Img from 'next/image';
D. import Image from 'next/image';

Solution

  1. Step 1: Check import syntax

    Next.js Image is imported as default from 'next/image'. So, import Image from 'next/image' is correct.
  2. Step 2: Check usage with required props

    Image requires src, width, height, and alt for accessibility and layout.
  3. Final Answer:

    import Image from 'next/image'; <Image src='/pic.jpg' width={500} height={300} alt='pic' /> -> Option A
  4. Quick Check:

    Correct import + width/height + alt = import Image from 'next/image'; [OK]
Hint: Next.js Image needs import, src, width, height, alt [OK]
Common Mistakes:
  • Importing Image from 'react' instead of 'next/image'
  • Omitting width and height props
  • Using wrong component name like Img
3. What will be the behavior of this Next.js Image component?
import Image from 'next/image';
export default function Photo() {
  return (
    <Image
      src='/photo.jpg'
      alt='A photo'
      sizes='(max-width: 600px) 100vw, 50vw'
      width={800}
      height={600}
    />
  );
}
medium
A. Loads image only on screens wider than 600px.
B. Always loads image at 800x600 pixels regardless of screen size.
C. Throws an error because sizes prop is invalid.
D. Loads 100% viewport width image on screens 600px or smaller, else 50% viewport width.

Solution

  1. Step 1: Understand sizes prop usage

    The sizes prop defines image display width based on screen width media queries.
  2. Step 2: Interpret sizes value

    For screens max 600px wide, image uses 100vw (full viewport width). Otherwise, 50vw (half viewport width).
  3. Final Answer:

    Loads 100% viewport width image on screens 600px or smaller, else 50% viewport width. -> Option D
  4. Quick Check:

    Sizes prop controls image width by screen size [OK]
Hint: Sizes prop sets image width per screen size [OK]
Common Mistakes:
  • Thinking sizes sets image pixel dimensions directly
  • Assuming sizes prop causes error
  • Believing image loads only on wide screens
4. Identify the error in this Next.js Image usage:
import Image from 'next/image';
export default function Banner() {
  return (
    <Image
      src='/banner.png'
      alt='Banner'
      width='100%'
      height='300'
    />
  );
}
medium
A. alt text is missing.
B. src path must be an external URL.
C. width should be a number, not a string with '%'.
D. height cannot be set with a number.

Solution

  1. Step 1: Check width prop type

    Next.js Image expects width as a number (pixels), not a string with '%'.
  2. Step 2: Verify other props

    alt is present, src can be local path, height as number is valid.
  3. Final Answer:

    width should be a number, not a string with '%'. -> Option C
  4. Quick Check:

    Width must be numeric pixels [OK]
Hint: Width and height props must be numbers, not strings [OK]
Common Mistakes:
  • Using percentage strings for width or height
  • Thinking alt text is optional
  • Believing src must be external URL
5. You want to optimize images for a blog with different screen sizes. Which approach correctly uses Next.js Image to load responsive images with accessibility and performance in mind?
hard
A.
B.
C.
D.

Solution

  1. Step 1: Check alt text for accessibility

    includes meaningful alt text 'Blog post', improving accessibility.
  2. Step 2: Verify sizes and priority usage

    Sizes prop correctly sets image width for small and larger screens. Priority loads important images faster.
  3. Step 3: Identify issues in other options

    A lacks alt text and reverses sizes logic, B has empty alt (bad for accessibility), D uses invalid string props for width/height.
  4. Final Answer:

    <Image src='/post.jpg' alt='Blog post' width={1200} height={800} sizes='(max-width: 768px) 100vw, 50vw' priority /> -> Option B
  5. Quick Check:

    Alt + sizes + priority = best practice [OK]
Hint: Use alt text, sizes, and priority for best responsive images [OK]
Common Mistakes:
  • Leaving alt text empty
  • Using invalid width/height values
  • Incorrect sizes media query order
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard