Responsive Web Design

Chapter 5
Breakpoints, Media Queries and Container Queries

Bachelors Program in Full Stack Development
Responsive Web Design   •   Post Graduate

Breakpoints, Media Queries and Container Queries

Introduction and Context

Responsive web design is not simply the practice of making a desktop page narrower. It is an approach to designing interfaces that preserve usability, accessibility, performance, and visual coherence across a highly variable set of devices, browsers, input methods, and viewing conditions. Breakpoints, media queries, and container queries are central mechanisms in this approach because they allow a layout to respond to constraints rather than to a particular brand or model of device.

A breakpoint is a condition at which a design changes its rules. A media query evaluates characteristics of the viewport, device, user agent, or user preference. A container query evaluates the size or characteristics of a containing element. The distinction is important: media queries answer questions such as “How much space does the browser viewport provide?” whereas container queries answer “How much space does this component receive in its current context?”

At postgraduate level, these features should be understood not merely as CSS syntax, but as part of a broader design system. They affect component architecture, content strategy, testing, accessibility, performance, and organisational workflows. Poor breakpoint decisions create brittle interfaces; well-designed responsive rules create adaptable systems.

Learning Objectives

By the end of this chapter, learners should be able to:

  1. Explain the conceptual relationship between responsive design, breakpoints, media queries, and container queries.
  2. Distinguish viewport-driven adaptation from component-driven adaptation.
  3. Design and evaluate breakpoint strategies using content and interaction constraints.
  4. Implement range-based media queries and container queries using modern CSS.
  5. Analyse cascading, source order, specificity, inheritance, and query interaction.
  6. Apply responsive techniques to a realistic production interface.
  7. Critically evaluate limitations, accessibility implications, testing requirements, and emerging practices.

1. Responsive Design as Constraint-Based Design

A responsive interface can be modelled conceptually as a function of available space, content, interaction requirements, and user preferences. Let the rendered presentation be represented by:

P = f(V, C, I, U, B)

Here, V is the viewport environment, C is the content and component structure, I represents interaction requirements, U represents user preferences and accessibility settings, and B represents browser capabilities. This is a conceptual model rather than a numerical equation. It emphasises that responsive behaviour is determined by several variables, not viewport width alone.

A breakpoint should therefore be introduced when a design constraint changes, for example when:

  • navigation links no longer fit without wrapping;
  • a two-column reading layout becomes too narrow;
  • a table becomes difficult to scan;
  • touch targets become crowded;
  • a card’s title or metadata requires undesirable truncation;
  • a component is placed in a narrower sidebar rather than a wide main column.

This leads to a central principle:

Breakpoints should be derived from content and interaction failure, not selected only because they correspond to popular device dimensions.

Terminology

  • Viewport: The browser’s currently available visual area.
  • Breakpoint: A condition at which layout, visibility, sizing, or interaction rules change.
  • Media feature: A characteristic tested by a media query, such as width, orientation, or user preference.
  • Media query: A conditional CSS expression based primarily on the viewport, output device, or user preferences.
  • Container query: A conditional CSS expression based on the dimensions or characteristics of a query container.
  • Mobile-first design: A strategy in which the baseline layout is designed for constrained space and enhanced progressively.
  • Fluid layout: A layout that changes continuously using relative units, flexible tracks, or functions such as clamp().
  • Discrete layout change: A change that occurs when a condition becomes true, such as switching from one column to two columns.

Responsive systems generally combine fluid changes and discrete changes. Font size may scale continuously, while navigation may switch from a horizontal list to a menu at a particular threshold.

2. Breakpoint Strategy

2.1 Device breakpoints and content breakpoints

A device breakpoint is chosen around an assumed device category—for example, “tablet” or “desktop.” This approach is easy to communicate but fragile because devices vary greatly and browser windows can be resized. A content breakpoint is chosen when the content or interaction model requires a different arrangement. Content breakpoints are more durable because they remain meaningful when new devices appear.

Suppose a navigation bar contains six links. If the links occupy 560 pixels, the logo requires 160 pixels, and the controls require 120 pixels, the minimum theoretical width is:

Wmin = Wlinks + Wlogo + Wcontrols + Wgaps + Wpadding

