Back to CSS Grid Layouts Magazine Editorial Pure CSS
Share
HTML
<div class="gl-mag">
  <div class="gl-mag-eyebrow">
    <span class="gl-mag-name">Issue 47 · Spring</span>
    <span class="gl-mag-tag">grid-area: eye</span>
  </div>
  <h2 class="gl-mag-title">
    <span class="gl-mag-name">The Long Read</span>
    <span class="gl-mag-tag">grid-area: title</span>
  </h2>
  <div class="gl-mag-lead">
    <span class="gl-mag-name">Lead paragraph</span>
    <span class="gl-mag-tag">grid-area: lead</span>
  </div>
  <figure class="gl-mag-fig">
    <span class="gl-mag-name">Photo plate</span>
    <span class="gl-mag-tag">grid-area: fig</span>
  </figure>
  <aside class="gl-mag-pull">
    <span class="gl-mag-name">Pull quote</span>
    <span class="gl-mag-tag">grid-area: pull</span>
  </aside>
  <div class="gl-mag-body">
    <span class="gl-mag-name">Body column</span>
    <span class="gl-mag-tag">grid-area: body</span>
  </div>
  <div class="gl-mag-foot">
    <span class="gl-mag-name">Footer · byline</span>
    <span class="gl-mag-tag">grid-area: foot</span>
  </div>
</div>
CSS
.gl-mag {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: 56px auto 1fr auto 48px;
  grid-template-areas:
    "eye   eye   eye   eye   eye   eye"
    "title title title title fig   fig"
    "lead  lead  body  body  fig   fig"
    "pull  pull  body  body  fig   fig"
    "foot  foot  foot  foot  foot  foot";
  gap: 14px;
  width: 100%;
  min-height: 480px;
  padding: 22px;
  background: #f5f1ea;
  font-family: 'Playfair Display', Georgia, serif;
  color: #1c1c1e;
  box-sizing: border-box;
}
.gl-mag > * {
  background: #fff;
  border: 1px solid #d8d2c5;
  border-radius: 4px;
  padding: 14px;
  display: flex; flex-direction: column;
  justify-content: center; gap: 6px;
}
.gl-mag-name { font-size: 16px; font-weight: 700; color: #1c1c1e; }
.gl-mag-tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; font-weight: 500;
  align-self: flex-start;
  padding: 2px 8px; border: 1px solid #1c1c1e;
  color: #1c1c1e;
  background: transparent;
}
.gl-mag-eyebrow { grid-area: eye; background: #1c1c1e !important; border: 0 !important; min-height: 36px; padding: 8px 14px; }
.gl-mag-eyebrow .gl-mag-name { color: #f5f1ea; font-family: 'JetBrains Mono', monospace; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; }
.gl-mag-eyebrow .gl-mag-tag { color: #f5f1ea; border-color: #f5f1ea; }
.gl-mag-title { grid-area: title; margin: 0; }
.gl-mag-title .gl-mag-name { font-size: 36px; line-height: 1; letter-spacing: -0.02em; }
.gl-mag-fig { grid-area: fig; background: linear-gradient(160deg, #d4af37, #b89238) !important; border: 0 !important; color: #1c1c1e; }
.gl-mag-fig .gl-mag-name { color: #1c1c1e; }
.gl-mag-fig .gl-mag-tag { color: #1c1c1e; border-color: #1c1c1e; }
.gl-mag-lead { grid-area: lead; }
.gl-mag-pull { grid-area: pull; background: #1c1c1e !important; border: 0 !important; }
.gl-mag-pull .gl-mag-name { color: #f5f1ea; font-style: italic; }
.gl-mag-pull .gl-mag-tag { color: #f5f1ea; border-color: #f5f1ea; }
.gl-mag-body { grid-area: body; }
.gl-mag-foot { grid-area: foot; background: #f5f1ea !important; padding: 10px 14px; }
.gl-mag-foot .gl-mag-name { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.12em; }
@media (max-width: 720px) {
  .gl-mag {
    grid-template-columns: 1fr;
    grid-template-rows: repeat(7, auto);
    grid-template-areas: "eye" "title" "fig" "lead" "body" "pull" "foot";
  }
}