CLS Cumulative Layout Shift vermeiden
Technisches SEO 5 Min. Lesezeit

CLS optimieren: Stabile Layouts für Industrie- und Logistik-Websites

CLS-Probleme erkennen und beheben — für Hafenlogistik-Portale, Stahl-Shops und Industrie-Sites aus Duisburg. Mit Code-Beispielen für Bilder, Fonts und dynamische Inhalte.

Arnold Wender

Arnold Wender

SEO-Experte & Gründer

Aktualisiert: 8. Mai 2026
Inhaltsverzeichnis

Ein Disponent am Innenhafen will auf den “Sendung verfolgen”-Button tippen — und im selben Moment lädt das Hafenwetter-Widget nach und schiebt den Button drei Zentimeter nach unten. Statt der Sendung öffnet sich die Wetterdetailansicht. Genau diese Frustration misst der Cumulative Layout Shift (CLS), und sie bleibt auch 2026 ein harter Ranking-Faktor — gerade für Hafenlogistiker, Stahlhändler und Industrie-Plattformen, die mit dynamischen Modulen und Live-Daten arbeiten.

0%

aller Websites scheitern an Core Web Vitals

Quelle: NitroPack 2026

0%

mehr Traffic-Verlust bei langsamen Seiten vs. schnellen Konkurrenten

Quelle: Dataslayer Research

0

ist der CLS-Grenzwert für 'Gut' (75. Perzentil)

Quelle: Google Search Central

Was ist CLS?

CLS misst, wie viel sich sichtbare Elemente während des Seitenladens unerwartet verschieben:

CLS = Summe aller unerwarteten Layout-Verschiebungen

CLS-Bewertung

CLS-WertBewertung
≤ 0.1Gut (grün)
0.1 - 0.25Verbesserungsbedürftig (orange)
> 0.25Schlecht (rot)

Warum CLS für Industrie-Plattformen besonders relevant ist

  1. Vermeidet Fehlklicks auf Buttons wie “Angebot anfordern” oder “Verfügbarkeit prüfen”
  2. Core Web Vitals als Ranking-Faktor seit 2021
  3. Conversions sinken auf instabilen B2B-Anfrageformularen drastisch
  4. Barrierefreiheit — kritisch für ältere Disponenten, die Lupenfunktion oder Screenreader nutzen

CLS messen

1. PageSpeed Insights

https://pagespeed.web.dev/

Zeigt CLS für Lab- und Field-Daten — also auch echte Werte aus Chrome-User-Daten Ihrer Disponenten und Kunden.

2. Chrome DevTools

  1. DevTools öffnen (F12)
  2. Performance-Tab
  3. Aufnahme starten und Seite neu laden
  4. “Layout Shift”-Einträge im Timeline suchen

3. Web Vitals Extension

Chrome-Erweiterung zeigt CLS in Echtzeit beim Surfen — sehr praktisch für tägliche QA-Checks.

4. Search Console

Core Web Vitals Bericht zeigt betroffene URL-Gruppen Ihrer Domain.

5. JavaScript API

new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntries()) {
    if (!entry.hadRecentInput) {
      console.log('Layout Shift:', entry.value);
    }
  }
}).observe({ type: 'layout-shift', buffered: true });

Häufige CLS-Ursachen — und wie Sie sie beheben

1. Bilder ohne Dimensionen

Klassiker auf Referenz-Seiten: Drohnenfoto vom Innenhafen-Terminal lädt nach und schiebt die Case-Study nach unten.

Problem:

<!-- SCHLECHT — keine Dimensionen -->
<img src="terminal-innenhafen.jpg" alt="Containerterminal Duisburg">

Lösung:

<!-- GUT — mit Dimensionen -->
<img src="terminal-innenhafen.jpg" alt="Containerterminal Duisburg" width="1600" height="900">

<!-- BESSER — mit aspect-ratio -->
<img src="terminal-innenhafen.jpg" alt="Containerterminal Duisburg"
     style="aspect-ratio: 16/9; width: 100%; height: auto;">

CSS-Alternative:

.referenz-bild {
  aspect-ratio: 16 / 9;
  background-color: #f0f0f0; /* Platzhalter */
}

.referenz-bild img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

2. Videos und Iframes

Imagefilm einer Stahl-Walzstraße als YouTube-Embed:

Problem:

<!-- SCHLECHT -->
<iframe src="https://youtube.com/embed/walzstrasse-witten"></iframe>

Lösung:

<div class="video-container">
  <iframe src="https://youtube.com/embed/walzstrasse-witten"
          width="560" height="315"
          loading="lazy"
          title="Walzstraße ThyssenKrupp Witten"></iframe>
</div>
.video-container {
  position: relative;
  padding-bottom: 56.25%; /* 16:9 */
  height: 0;
  overflow: hidden;
}

