A responsive landing page keeps its content and actions usable as the viewport narrows. Build the page mobile-first, let Grid or Flexbox reflow the regions, make media fit its container, and verify the result at the WCAG 2.2 equivalent of 320 CSS pixels before checking performance.
What a responsive landing page must do
Responsive design is an outcome, not a particular framework or breakpoint list. The same information and functionality should remain available while columns, spacing and controls adapt to the available width.
WCAG 2.2 Success Criterion 1.4.10, Reflow, is a Level AA requirement. For vertically scrolling content, the page must be presentable without loss of information or functionality and without two-dimensional scrolling at a width equivalent to 320 CSS pixels, except where a two-dimensional layout is essential to the content’s use or meaning. Read the full criterion in the WCAG 2.2 standard and the W3C’s explanation of reflow.
A landing page can therefore have a wide hero on a desktop screen and a single readable column on a narrow screen. The headline, supporting copy, form or button, navigation and any proof you provide should still be reachable without side-to-side scrolling.
Recommended Free Tools
#1 Best Overall
- HTML CSS Design and Build Web Sites
- Comes with secure packaging
- It can be a gift option
Plan the page before writing CSS
Choose the content and action first, then identify the regions that need to move. The following is an implementation pattern, not a universal marketing formula:
- Header: brand, primary navigation and a clearly labeled action.
- Hero: one descriptive heading, short explanation and the main action.
- Benefits or details: a set of items that can change from multiple columns to one column.
- Evidence: a testimonial, result, specification or other information that supports the decision.
- Final action: a second route to the same task for readers who reach the bottom.
Use real text while developing. Placeholder strings hide wrapping problems, and a layout that works only for one headline length is not resilient.
Start with semantic, mobile-first HTML
Place the narrow-screen reading order directly in the markup. CSS can create wider arrangements later without making keyboard or screen-reader users follow a different logical sequence.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Acme Analytics</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<header class="site-header">
<a class="logo" href="/">Acme Analytics</a>
<nav aria-label="Primary navigation">
<a href="#benefits">Benefits</a>
<a href="#proof">Proof</a>
<a class="button button-small" href="#start">Start free</a>
</nav>
</header>
<main>
<section class="hero" aria-labelledby="hero-title">
<div class="hero-copy">
<p class="eyebrow">Reports without the spreadsheet chase</p>
<h1 id="hero-title">See the numbers that need your attention.</h1>
<p class="lead">Connect your data, set a useful alert and give your team one place to act.</p>
<p><a class="button" href="#start">Create a free report</a></p>
</div>
<div class="hero-media">
<img src="dashboard.webp" alt="Acme Analytics dashboard showing a weekly report" width="960" height="720">
</div>
</section>
<section id="benefits" class="benefits" aria-labelledby="benefits-title">
<h2 id="benefits-title">A shorter path from question to answer</h2>
<div class="benefit-grid">
<article><h3>Connect once</h3><p>Bring the sources your team already uses into one report.</p></article>
<article><h3>Spot change</h3><p>See the movement that deserves a decision, not another export.</p></article>
<article><h3>Share clearly</h3><p>Send a view that makes the next step obvious.</p></article>
</div>
</section>
<section id="proof" class="proof" aria-labelledby="proof-title">
<h2 id="proof-title">Built for a weekly review</h2>
<blockquote>“We replaced three recurring exports with one review that everyone can follow.”</blockquote>
<cite>— Jordan Lee, operations lead</cite>
</section>
<section id="start" class="signup" aria-labelledby="signup-title">
<h2 id="signup-title">Create your first report</h2>
<form action="/signup" method="post">
<label for="email">Work email</label>
<input id="email" name="email" type="email" autocomplete="email" required>
<button class="button" type="submit">Start free</button>
</form>
</section>
</main>
<footer><small>© 2026 Acme Analytics</small></footer>
</body>
</html>
The heading hierarchy, link labels, form label and alternative text are part of the page’s usable content. Replace the example copy and endpoint with your own; do not leave a form posting to a non-existent route in production.
Make the layout reflow with CSS Grid and Flexbox
W3C documents both CSS Grid with media queries and Flexbox as sufficient techniques for reflow. They are options, not a mandate. This stylesheet keeps the default layout narrow and adds columns only when there is room.
:root {
--ink: #172033;
--muted: #526078;
--surface: #ffffff;
--soft: #eef3ff;
--accent: #315ee7;
--line: #d8dfed;
--measure: 70rem;
}
* { box-sizing: border-box; }
body {
margin: 0;
color: var(--ink);
background: var(--surface);
font: 1rem/1.6 system-ui, sans-serif;
}
.site-header,
main > section,
footer {
width: min(100% - 2rem, var(--measure));
margin-inline: auto;
}
.site-header {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding-block: 1rem;
}
nav { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; }
a { color: var(--accent); }
.logo { color: var(--ink); font-weight: 700; text-decoration: none; }
.hero {
display: grid;
gap: 2rem;
padding-block: 3rem;
}
.hero-copy { max-width: 38rem; }
.eyebrow { color: var(--accent); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
h1 { max-width: 12ch; margin-block: .25rem 1rem; font-size: clamp(2.25rem, 8vw, 5rem); line-height: 1.05; }
.lead { color: var(--muted); font-size: 1.2rem; }
.hero-media img { display: block; width: 100%; height: auto; border-radius: 1rem; }
.button {
display: inline-block;
border: 2px solid var(--accent);
border-radius: .5rem;
padding: .7rem 1rem;
color: #fff;
background: var(--accent);
font-weight: 700;
text-decoration: none;
}
.button-small { padding: .45rem .7rem; }
.benefits { padding-block: 3rem; }
.benefit-grid { display: grid; gap: 1rem; }
.benefit-grid article { padding: 1.25rem; border: 1px solid var(--line); border-radius: .75rem; }
.proof, .signup { padding-block: 3rem; }
.proof { background: var(--soft); padding-inline: 1.25rem; }
form { display: grid; gap: .5rem; max-width: 28rem; }
input { min-height: 2.75rem; border: 1px solid var(--line); border-radius: .4rem; padding: .5rem; font: inherit; }
:focus-visible { outline: 3px solid #f5a400; outline-offset: 3px; }
@media (min-width: 48rem) {
.hero { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 4rem; padding-block: 6rem; }
.benefit-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.site-header, main > section, footer { width: min(100% - 4rem, var(--measure)); }
}
The minmax(0, 1fr) columns allow long content to shrink instead of forcing a grid wider than its container. The mobile defaults stack the hero and benefit cards; the media query introduces two hero columns and three benefit columns only at a wider viewport. You can change the threshold after testing your actual content rather than treating 48rem as a universal value.
Keep images inside their layout regions
A large image can create horizontal overflow even when the text columns are correct. The W3C advisory image-fitting technique describes using sizing behavior such as max-width and an automatic height so an image adapts to the available space and zoom.
- Give the image intrinsic
widthandheightvalues in the markup to reserve its shape. - Use
display: block; width: 100%; height: auto;when the image should fill its column. - Use
max-width: 100%;when it should never exceed its containing block. - Check screenshots with long captions, translated text and unusually narrow cards; those often expose overflow that a short English headline does not.
Check accessibility and reflow before polishing
- Open the page at a viewport equivalent to 320 CSS pixels. Confirm that every heading, link, button, form control and image description remains available.
- Scroll vertically through the entire page. A normal page may become longer, but ordinary text and controls should not require horizontal scrolling in two directions.
- Tab through interactive elements. The focus indicator should remain visible, and the order should follow the reading order.
- Resize gradually rather than checking only one desktop and one phone width. Watch for a column that becomes too narrow before the media query runs.
- Test with longer text and browser text enlargement. Fixed heights and absolutely positioned labels are common causes of clipped content.
- Inspect dialogs, menus and validation messages separately. A responsive main column does not make an overlay usable automatically.
The two-dimensional exception in WCAG applies only to content whose use or meaning requires that arrangement. It is not a blanket exception for a page that is difficult to fit.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsRank #3
Measure performance separately from responsive layout
A page can reflow correctly and still load slowly or shift while it loads. Google Search Central describes Core Web Vitals as real-world measures of loading performance, interactivity and visual stability. Its good-experience targets are:
| Metric | Target for a good user experience | What it indicates |
|---|---|---|
| Largest Contentful Paint (LCP) | 2.5 seconds or less | How quickly the main content appears |
| Interaction to Next Paint (INP) | 200 milliseconds or less | How promptly interactions are handled |
| Cumulative Layout Shift (CLS) | 0.1 or less | How stable the visual layout remains |
These are user-experience targets, not conversion guarantees or a complete definition of responsive design. Measure them with the conditions and tools described in Google’s Core Web Vitals guidance. Reserve image space, avoid injecting content above an existing element and keep scripts that handle the first interaction small enough to respond promptly.
Common failures and fixes
The page scrolls sideways on a phone
Use the browser’s element inspector to find the widest element. Typical causes are a fixed pixel width, a long unbroken URL, a preformatted block or an image without a limiting width. Replace fixed widths with a flexible track, allow long tokens to wrap where appropriate, and apply the image sizing rule above. Do not hide overflow on the whole body as a first fix; that can conceal content users need.
The hero columns never stack
Check that the media query is valid, that the stylesheet is loaded, and that a later rule is not overriding display: grid or the column definition. Inspect the computed styles at the actual viewport width. If the content becomes cramped before the query threshold, move the threshold to the point where the content still has a usable measure.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Rank #4
- Brand: Wiley
- Set of 2 Volumes
- A handy two-book set that uniquely combines related technologies Highly visual format and accessible language makes these books highly effective learning tools Perfect for beginning web designers and front-end developers
Cards stretch or text is cut off
Remove fixed heights from content cards and let their rows grow. Check for absolutely positioned text, white-space: nowrap and overflow rules. A card grid should accommodate the longest real heading and translated versions.
The image is distorted
Keep the intrinsic aspect ratio with height: auto. If a deliberate crop is needed, use a defined media frame and document the crop behavior; do not stretch the source to fill a different ratio.
The page looks responsive but feels slow
Inspect LCP, INP and CLS independently. An oversized hero image can delay LCP, a large script can delay interaction, and late-loading fonts or banners can increase CLS. Fix the measured bottleneck instead of assuming another breakpoint will solve it.
A screenshot contains a cookie banner, chat bubble or bot check
Those elements are part of the rendered page unless your capture process handles them. For repeatable visual checks, use the capture workflow below or remove the elements in a controlled test environment.
Or skip the browser setup
If you need automated screenshots of the landing page, ScreenshotNeo is the first choice here: it removes consent banners, newsletter popups and chat widgets before capture, bills only clean shots, and has the lowest paid plan listed below.
One GET request returns a PNG, JPEG, WebP or PDF. Replace the URL with your deployed page. The complete parameter reference is in the ScreenshotNeo documentation.
Best Value
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://example.com/landing-page -o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://example.com/landing-page"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://example.com/landing-page'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
ScreenshotNeo has 63 capture options, so the same endpoint can cover most landing-page review workflows:
- Layout and rendering: full-page capture with lazy images loaded, a CSS-selector element capture, dark mode, 12 device presets or any viewport, and retina scale.
- Output: PNG, JPEG, WebP or PDF with paper size, margins, landscape mode and page ranges.
- Page control: custom CSS and JavaScript, click an element before capture, hide selectors, and wait for a selector, delay or network idle.
- Network and identity: block ads, trackers, requests or resource types; set headers, cookies, user agent or Authorization; and set timezone or geolocation.
- Finishing and delivery: transparent background, image resizing, a cache with a TTL you choose, signed links for public
<img>tags, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API and an OpenAPI specification.
Its parameter names also match those used by other screenshot APIs, which can make switching easier. Every response identifies the result with X-Page-Verdict and X-Billed headers. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads and cache hits cost nothing; only clean shots are billed.
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minute| Plan | Included shots per month | Price |
|---|---|---|
| Free | 1,000 | $0, no card |
| Starter | 3,000 | $5 |
| Growth | 15,000 | $15 |
| Pro | 60,000 | $39 |
| Scale | 250,000 | $99 |
| Business | 1,000,000 | $249 |
Yearly billing gives two months free, and every feature is available on every plan. An MCP server provides take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients, so an AI agent can inspect a page without your team maintaining browser automation.
Create a free ScreenshotNeo account to get 1,000 screenshots a month with no card.
Responsive landing-page review checklist
- At 320 CSS pixels, no essential content or action is lost and ordinary content does not need two-dimensional scrolling.
- Semantic headings, labels, links, buttons and alternative text remain understandable in the narrow reading order.
- Grid and Flexbox tracks shrink or stack without fixed-height clipping.
- Images stay within their containing regions and preserve their aspect ratio.
- Keyboard focus remains visible while the viewport changes.
- Long headings, translated copy and validation messages fit without overflow.
- LCP, INP and CLS are measured separately against Google’s 2.5-second, 200-millisecond and 0.1 targets.
- Automated captures are checked for consent banners, popups, chat widgets, bot checks and failed loads.
Frequently Asked Questions
Is a responsive landing page the same as a mobile-only page?
No. A mobile-only page targets one narrow presentation; a responsive page continuously adapts its layout while preserving the same information and functionality across available viewport sizes.
Can I combine CSS Grid and Flexbox in one landing page?
Yes. Use whichever layout method best expresses each region—for example, Grid for the hero and card tracks, and Flexbox for navigation or a row of controls. The conformance goal is successful reflow, not a particular technology.
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Should I choose breakpoints from a device list?
Choose them from the point where your actual content needs a different arrangement. Test continuously while resizing, then verify the WCAG 320 CSS pixel condition rather than targeting named devices alone.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