The variables represent rendered widths in CSS pixels. This calculation is only an estimate because font metrics, localisation, zoom, and browser rendering affect actual size. If the estimated requirement is approximately 900 pixels, a navigation change should occur near the point at which wrapping or crowding begins—not necessarily at a conventional “tablet” width.

2.2 Mobile-first and desktop-first approaches

In a mobile-first stylesheet, the base rules describe the smallest practical layout. Larger conditions progressively add columns, spacing, navigation options, or enhanced visual treatments:

.page {
  padding: 1rem;
}

@media (min-width: 48rem) {
  .page {
    padding: 2rem;
  }
}

Mobile-first design has several advantages. Base styles tend to be simpler, essential content is prioritised, and progressive enhancement is explicit. However, it is not automatically superior. A complex application may need a carefully designed wide-screen information architecture before deriving constrained versions. The important issue is whether the design has a clear baseline and an explicit adaptation strategy.

2.3 Fluidity between breakpoints

A design with only a few discrete breakpoints can still feel abrupt. Fluid CSS helps reduce unnecessary jumps:

.hero-title {
  font-size: clamp(1.75rem, 1.2rem + 2vw, 3.5rem);
}

clamp(minimum, preferred, maximum) ensures that the computed value does not fall below the minimum or exceed the maximum. The preferred expression is evaluated continuously within those limits. Units must be interpreted in context: rem depends on the root font size, while vw represents one percent of the viewport width. This technique is suitable for gradual scaling, but it does not replace a breakpoint when the information structure itself must change.

3. Media Queries

A media query conditionally applies CSS when a media type and feature expression match the current environment. A basic example is:

@media (min-width: 48rem) {
  .layout {
    display: grid;
    grid-template-columns: 2fr 1fr;
  }
}

The query is true when the viewport width is at least 48 root-em units. Using rem or em for breakpoints can be more robust than fixed pixels under user text scaling, although browser behaviour and implementation details should be tested. The choice should be consistent with the design system.

3.1 Range syntax

Modern CSS supports explicit range comparisons:

@media (width >= 48rem) and (width < 75rem) {
  .layout {
    grid-template-columns: 1fr 1fr;
  }
}

Equivalent legacy-style syntax is:

@media (min-width: 48rem) and (max-width: 74.99rem) {
  .layout {
    grid-template-columns: 1fr 1fr;
  }
}

The range form is more readable and avoids arbitrary fractional adjustments. Nevertheless, production teams should verify browser support requirements before adopting newer syntax.

3.2 Important media features

FeatureTypical purpose
width, min-width, max-widthAdapt layout to viewport width
heightHandle short viewports or vertical space constraints
orientationRespond to portrait or landscape presentation
resolutionAddress high-density output in limited cases
hoverDetermine whether precise hover interaction is available
pointerDistinguish coarse and fine pointing devices
prefers-reduced-motionReduce non-essential animation
prefers-color-schemeSupport light and dark colour preferences
forced-colorsImprove compatibility with forced-colour modes
prefers-contrastRespond to contrast preferences where supported

A media feature should be used only when its semantics match the design decision. For example, hover: hover should not be treated as proof that a user is using a desktop computer; hybrid devices may support both touch and hover.

3.3 User preference queries

Accessibility-related queries should be treated as user requirements rather than decoration:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms;
    animation-iteration-count: 1;
    transition-duration: 0.01ms;
    scroll-behavior: auto;
  }
}

This example reduces motion but should be reviewed carefully. Some animations communicate state or progress and may need an alternative rather than complete removal. Motion reduction should also be implemented in JavaScript animation systems where relevant.

3.4 Query logic and the cascade

Media queries do not create an independent styling system. Their declarations participate in the normal cascade. Conflicts are resolved by origin, importance, cascade layers, specificity, and source order. A later declaration is not automatically stronger if an earlier declaration has greater specificity or uses !important.

A maintainable structure often combines cascade layers with media queries:

@layer reset, base, components, utilities;

@layer components {
  .card { padding: 1rem; }

  @media (min-width: 50rem) {
    .card { padding: 1.5rem; }
  }
}

The goal is to make responsive rules predictable rather than to increase selector complexity.

4. Container Queries

Media queries are appropriate when the whole page or application should respond to viewport conditions. They become less suitable when a reusable component may be placed in different regions. A card in a wide main column may have ample space, while the same card in a sidebar may be narrow even when the viewport is wide.

