22 CSS Split Screen Layouts21 / 22

Pure CSSMIT licensed

Magazine Crossover

Editorial magazine spread — newspaper black on cream with a single spot color (cobalt blue). Oversized italic headline crosses the seam between two halves; pull-quote on the right intrudes into the left photo zone. The kind of layout you see on a New York Times Magazine longread.

Published Updated

Live Demo
Try it

The code

<section class="ss-mag" aria-label="Editorial magazine spread">
  <article class="ss-mag-photo">
    <div class="ss-mag-image" aria-hidden="true">
      <span class="ss-mag-figure"></span>
      <span class="ss-mag-light"></span>
    </div>
    <span class="ss-mag-caption">Photo · Iris Hawthorne for The Quarterly</span>
  </article>
  <article class="ss-mag-text">
    <span class="ss-mag-section">SECTION 04 / ESSAY</span>
    <h2 class="ss-mag-head">
      The <em>quiet</em> art of<br />doing one thing<br />at a <em>time.</em>
    </h2>
    <span class="ss-mag-byline">By <b>Iris Hawthorne</b> · Spring 2026</span>
    <p class="ss-mag-lede">
      <span class="ss-mag-drop">A</span>fter a decade of optimizing every minute, the loneliest
      realization wasn't that I had no time. It was that I'd forgotten how to spend it. Three years
      ago I made a small commitment, and it changed everything I thought I knew about productivity.
    </p>
    <blockquote class="ss-mag-pull">
      "The thing about doing one thing at a time is that the thing finally gets your attention."
    </blockquote>
    <p class="ss-mag-out">What I learned was simpler than I expected — and harder to keep.</p>
    <ul class="ss-mag-meta">
      <li><b>12 min</b> read</li>
      <li><b>2,840</b> words</li>
      <li><b>Apr 14</b> issue</li>
    </ul>
  </article>
</section>
.ss-mag {
  width: 100%;
  display: grid;
  grid-template-columns: 42% 58%;
  min-height: 100vh;
  font-family: 'Cormorant Garamond', 'Georgia', serif;
  background: #f4ede0;
  color: #1a1a1a;
  border-radius: 0;
  overflow: hidden;
  border: 1px solid #1a1a1a;
}

.ss-mag-photo {
  position: relative;
  background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
  padding: 36px 32px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  border-right: 1px solid #1a1a1a;
}