.video-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

3. Web Fonts (FOUT/FOIT)

Problem: Flash of Unstyled Text oder Invisible Text

Lösung 1: font-display

@font-face {
  font-family: 'CorporateFont';
  src: url('font.woff2') format('woff2');
  font-display: optional; /* oder: swap */
}
font-displayVerhalten
autoBrowser entscheidet
blockUnsichtbar, dann Custom-Font
swapSystem-Font, dann Custom-Font
fallbackKurz unsichtbar, System wenn zu langsam
optionalCustom nur, wenn gecacht

Lösung 2: Preload

<link rel="preload" href="/fonts/font.woff2"
      as="font" type="font/woff2" crossorigin>

Lösung 3: Metriken anpassen

@font-face {
  font-family: 'CorporateFont';
  src: url('font.woff2') format('woff2');
  font-display: swap;
  size-adjust: 105%;
  ascent-override: 90%;
  descent-override: 20%;
}

4. Dynamische Werbe- oder Partner-Banner

Ein Branchenportal für Hafenlogistik blendet Partner-Banner ein, die mit Verzögerung aus dem AdServer nachgeladen werden:

Lösung: Platzhalter reservieren

<div class="partner-banner" style="min-height: 250px;">
  <!-- Banner wird hier eingefügt -->
</div>
.partner-banner {
  min-height: 250px;
  background: #f5f5f5;
  display: flex;
  align-items: center;
  justify-content: center;
}

.partner-banner::before {
  content: 'Partner-Anzeige';
  color: #999;
  font-size: 12px;
}

DSGVO-Banner sind ein klassischer CLS-Übeltäter — und ein juristisches Muss in NRW unter LDI-Aufsicht.

Lösung: Overlay statt Push

/* SCHLECHT — schiebt Content nach unten */
.cookie-banner {
  position: relative;
}

/* GUT — schwebt über dem Content */
.cookie-banner {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 9999;
}

6. Dynamisch nachgeladener Content

Live-Daten wie aktuelle Schiffspositionen oder Verfügbarkeitsanzeigen aus dem Lager:

Lösung: Platzhalter mit Skeleton-Loader

<div class="live-tracking" style="min-height: 200px;">
  <div class="skeleton-loader"></div>
</div>
.skeleton-loader {
  background: linear-gradient(
    90deg,
    #f0f0f0 25%,
    #e0e0e0 50%,
    #f0f0f0 75%
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

7. Tabs und Akkordeons in Produktdetailseiten

Stahl-Datenblätter mit Tabs für “Technische Daten”, “Lieferzeiten”, “Sicherheitshinweise”:

Lösung: Feste Mindesthöhe

.produktdaten-tab {
  min-height: 300px; /* Höhe des größten Tabs */
}

Oder: Transform statt Display

/* SCHLECHT */
.tab-panel { display: none; }
.tab-panel.active { display: block; }

/* GUT — kein Layout Shift */
.tab-panel {
  position: absolute;
  opacity: 0;
  visibility: hidden;
}
.tab-panel.active {
  position: relative;
  opacity: 1;
  visibility: visible;
}

8. Infinite Scroll und “Mehr laden”

Auf Produktlisten eines Recycling-Anbieters aus Bottrop:

Lösung:

// Content unten anhängen, nicht oben einfügen
function appendItems(items) {
  const container = document.querySelector('.produktliste');
  items.forEach(item => container.appendChild(item));
}

CLS bei responsiven Layouts

Problem: Unterschiedliche Layouts bei Desktop und Mobile

/* Mobile: Sidebar versteckt */
.sidebar { display: none; }

/* Desktop: Sidebar sichtbar */
@media (min-width: 768px) {
  .sidebar { display: block; }
}

Lösung: clamp() oder Container-Queries

.content {
  width: clamp(300px, 70%, 800px);
}

Problem: Responsive Bilder mit srcset

<img srcset="produkt-400.jpg 400w,
             produkt-800.jpg 800w,
             produkt-1200.jpg 1200w"
     sizes="(max-width: 400px) 100vw, 800px"
     width="800" height="600"
     alt="Industriedichtung Witten 200mm DN200">

Alle Bilder müssen dasselbe Seitenverhältnis haben!

JavaScript-basierte Lösungen

Resize Observer für dynamische Inhalte

const observer = new ResizeObserver(entries => {
  for (const entry of entries) {
    entry.target.style.minHeight =
      `${entry.contentRect.height}px`;
  }
});

observer.observe(document.querySelector('.live-tracking'));

IntersectionObserver für Lazy Loading

const imageObserver = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      imageObserver.unobserve(img);
    }
  });
}, { rootMargin: '200px' });