Container queries solve this contextual problem. First, an ancestor establishes a query container:

.dashboard-region {
  container-type: inline-size;
}

A descendant can then respond to the container’s inline dimension:

@container (min-width: 36rem) {
  .course-card {
    display: grid;
    grid-template-columns: 10rem 1fr;
  }
}

The component is now governed by the space available to its container, not by the viewport. This improves portability and supports component-based architecture.

4.1 Container types

  • inline-size enables queries against the container’s inline dimension.
  • size enables queries against both inline and block dimensions, subject to layout considerations.
  • normal does not establish a size query container.

For most responsive components, inline-size is the safer and more common choice because horizontal space usually determines whether content can fit. Container names may be assigned for clarity:

.main-column {
  container: content / inline-size;
}

@container content (width >= 42rem) {
  .profile-card {
    grid-template-columns: 8rem 1fr;
  }
}

4.2 Container query units

Container query units provide relative sizing based on the query container. Common units include cqw for one percent of the container’s width and cqi for one percent of the container’s inline size. For example:

.card-heading {
  font-size: clamp(1.1rem, 3cqi, 2rem);
}

The value remains bounded by the minimum and maximum. As with viewport units, designers must test extreme sizes and avoid making text too small or too large.

4.3 The containment principle

Container queries require a meaningful containment boundary. This boundary is not merely a selector label; it affects how the browser calculates layout and query evaluation. Developers must understand possible cycles: if a container’s size depends on a descendant’s query-dependent style, and that style depends on the container’s size, the browser must avoid an unstable feedback loop. Establishing appropriate containment and avoiding circular sizing dependencies are essential.

5. Media Queries and Container Queries Compared

CriterionMedia queryContainer query
Primary inputViewport or user environmentAncestor container
Best scopePage-level layout and global preferencesReusable components
Typical decisionSwitch navigation or page columnsChange card orientation or internal spacing
Architectural fitApplication shellComponent and design-system layer
Main riskDevice-oriented assumptionsIncorrect or missing containment
Testing focusWindow size, preferences, orientationMultiple parent layouts and container widths

The two mechanisms are complementary. A page may use a media query to change its global grid and a container query to adapt each card within that grid. A practical rule is:

Use media queries for environment-level decisions and container queries for component-level decisions.

This is not absolute. Some components legitimately respond to viewport preferences such as reduced motion or colour scheme, while some page structures may be built from container-based composition.

6. A Systematic Design Method

Step 1: Identify invariants

Determine what must remain stable across widths: reading order, essential actions, semantic headings, keyboard access, and minimum touch-target dimensions. Responsive adaptation should not change meaning or make critical controls inaccessible.

Step 2: Identify failure conditions

Resize the interface continuously and record when content wraps awkwardly, controls collide, lines become excessively long, or a visual hierarchy breaks. These observations provide evidence for breakpoints.

Step 3: Choose fluid or discrete behaviour

Use fluid methods when the relationship should change gradually. Use a breakpoint when the information architecture or interaction pattern must change. For example, padding can be fluid, but a table may need to become a horizontally scrollable region or a stacked data presentation.

Step 4: Assign responsibility

Ask whether the condition belongs to the viewport or to a component’s context. A global navigation transformation belongs to the page shell and is commonly controlled by a media query. A card’s internal layout belongs to the card and is a strong candidate for a container query.

Step 5: Define a small, documented system

A design system should document the rationale for each threshold, not merely list numbers. For example:

TokenIllustrative valueIntended role
--bp-content48remIntroduce two-column reading layout
--bp-wide72remIncrease outer gutters and navigation space
--card-comfortable36remSwitch card to media-and-text arrangement

These are illustrative values, not universal standards. Teams should derive their own values through content testing.

Step 6: Test beyond nominal widths

Testing should include browser zoom, text enlargement, localisation, long unbroken strings, keyboard navigation, high-contrast or forced-colour modes, reduced motion, portrait and landscape orientations, and devices that support both touch and hover.

7. Worked Example: Responsive Course Catalogue

Consider a university course catalogue. Each course card contains a thumbnail, title, level, duration, description, and an enrolment button. The catalogue appears in a full-width page on large screens, in a two-column grid on medium screens, and in a single column on small screens.