.ss-mag-image {
  position: relative;
  flex: 1;
  background: linear-gradient(180deg, #4a4a4a 0%, #1a1a1a 100%);
  overflow: hidden;
  isolation: isolate;
}

.ss-mag-figure {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 200px;
  height: 80%;
  background: radial-gradient(ellipse at 50% 12%, #c8a878 0%, #c8a878 8%, transparent 9%), linear-gradient(180deg, transparent 8%, #1a3658 8%, #1a3658 100%);
  clip-path: polygon(40% 0, 60% 0, 70% 16%, 80% 38%, 80% 100%, 20% 100%, 20% 38%, 30% 16%);
}

.ss-mag-light {
  position: absolute;
  top: -10%;
  right: -20%;
  width: 60%;
  height: 80%;
  background: radial-gradient(circle at 50% 0%, rgba(255,200,80,0.35), transparent 70%);
  filter: blur(8px);
}

.ss-mag-caption {
  font-family: 'Cormorant Garamond', serif;
  font-size: 12px;
  font-style: italic;
  color: #c8a878;
}

.ss-mag-text {
  padding: 36px 40px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  background: repeating-linear-gradient(0deg, transparent 0 32px, rgba(0,0,0,0.018) 32px 33px), #f9f3e6;
  position: relative;
}

.ss-mag-section {
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: #1a3658;
}

.ss-mag-head {
  margin: 4px 0 0;
  font-size: clamp(36px, 5.5vw, 60px);
  font-weight: 500;
  line-height: 0.92;
  letter-spacing: -0.02em;
  color: #1a1a1a;
}

.ss-mag-head em {
  font-style: italic;
  color: #1a3658;
}

.ss-mag-byline {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: #4a4a4a;
}

.ss-mag-byline b {
  color: #1a3658;
  font-weight: 700;
}

.ss-mag-lede {
  margin: 0;
  font-family: 'Cormorant Garamond', serif;
  font-size: 18px;
  line-height: 1.55;
  color: #1a1a1a;
  column-count: 2;
  column-gap: 24px;
  column-rule: 1px solid #c8a878;
}

.ss-mag-drop {
  font-family: 'Cormorant Garamond', serif;
  font-size: 64px;
  font-weight: 500;
  font-style: italic;
  line-height: 0.85;
  float: left;
  padding: 4px 8px 0 0;
  color: #1a3658;
}

.ss-mag-pull {
  margin: 0;
  font-size: clamp(18px, 2.4vw, 24px);
  line-height: 1.4;
  color: #1a3658;
  font-style: italic;
  border-left: 4px solid #1a3658;
  padding: 0 0 0 18px;
  font-weight: 500;
}

.ss-mag-out {
  margin: 0;
  font-family: 'Cormorant Garamond', serif;
  font-size: 16px;
  line-height: 1.6;
  color: #2a2a2a;
}

.ss-mag-meta {
  list-style: none;
  margin: 0;
  padding: 14px 0;
  border-top: 1px solid #c8a878;
  border-bottom: 1px solid #c8a878;
  display: flex;
  gap: 22px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: #4a4a4a;
}

.ss-mag-meta b {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 18px;
  font-weight: 500;
  color: #1a1a1a;
  margin-right: 4px;
}

@media (max-width: 720px) {
  .ss-mag {
    grid-template-columns: 1fr;
  }

  .ss-mag-photo {
    border-right: 0;
    border-bottom: 1px solid #1a1a1a;
    min-height: 280px;
  }
  /* .ss-mag-head no longer needs a mobile reset (no desktop overflow). */

  .ss-mag-lede {
    column-count: 1;
  }
}
Paste this into ChatGPT, Claude, Cursor, or any coding assistant. The block below is pre-framed with everything the AI needs to integrate this demo into your project — markup, styles, scoping notes, and the source URL. Hit Copy and paste straight into your chat.
Here's a working CSS Split Screen Layout from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Magazine Crossover
Source: https://codefronts.com/layouts/css-split-screen/magazine-crossover/

Editorial magazine spread — newspaper black on cream with a single spot color (cobalt blue). Oversized italic headline crosses the seam between two halves; pull-quote on the right intrudes into the left photo zone. The kind of layout you see on a New York Times Magazine longread.
## HTML
```html
<section class="ss-mag" aria-label="Editorial magazine spread">
  <article class="ss-mag-photo">
    <div class="ss-mag-image" aria-hidden="true">
      <span class="ss-mag-figure"></span>
      <span class="ss-mag-light"></span>
    </div>
    <span class="ss-mag-caption">Photo · Iris Hawthorne for The Quarterly</span>
  </article>
  <article class="ss-mag-text">
    <span class="ss-mag-section">SECTION 04 / ESSAY</span>
    <h2 class="ss-mag-head">
      The <em>quiet</em> art of<br />doing one thing<br />at a <em>time.</em>
    </h2>
    <span class="ss-mag-byline">By <b>Iris Hawthorne</b> · Spring 2026</span>
    <p class="ss-mag-lede">
      <span class="ss-mag-drop">A</span>fter a decade of optimizing every minute, the loneliest
      realization wasn't that I had no time. It was that I'd forgotten how to spend it. Three years
      ago I made a small commitment, and it changed everything I thought I knew about productivity.
    </p>
    <blockquote class="ss-mag-pull">
      "The thing about doing one thing at a time is that the thing finally gets your attention."
    </blockquote>
    <p class="ss-mag-out">What I learned was simpler than I expected — and harder to keep.</p>
    <ul class="ss-mag-meta">
      <li><b>12 min</b> read</li>
      <li><b>2,840</b> words</li>
      <li><b>Apr 14</b> issue</li>
    </ul>
  </article>
</section>
```
## CSS
```css
.ss-mag {
  width: 100%;
  display: grid;
  grid-template-columns: 42% 58%;
  min-height: 100vh;
  font-family: 'Cormorant Garamond', 'Georgia', serif;
  background: #f4ede0;
  color: #1a1a1a;
  border-radius: 0;
  overflow: hidden;
  border: 1px solid #1a1a1a;
}

.ss-mag-photo {
  position: relative;
  background: linear-gradient(180deg, #2a2a2a 0%, #0a0a0a 100%);
  padding: 36px 32px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  border-right: 1px solid #1a1a1a;
}

.ss-mag-image {
  position: relative;
  flex: 1;
  background: linear-gradient(180deg, #4a4a4a 0%, #1a1a1a 100%);
  overflow: hidden;
  isolation: isolate;
}

.ss-mag-figure {
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 200px;
  height: 80%;
  background: radial-gradient(ellipse at 50% 12%, #c8a878 0%, #c8a878 8%, transparent 9%), linear-gradient(180deg, transparent 8%, #1a3658 8%, #1a3658 100%);
  clip-path: polygon(40% 0, 60% 0, 70% 16%, 80% 38%, 80% 100%, 20% 100%, 20% 38%, 30% 16%);
}

.ss-mag-light {
  position: absolute;
  top: -10%;
  right: -20%;
  width: 60%;
  height: 80%;
  background: radial-gradient(circle at 50% 0%, rgba(255,200,80,0.35), transparent 70%);
  filter: blur(8px);
}

.ss-mag-caption {
  font-family: 'Cormorant Garamond', serif;
  font-size: 12px;
  font-style: italic;
  color: #c8a878;
}

.ss-mag-text {
  padding: 36px 40px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  background: repeating-linear-gradient(0deg, transparent 0 32px, rgba(0,0,0,0.018) 32px 33px), #f9f3e6;
  position: relative;
}

.ss-mag-section {
  font-family: 'Inter', sans-serif;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: #1a3658;
}

.ss-mag-head {
  margin: 4px 0 0;
  font-size: clamp(36px, 5.5vw, 60px);
  font-weight: 500;
  line-height: 0.92;
  letter-spacing: -0.02em;
  color: #1a1a1a;
}

.ss-mag-head em {
  font-style: italic;
  color: #1a3658;
}

.ss-mag-byline {
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: #4a4a4a;
}

.ss-mag-byline b {
  color: #1a3658;
  font-weight: 700;
}

.ss-mag-lede {
  margin: 0;
  font-family: 'Cormorant Garamond', serif;
  font-size: 18px;
  line-height: 1.55;
  color: #1a1a1a;
  column-count: 2;
  column-gap: 24px;
  column-rule: 1px solid #c8a878;
}

.ss-mag-drop {
  font-family: 'Cormorant Garamond', serif;
  font-size: 64px;
  font-weight: 500;
  font-style: italic;
  line-height: 0.85;
  float: left;
  padding: 4px 8px 0 0;
  color: #1a3658;
}

.ss-mag-pull {
  margin: 0;
  font-size: clamp(18px, 2.4vw, 24px);
  line-height: 1.4;
  color: #1a3658;
  font-style: italic;
  border-left: 4px solid #1a3658;
  padding: 0 0 0 18px;
  font-weight: 500;
}

.ss-mag-out {
  margin: 0;
  font-family: 'Cormorant Garamond', serif;
  font-size: 16px;
  line-height: 1.6;
  color: #2a2a2a;
}

.ss-mag-meta {
  list-style: none;
  margin: 0;
  padding: 14px 0;
  border-top: 1px solid #c8a878;
  border-bottom: 1px solid #c8a878;
  display: flex;
  gap: 22px;
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  color: #4a4a4a;
}

.ss-mag-meta b {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 18px;
  font-weight: 500;
  color: #1a1a1a;
  margin-right: 4px;
}

@media (max-width: 720px) {
  .ss-mag {
    grid-template-columns: 1fr;
  }

  .ss-mag-photo {
    border-right: 0;
    border-bottom: 1px solid #1a1a1a;
    min-height: 280px;
  }
  /* .ss-mag-head no longer needs a mobile reset (no desktop overflow). */

  .ss-mag-lede {
    column-count: 1;
  }
}
```

How this works

The spread is a two-column grid with grid-template-columns: 45% 55% and overflow: visible so a centerpiece image can cross the boundary. The image sits inside the left panel as an absolutely-positioned block with right: -20% and z-index: 2, pushing it into the right panel's territory. The headline is a separate absolutely-positioned <h2> anchored to the grid wrapper with left: 30%; right: 10%, so it visually spans both panels. Serif typography comes from a font-family stack led by 'Playfair Display', Georgia, serif. The left panel gets a muted tint, the right stays white.

Make it yours

  • Rebalance the panels by editing the track sizes — 40% 60% pushes the article into the spotlight, 50% 50% gives a symmetric editorial feel. Reposition the image's right offset to match.
  • Change the crossover depth with the image's right value — right: -30% pushes it deeper into the right panel; right: -10% keeps it modest.
  • Swap serifs by editing the --serif token. Any variable font like Fraunces or Bricolage Grotesque works if you also set an font-variation-settings line for the display weight.
  • Tint the left panel with a --tint: #f5f1ea token. Pair with a hairline border-right: 1px solid #e7e2d8 to reinforce the panel seam under the crossover image.

Gotchas — read before shipping

  • The crossover image needs overflow: visible on both the grid wrapper AND the left panel. Missing either one clips the image at the panel edge and the crossover effect disappears.
  • Absolute positioning removes the headline from flow, so the grid's row height collapses to the panel content. Add min-height on the wrapper, or reserve space with an invisible spacer sized to the headline.
  • Z-index only works on positioned or grid-item children. If the right panel needs to sit above the image at a certain breakpoint, promote it with position: relative; z-index: 3 — otherwise stacking order silently ignores the value.

Browser support

ChromeSafariFirefoxEdge
any modernany modernany modernany modern

Percentage-based grid tracks + overflow: visible + absolute positioning — Baseline Widely Available. Serif font stacks degrade gracefully to Georgia.

Techniques used in this demo

Search CodeFronts

Loading…