document.querySelectorAll('img[data-src]').forEach(img => {
  imageObserver.observe(img);
});

CLS-Debugging Workflow

1. Problem identifizieren

// In der Browser-Konsole ausführen
new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    if (!entry.hadRecentInput) {
      console.log('CLS Entry:', entry);
      console.log('Element:', entry.sources);
    }
  }
}).observe({ type: 'layout-shift', buffered: true });

2. Verursachendes Element finden

Die sources-Property zeigt das verschiebende Element:

entry.sources.forEach(source => {
  console.log('Node:', source.node);
  console.log('Previous Rect:', source.previousRect);
  console.log('Current Rect:', source.currentRect);
});

3. Ursache beheben

ElementTypische UrsacheLösung
<img>Keine Dimensionenwidth/height setzen
<iframe>Keine DimensionenContainer mit aspect-ratio
TextFont-Loadingfont-display: optional
DivDynamischer Contentmin-height setzen
BannerPush statt Overlayposition: fixed

CLS optimieren: Checkliste

Bilder & Medien

  • Alle Bilder haben width und height
  • Videos und Iframes mit aspect-ratio-Container
  • Lazy-loaded Bilder haben Platzhalter

Fonts

  • font-display: swap oder optional
  • Critical Fonts preloaded
  • Fallback-Fonts mit ähnlichen Metriken

Dynamischer Content

  • Banner und Werbung mit reserviertem Platz
  • Live-Daten mit min-height
  • Skeleton-Loader für asynchrone Inhalte

Layout

  • Cookie-Banner als fixed-Overlay
  • Tabs mit fester Mindesthöhe
  • Infinite Scroll hängt unten an, statt oben einzufügen

Testing

  • PageSpeed Insights zeigt grünes CLS
  • Search Console ohne CLS-Warnungen
  • Real User Monitoring implementiert

Fortgeschrittene Techniken

CSS contain

.widget {
  contain: layout; /* Isoliert Layout-Berechnungen */
}

content-visibility

.offscreen-section {
  content-visibility: auto;
  contain-intrinsic-size: 0 500px;
}

Will-change (sparsam einsetzen)

.animated-element {
  will-change: transform;
}

Fazit für Duisburger Industrie- und Logistik-Plattformen

CLS-Optimierung ist keine Hexerei — die meisten Probleme lassen sich mit expliziten Dimensionen und reserviertem Platz lösen. Investieren Sie in stabile Layouts, und Ihre Disponenten, Einkäufer und Lager-Mitarbeiter werden es Ihnen danken — und Ihre Rankings im Hafenlogistik- und Industrie-Cluster Duisburg ebenfalls.

Für eine umfassende Core Web Vitals-Optimierung und ein Audit Ihrer technischen SEO-Basis stehen wir bereit. Sehen Sie sich auch unseren Leitfaden zur LCP-Optimierung an oder vergleichen Sie regionale Performance-Strategien in Bochum, Essen und Mülheim. Performance-Spezialisten finden Sie auch im Schwesternetz unter seo-essen.com und webagentur-halle.de.


FAQ

Warum ist mein CLS auf Desktop gut, aber Mobile schlecht?

Unterschiedliche Layouts, Viewport-Größen und Ladezeiten. Fonts und Bilder verhalten sich auf Mobile anders, und Werbe-Banner laden über die mobile Datenleitung langsamer nach. Testen Sie beide Versionen separat in PageSpeed Insights.

Zählen animierte Elemente zum CLS?

Nur, wenn sie andere Elemente verschieben. CSS-Transforms (translate, scale) verursachen keinen Layout Shift. Änderungen an width, height oder margin schon.

Wie finde ich heraus, welches Element den Shift verursacht?

Chrome DevTools → Performance → Layout Shift Einträge anklicken. Oder die Performance API nutzen und entry.sources auswerten.

Ist CLS wichtiger als LCP oder INP?

Alle drei Core Web Vitals sind gleichwertig. Seit März 2024 hat INP (Interaction to Next Paint) den alten FID-Wert ersetzt und misst die Interaktivität strenger. CLS betrifft aber die gesamte Nutzersession, nicht nur den Ladevorgang — daher gerade auf Plattformen mit Live-Daten besonders relevant. Für Top-Rankings sollten alle drei Metriken im grünen Bereich liegen: LCP ≤ 2,5s, INP ≤ 200ms, CLS ≤ 0,1.

Arnold Wender, SEO-Experte

SEO-Experte & Gründer

Arnold Wender ist Gründer und Geschäftsführer der SEO-Agentur Duisburg. Mit über 19 Jahren Erfahrung in der Suchmaschinenoptimierung hilft er Unternehmen, ihre Online-Sichtbarkeit nachhaltig zu verbessern.

Profil anzeigen