A page-level implementation might be:

.catalogue {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 48rem) {
  .catalogue {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 75rem) {
  .catalogue {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.5rem;
  }
}

The minmax(0, 1fr) pattern prevents long content from forcing a grid track wider than intended. The page-level grid determines how many cards fit, but each card should remain independently adaptable:

.catalogue-region {
  container-type: inline-size;
}

.course-card {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@container (min-width: 34rem) {
  .course-card {
    grid-template-columns: 9rem minmax(0, 1fr);
    align-items: start;
  }
}

This architecture remains effective if the catalogue later appears in a dashboard sidebar. The viewport may be wide, but the sidebar container may be narrow; the card will respond to its actual available space.

The implementation should also preserve semantic HTML. A card should not become inaccessible merely because its visual arrangement changes. The source order should generally follow a meaningful reading order, and the enrolment control should remain keyboard reachable. If the thumbnail is decorative, its alternative text should be empty; if it conveys course identity, it needs an appropriate accessible name.

8. Applied Case: Illustrative Institutional Dashboard

Background

A fictional university, Northbridge Online, is developing a dashboard for postgraduate learners. The dashboard contains a navigation rail, progress summary, upcoming deadlines, and reusable assessment cards. The same assessment card is used in the main dashboard, a search results page, and a narrow notification drawer.

Problem

The first implementation used viewport media queries for every layout decision. At a wide viewport, the assessment cards displayed an image beside text. However, when the card appeared in the notification drawer, the viewport remained wide while the card became narrow. Text wrapped into very short lines, buttons overflowed, and titles were truncated.

Analysis

The failure resulted from confusing global space with local space. The dashboard shell was correctly a viewport-level concern, but the card’s internal composition was a component-level concern. Testing only common laptop and mobile widths concealed the problem because it did not test multiple parent contexts.

Approach and solution

The team retained media queries for the shell:

.dashboard {
  display: grid;
  grid-template-columns: 1fr;
}

@media (min-width: 64rem) {
  .dashboard {
    grid-template-columns: 16rem minmax(0, 1fr);
  }
}

It then established a container for card groups and moved card-specific layout rules to a container query:

.card-group {
  container: cards / inline-size;
}

.assessment-card {
  display: block;
}

@container cards (width >= 32rem) {
  .assessment-card {
    display: grid;
    grid-template-columns: 8rem minmax(0, 1fr);
  }
}

The team also replaced fixed title heights with a flexible layout, tested long translated titles, and ensured that the action button remained visible without relying on hover.

Outcome

The card adapted consistently in all three contexts. The number of viewport breakpoints was reduced, component reuse improved, and visual defects were found earlier through container-based tests. The solution did not eliminate the need for media queries; it assigned each query to the correct architectural layer.

Learning points

  1. A wide viewport does not guarantee that a component has wide space.
  2. Responsive behaviour should follow ownership: shells respond globally, components respond locally.
  3. Testing must vary parent context, not only browser width.
  4. Query choice is an architectural decision with long-term maintenance consequences.

9. Accessibility, Governance, and Professional Practice

Responsive changes must not remove information or create discriminatory access barriers. A mobile navigation menu should remain keyboard accessible, expose its expanded state programmatically, and provide a logical focus order. Hiding content with display: none removes it from the accessibility tree, whereas visual techniques such as clipping may preserve or remove it depending on implementation; developers should choose deliberately.

Text must remain readable under browser zoom and user font enlargement. A breakpoint that works at default settings may fail when text is enlarged. Fixed heights are particularly dangerous because they can clip content. Responsive interfaces should allow content to grow vertically.

The Web Content Accessibility Guidelines provide relevant principles concerning reflow, text spacing, keyboard operation, focus visibility, and target size. Legal obligations differ by jurisdiction, so organisations should combine technical standards with applicable accessibility law and institutional policy.

Governance also includes documentation. Teams should record why a breakpoint exists, which component owns it, what browsers are supported, and how it was tested. This prevents undocumented “magic numbers” from accumulating.

10. Performance and Maintainability

Media and container queries themselves are generally inexpensive compared with large images, script execution, and complex layout trees. Nevertheless, excessive conditional rules can make the cascade difficult to reason about. Good practice includes:

  • keeping selectors low in specificity;
  • grouping component rules coherently;
  • using cascade layers where appropriate;
  • avoiding duplicate declarations across many queries;
  • preferring layout primitives such as Grid and Flexbox before adding a breakpoint;
  • using responsive images and appropriate image loading strategies;
  • testing real content rather than placeholder text.

CSS should not be generated as a collection of device-specific exceptions. A design system with semantic tokens and component ownership is more maintainable than a list of phone, tablet, and desktop overrides.

11. Contemporary Developments and Critical Evaluation

Container queries have encouraged a shift from page templates toward adaptable components. This aligns with component-based frameworks and design systems, but it does not remove the need for layout composition. A component cannot solve every page-level problem independently; it still needs clear contracts concerning content, minimum size, and interaction.

Modern CSS also provides newer tools such as cascade layers, logical properties, subgrid, style queries in evolving implementations, and increasingly expressive range syntax. These capabilities can reduce JavaScript-based resize observers and improve declarative design. Browser support must still be evaluated against the project’s audience and support policy.

Artificial intelligence may assist in generating responsive CSS, identifying visual differences, or proposing breakpoint candidates from screenshots. However, automated suggestions cannot reliably determine semantic reading order, accessibility consequences, localisation requirements, or institutional design intent. Human review remains essential, especially for interfaces affecting education, health, finance, or public services.

A critical issue is the persistence of device stereotypes. “Mobile,” “tablet,” and “desktop” describe presumed categories rather than actual constraints. A television, foldable device, split-screen browser, embedded web view, or resized desktop window may violate those assumptions. Constraint-based reasoning is therefore both technically stronger and more future-resistant.

Best-Practice Checklist

Before releasing a responsive interface, verify that:

  • breakpoints are justified by content or interaction constraints;
  • base styles provide a usable experience at narrow widths;
  • fluid sizing is used where a discrete change is unnecessary;
  • viewport decisions use media queries;
  • reusable component decisions use container queries where suitable;
  • no important content is lost at a breakpoint;
  • text survives zoom, enlargement, and localisation;
  • keyboard, touch, and alternative input methods work;
  • reduced-motion and colour preferences are respected;
  • components are tested in more than one parent context;
  • query rules are documented and maintainable;
  • supported browsers have been verified;
  • performance is evaluated with realistic content and network conditions.

Chapter Summary

Breakpoints are responsive decision points that should be derived from content, layout, and interaction constraints rather than from device labels alone. Media queries evaluate viewport, output, and user-preference conditions and are particularly appropriate for application shells and global adaptations. Container queries evaluate the space provided by an ancestor and are particularly valuable for reusable components that appear in different contexts.

Effective responsive design combines discrete changes with fluid techniques such as flexible grids, relative units, and bounded scaling. Correct use of the cascade, containment, accessibility principles, and systematic testing is essential. A mature implementation assigns each responsive decision to the correct architectural layer, documents its rationale, and tests unusual but realistic conditions such as zoom, localisation, narrow containers, hybrid input, and user preferences.

Key Terms

Breakpoint: A condition at which responsive rules change.

Media query: A CSS condition based on viewport, output, or user-environment characteristics.

Container query: A CSS condition based on the size or characteristics of a containing element.

Viewport: The browser area in which a document is rendered.

Content breakpoint: A threshold derived from content or interaction failure.

Mobile-first: Designing the constrained baseline before adding wider-layout enhancements.

Fluid layout: A layout that changes continuously within available space.

Discrete layout change: A structural change activated when a condition is met.

Media feature: A property such as width, orientation, pointer, or user preference tested by a query.

Query container: An ancestor that establishes a context for container-query evaluation.

Containment: A browser layout boundary used to control sizing, layout, or query relationships.

Cascade: The CSS conflict-resolution process involving origin, importance, layers, specificity, and order.

Specificity: The comparative weight assigned to selectors during cascade resolution.

clamp(): A CSS function that bounds a preferred value between minimum and maximum values.

cqw: A container query unit representing one percent of the query container’s width.

Progressive enhancement: Adding capabilities to a functional baseline as conditions permit.

Reflow: Reorganising content so it remains usable in a constrained presentation.

Design system: A governed collection of reusable design principles, tokens, components, and rules.

Logical property: A CSS property expressed in terms of writing direction, such as inline or block dimensions.

Responsive component: A component that adapts to its available context while preserving meaning and usability.

Review Questions

Short Answer Questions

  1. What is the principal difference between a media query and a container query?
  2. Why are content breakpoints generally more durable than device breakpoints?
  3. What problem does minmax(0, 1fr) help prevent in a CSS Grid layout?
  4. Name two user-preference media features and explain their purpose.
  5. Why should responsive components be tested in multiple parent contexts?

Long Answer Questions

  1. Explain how a mobile-first strategy can be combined with fluid typography and discrete layout changes.
  2. Discuss the role of the CSS cascade in resolving competing responsive declarations.
  3. Compare media queries and container queries in terms of scope, architecture, testing, and limitations.
  4. Explain the accessibility risks associated with responsive navigation and fixed-height components.
  5. Develop a breakpoint strategy for a content-heavy institutional website and justify each decision.

Analytical / Application Questions

  1. A course card looks correct at a 1280-pixel viewport but overflows when placed in a 280-pixel sidebar. Diagnose the architectural error and propose a query-based solution.
  2. A navigation bar wraps when the viewport is 910 pixels wide, but the design team proposes a breakpoint at 768 pixels because it is a common tablet width. Critically evaluate the proposal and recommend a method for selecting the threshold.
  3. Design a testing matrix for a responsive dashboard that includes viewport widths, container widths, zoom, localisation, keyboard access, reduced motion, and hybrid pointer input. Explain why each dimension matters.

Multiple Choice Questions with Answers

Question 1

Which condition most strongly justifies introducing a responsive breakpoint?

A. A popular device has a new screen size

B. The content or interaction pattern begins to fail

C. A framework provides a predefined breakpoint

D. The developer prefers round numerical values

Correct Answer: B. The content or interaction pattern begins to fail

Question 2

What does a media query primarily evaluate?

A. The dimensions of an ancestor component only

B. The database schema used by the page

C. Viewport, output, or user-environment characteristics

D. The number of DOM elements in a component

Correct Answer: C. Viewport, output, or user-environment characteristics

Question 3

Which CSS declaration establishes an inline-size query container?

A. container-type: inline-size;

B. query-mode: inline;

C. container-size: viewport;

D. display: query;

Correct Answer: A. container-type: inline-size;

Question 4

Why are container queries especially useful for reusable components?

A. They remove the need for semantic HTML

B. They respond to the component’s available context

C. They automatically optimise all images

D. They override the CSS cascade

Correct Answer: B. They respond to the component’s available context

Question 5

What is the purpose of prefers-reduced-motion?

A. To detect screen resolution

B. To detect whether a pointer is precise

C. To respond to a user preference for less non-essential motion

D. To force every animation to run continuously

Correct Answer: C. To respond to a user preference for less non-essential motion

Question 6

In clamp(1rem, 2vw, 2rem), what role does 1rem play?

A. The preferred value

B. The maximum value

C. The minimum value

D. The container width

Correct Answer: C. The minimum value

Question 7

A component is placed in a narrow sidebar within a wide viewport. Which query mechanism most directly supports adapting the component to that sidebar?

A. A container query

B. An orientation query only

C. A resolution query only

D. A print media query

Correct Answer: A. A container query

Question 8

What does minmax(0, 1fr) commonly help prevent in CSS Grid?

A. Keyboard focus

B. A grid track being forced wider by content

C. Colour contrast problems

D. Reduced-motion preferences

Correct Answer: B. A grid track being forced wider by content

Question 9

Which statement about media queries and the cascade is correct?

A. Declarations inside media queries ignore specificity

B. Media queries always override unqueried declarations

C. Declarations inside media queries participate in normal cascade resolution

D. Source order is the only factor that resolves conflicts

Correct Answer: C. Declarations inside media queries participate in normal cascade resolution

Question 10

Which testing practice best reveals whether a component is genuinely context-responsive?

A. Testing only one desktop viewport

B. Testing only the developer’s preferred device

C. Testing the component at different widths and in different parent containers

D. Testing only with placeholder text

Correct Answer: C. Testing the component at different widths and in different parent containers

Responsive Web Design
Chapter 5 of 5