Design · Bausteine-Dossier

Seiten-Sektion

Zahlen / Erfolge

Das Erfolgs-Band einer Seite: drei bis vier Kennzahlen, die Vertrauen belegen — Jahre, Projekte, Bewertung, Weiterempfehlung. Links die ruhige, scanbare Rasterform mit dünnen Trennern für Handwerk & Dienstleistung; rechts die atmosphärische Variante mit Akzent-Glow und hochzählenden Ziffern für Marken. Beide ganze Sektionen, copy-paste-fähig.

Zahlen — Kennzahl-Raster, klar

Pol 2 · Klarheit Anlass: Handwerk, Dienstleistung

Vier Kennzahlen in ruhigem Raster, getrennt durch dünne vertikale Linien. Große Zahl, kurzes Label — statisch und sofort scanbar, kein Effekt-Lärm. Mobil stapeln sich die Werte, die Trenner verschwinden automatisch.

In Zahlen

Verlässlich — seit vielen Jahren.

  • 16 Jahre Erfahrung
  • 1.200+ Projekte
  • 4,9 Bewertung
  • 98% Weiterempfehlung
<section class="zk-klar" aria-label="Zahlen und Erfolge">
  <div class="zk-klar-head">
    <p class="zk-klar-eyebrow">In Zahlen</p>
    <h2 class="zk-klar-title">Verlässlich – seit vielen Jahren.</h2>
  </div>
  <ul class="zk-klar-grid cols2 cols4">
    <li class="zk-klar-item">
      <span class="zk-klar-num">16</span>
      <span class="zk-klar-label">Jahre Erfahrung</span>
    </li>
    <li class="zk-klar-item">
      <span class="zk-klar-num">1.200<i>+</i></span>
      <span class="zk-klar-label">Projekte</span>
    </li>
    <li class="zk-klar-item">
      <span class="zk-klar-num">4,9<i> ★</i></span>
      <span class="zk-klar-label">Bewertung</span>
    </li>
    <li class="zk-klar-item">
      <span class="zk-klar-num">98<i>%</i></span>
      <span class="zk-klar-label">Weiterempfehlung</span>
    </li>
  </ul>
</section>

<style>
.zk-klar{width:100%;background:#16161a;border:1px solid #26262c;border-radius:18px;
  padding:1.8rem 1.4rem;color:#e9e9ee}
@media(min-width:720px){.zk-klar{padding:2.6rem 2.4rem}}
.zk-klar-head{margin:0 0 1.6rem}
.zk-klar-eyebrow{margin:0 0 .5rem;font-size:.74rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--akzent,#7c87ff)}
.zk-klar-title{margin:0;font-size:clamp(1.3rem,3vw,1.8rem);line-height:1.2;
  letter-spacing:-.01em;color:#f4f4f5;overflow-wrap:break-word}
.zk-klar-grid{list-style:none;margin:0;padding:0;display:grid;gap:1.6rem 0;
  grid-template-columns:1fr}
@media(min-width:560px){.zk-klar-grid{grid-template-columns:repeat(2,1fr);gap:2rem 0}}
@media(min-width:860px){.zk-klar-grid{grid-template-columns:repeat(4,1fr)}}
.zk-klar-item{position:relative;padding:.2rem 1.6rem;text-align:left}
@media(min-width:560px){
  .zk-klar-item{padding-left:1.8rem}
  .zk-klar-item::before{content:"";position:absolute;left:0;top:.15rem;bottom:.15rem;width:1px;
    background:linear-gradient(180deg,transparent,#34343e 20%,#34343e 80%,transparent)}
  .zk-klar-grid.cols2 .zk-klar-item:nth-child(2n+1)::before{display:none}
}
@media(min-width:860px){
  .zk-klar-grid.cols4 .zk-klar-item:nth-child(4n+1)::before{display:none}
  .zk-klar-grid.cols4 .zk-klar-item:nth-child(2n+1)::before{display:block}
}
.zk-klar-num{display:block;font-size:clamp(2rem,5vw,2.6rem);font-weight:800;line-height:1;
  letter-spacing:-.02em;color:#f4f4f5}
.zk-klar-num i{font-style:normal;color:var(--akzent,#7c87ff)}
.zk-klar-label{display:block;margin-top:.55rem;font-size:.82rem;color:#a1a1aa;max-width:20ch}
</style>

Zahlen — Glow-Band mit Count-Up

Pol 1 · Craft Anlass: Marke, Premium, Tech

Kennzahlen als Glas-Karten über einem ruhenden Akzent-Glow. Die Ziffern zählen beim Sichtbarwerden per IntersectionObserver hoch, dezente Icons je Wert. Bei prefers-reduced-motion erscheint sofort der Endwert und der Glow ruht — keine Zählanimation.

Unsere Bilanz

Zahlen, die für sich sprechen.

  • 0 Jahre Erfahrung
  • 0 Projekte
  • 0 Bewertung
  • 0 Weiterempfehlung
<section class="zc-craft" aria-label="Zahlen und Erfolge">
  <div class="zc-craft-glow" aria-hidden="true"></div>
  <div class="zc-craft-head">
    <p class="zc-craft-eyebrow">Unsere Bilanz</p>
    <h2 class="zc-craft-title">Zahlen, die für sich <span>sprechen</span>.</h2>
  </div>
  <ul class="zc-craft-grid">
    <li class="zc-craft-card">
      <span class="zc-craft-ic" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></svg>
      </span>
      <span class="zc-craft-num" data-count="16">0</span>
      <span class="zc-craft-label">Jahre Erfahrung</span>
    </li>
    <li class="zc-craft-card">
      <span class="zc-craft-ic" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M4 12h16M4 17h10"/></svg>
      </span>
      <span class="zc-craft-num" data-count="1200" data-suffix="+" data-group="1">0</span>
      <span class="zc-craft-label">Projekte</span>
    </li>
    <li class="zc-craft-card">
      <span class="zc-craft-ic" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8L12 17l-5.2 2.6 1-5.8-4.3-4.1 5.9-.9z"/></svg>
      </span>
      <span class="zc-craft-num" data-count="4.9" data-decimals="1" data-suffix=" ★">0</span>
      <span class="zc-craft-label">Bewertung</span>
    </li>
    <li class="zc-craft-card">
      <span class="zc-craft-ic" aria-hidden="true">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6L9 17l-5-5"/></svg>
      </span>
      <span class="zc-craft-num" data-count="98" data-suffix="%">0</span>
      <span class="zc-craft-label">Weiterempfehlung</span>
    </li>
  </ul>
</section>

<style>
.zc-craft{position:relative;width:100%;overflow:hidden;isolation:isolate;
  background:radial-gradient(130% 130% at 15% 0%,#1c1c28 0%,#141319 55%,#101014 100%);
  border:1px solid #26262c;border-radius:20px;padding:2rem 1.5rem;color:#e9e9ee}
@media(min-width:720px){.zc-craft{padding:2.8rem 2.6rem}}
.zc-craft-glow{position:absolute;width:340px;height:340px;top:-120px;left:50%;margin-left:-170px;
  border-radius:50%;z-index:-1;filter:blur(70px);opacity:.4;
  background:radial-gradient(circle,var(--akzent,#7c87ff) 0%,transparent 70%);
  animation:zc-pulse 9s ease-in-out infinite alternate;will-change:transform,opacity}
@keyframes zc-pulse{0%{transform:scale(.9);opacity:.32}100%{transform:scale(1.15);opacity:.5}}
.zc-craft-head{margin:0 0 1.8rem;text-align:center}
.zc-craft-eyebrow{margin:0 0 .6rem;display:inline-flex;align-items:center;gap:.6em;font-size:.74rem;
  font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--akzent,#7c87ff)}
.zc-craft-eyebrow::before,.zc-craft-eyebrow::after{content:"";width:26px;height:1px;
  background:linear-gradient(90deg,transparent,var(--akzent,#7c87ff))}
.zc-craft-eyebrow::after{background:linear-gradient(90deg,var(--akzent,#7c87ff),transparent)}
.zc-craft-title{margin:0;font-size:clamp(1.5rem,3.6vw,2.1rem);line-height:1.15;
  letter-spacing:-.02em;color:#f4f4f5;overflow-wrap:break-word}
.zc-craft-title span{color:var(--akzent,#7c87ff)}
.zc-craft-grid{list-style:none;margin:0;padding:0;display:grid;gap:1rem;grid-template-columns:1fr}
@media(min-width:560px){.zc-craft-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:880px){.zc-craft-grid{grid-template-columns:repeat(4,1fr)}}
.zc-craft-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:.5rem;
  padding:1.5rem 1rem 1.35rem;border-radius:16px;text-align:center;
  background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.09);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
  transition:transform .3s cubic-bezier(.2,.7,.2,1),border-color .3s ease,box-shadow .3s ease}
.zc-craft-card:hover{transform:translateY(-4px);border-color:rgba(124,135,255,.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 18px 40px rgba(0,0,0,.4),0 0 0 1px rgba(124,135,255,.15)}
.zc-craft-ic{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;
  color:var(--akzent,#7c87ff);background:rgba(124,135,255,.12);border:1px solid rgba(124,135,255,.28)}
.zc-craft-ic svg{width:19px;height:19px}
.zc-craft-num{font-size:clamp(1.9rem,5vw,2.5rem);font-weight:800;line-height:1;letter-spacing:-.02em;
  color:#f4f4f5;font-variant-numeric:tabular-nums}
.zc-craft-num i{font-style:normal;color:var(--akzent,#7c87ff)}
.zc-craft-label{font-size:.8rem;color:#a1a1aa;line-height:1.35;max-width:16ch}
@media (prefers-reduced-motion:reduce){.zc-craft-glow{animation:none}.zc-craft-card{transition:none}}
</style>

<script>
(function(){
  var reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
  // Zahl mit Tausenderpunkt + optionalen Nachkommastellen formatieren
  function fmt(val, decimals, group){
    var s = decimals ? val.toFixed(decimals).replace(".", ",") : String(Math.round(val));
    if(group){
      var parts = s.split(",");
      parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ".");
      s = parts.join(",");
    }
    return s;
  }
  function run(el){
    var end = parseFloat(el.getAttribute("data-count")) || 0;
    var decimals = parseInt(el.getAttribute("data-decimals") || "0", 10);
    var group = el.getAttribute("data-group") === "1";
    var suffix = el.getAttribute("data-suffix") || "";
    if(reduce){ el.textContent = fmt(end, decimals, group) + suffix; return; }
    var dur = 1400, t0 = null;
    function step(ts){
      if(t0 === null) t0 = ts;
      var p = Math.min((ts - t0) / dur, 1);
      var eased = 1 - Math.pow(1 - p, 3); // easeOutCubic
      el.textContent = fmt(end * eased, decimals, group) + suffix;
      if(p < 1) requestAnimationFrame(step);
      else el.textContent = fmt(end, decimals, group) + suffix;
    }
    requestAnimationFrame(step);
  }
  var nums = document.querySelectorAll(".zc-craft-num[data-count]");
  if(!("IntersectionObserver" in window)){ nums.forEach(run); return; }
  var io = new IntersectionObserver(function(entries){
    entries.forEach(function(e){
      if(e.isIntersecting){ run(e.target); io.unobserve(e.target); }
    });
  }, { threshold: 0.4 });
  nums.forEach(function(n){ io.observe(n); });
})();
</script>

Zahlen — Fortschritts-Ringe (SVG)

Pol 1 · Craft Anlass: Quoten, Auslastung, Zufriedenheit

Prozentwerte als SVG-Donut-Ringe: der Akzent-Bogen füllt sich beim Sichtbarwerden per IntersectionObserver (animiertes stroke-dashoffset), die Ziffer zählt parallel hoch. Ideal für Werte mit natürlichem Maximum von 100 %. Bei prefers-reduced-motion steht der volle Ring sofort, ohne Animation.

Unsere Quoten

Gemessen — nicht behauptet.

  • Termintreue
  • Weiterempfehlung
  • Stammkunden
  • Auslastung
<section class="zr-ring" aria-label="Kennzahlen als Fortschritts-Ringe">
  <div class="zr-ring-head">
    <p class="zr-ring-eyebrow">Unsere Quoten</p>
    <h2 class="zr-ring-title">Gemessen – nicht behauptet.</h2>
  </div>
  <ul class="zr-ring-grid">
    <!-- Umfang r=45 → 2·π·45 ≈ 283. --off = 283·(1 − Wert/100), gerundet. -->
    <li class="zr-ring-item" style="--circ:283;--off:8" data-count="97" data-suffix="%">
      <div class="zr-ring-dial" aria-hidden="true">
        <svg viewBox="0 0 100 100"><circle class="zr-ring-track" cx="50" cy="50" r="45"/><circle class="zr-ring-bar" cx="50" cy="50" r="45"/></svg>
        <span class="zr-ring-val">0<i>%</i></span>
      </div>
      <span class="zr-ring-label">Termintreue</span>
    </li>
    <li class="zr-ring-item" style="--circ:283;--off:23" data-count="92" data-suffix="%">
      <div class="zr-ring-dial" aria-hidden="true">
        <svg viewBox="0 0 100 100"><circle class="zr-ring-track" cx="50" cy="50" r="45"/><circle class="zr-ring-bar" cx="50" cy="50" r="45"/></svg>
        <span class="zr-ring-val">0<i>%</i></span>
      </div>
      <span class="zr-ring-label">Weiterempfehlung</span>
    </li>
    <li class="zr-ring-item" style="--circ:283;--off:40" data-count="86" data-suffix="%">
      <div class="zr-ring-dial" aria-hidden="true">
        <svg viewBox="0 0 100 100"><circle class="zr-ring-track" cx="50" cy="50" r="45"/><circle class="zr-ring-bar" cx="50" cy="50" r="45"/></svg>
        <span class="zr-ring-val">0<i>%</i></span>
      </div>
      <span class="zr-ring-label">Stammkunden</span>
    </li>
    <li class="zr-ring-item" style="--circ:283;--off:65" data-count="77" data-suffix="%">
      <div class="zr-ring-dial" aria-hidden="true">
        <svg viewBox="0 0 100 100"><circle class="zr-ring-track" cx="50" cy="50" r="45"/><circle class="zr-ring-bar" cx="50" cy="50" r="45"/></svg>
        <span class="zr-ring-val">0<i>%</i></span>
      </div>
      <span class="zr-ring-label">Auslastung</span>
    </li>
  </ul>
</section>

<style>
.zr-ring{width:100%;background:radial-gradient(120% 130% at 85% 0%,#1b1b24 0%,#141319 55%,#101014 100%);
  border:1px solid #26262c;border-radius:20px;padding:2rem 1.5rem;color:#e9e9ee}
@media(min-width:720px){.zr-ring{padding:2.6rem 2.4rem}}
.zr-ring-head{margin:0 0 1.8rem}
.zr-ring-eyebrow{margin:0 0 .55rem;font-size:.74rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--akzent,#7c87ff)}
.zr-ring-title{margin:0;font-size:clamp(1.4rem,3.4vw,2rem);line-height:1.15;letter-spacing:-.02em;
  color:#f4f4f5;overflow-wrap:break-word}
.zr-ring-grid{list-style:none;margin:0;padding:0;display:grid;gap:1.4rem;grid-template-columns:1fr}
@media(min-width:520px){.zr-ring-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:900px){.zr-ring-grid{grid-template-columns:repeat(4,1fr)}}
.zr-ring-item{display:flex;flex-direction:column;align-items:center;gap:.9rem;
  padding:1.4rem 1rem;border-radius:16px;text-align:center;
  background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);
  transition:border-color .3s ease,transform .3s cubic-bezier(.2,.7,.2,1)}
.zr-ring-item:hover,.zr-ring-item:focus-within{transform:translateY(-4px);
  border-color:rgba(124,135,255,.4)}
.zr-ring-dial{position:relative;width:110px;height:110px}
.zr-ring-dial svg{width:100%;height:100%;transform:rotate(-90deg)}
.zr-ring-track{fill:none;stroke:#26262c;stroke-width:9}
.zr-ring-bar{fill:none;stroke:var(--akzent,#7c87ff);stroke-width:9;stroke-linecap:round;
  stroke-dasharray:var(--circ,283);stroke-dashoffset:var(--circ,283);
  transition:stroke-dashoffset 1.3s cubic-bezier(.34,1,.5,1)}
.zr-ring-item.is-on .zr-ring-bar{stroke-dashoffset:var(--off,0)}
.zr-ring-val{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:1.5rem;font-weight:800;letter-spacing:-.02em;color:#f4f4f5;font-variant-numeric:tabular-nums}
.zr-ring-val i{font-style:normal;color:var(--akzent,#7c87ff);font-size:.9rem;font-weight:700;margin-left:1px}
.zr-ring-label{font-size:.82rem;color:#a1a1aa;line-height:1.35;max-width:18ch}
@media (prefers-reduced-motion:reduce){
  .zr-ring-item{transition:none}
  .zr-ring-bar{transition:none}
}
</style>

<script>
(function(){
  var reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
  function run(item){
    item.classList.add("is-on"); // löst den Ring-Bogen aus (CSS-Transition)
    var val = item.querySelector(".zr-ring-val");
    var end = parseFloat(item.getAttribute("data-count")) || 0;
    var suffix = item.getAttribute("data-suffix") || "";
    if(!val) return;
    if(reduce){ val.innerHTML = Math.round(end) + "<i>" + suffix + "</i>"; return; }
    var dur = 1300, t0 = null;
    function step(ts){
      if(t0 === null) t0 = ts;
      var p = Math.min((ts - t0) / dur, 1);
      var eased = 1 - Math.pow(1 - p, 3); // easeOutCubic
      val.innerHTML = Math.round(end * eased) + "<i>" + suffix + "</i>";
      if(p < 1) requestAnimationFrame(step);
      else val.innerHTML = Math.round(end) + "<i>" + suffix + "</i>";
    }
    requestAnimationFrame(step);
  }
  var items = document.querySelectorAll(".zr-ring-item[data-count]");
  if(!("IntersectionObserver" in window)){ items.forEach(run); return; }
  var io = new IntersectionObserver(function(entries){
    entries.forEach(function(e){
      if(e.isIntersecting){ run(e.target); io.unobserve(e.target); }
    });
  }, { threshold: 0.4 });
  items.forEach(function(i){ io.observe(i); });
})();
</script>

Zahlen — Kennzahlen auf Akzent-Band

Pol 2 · Klarheit Anlass: CTA-nahes Erfolgs-Band, Sektions-Trenner

Ein durchgehend akzentfarbenes Band mit invertierten Zahlen — setzt einen starken Farbakzent zwischen zwei dunklen Sektionen, ohne Effekt-Lärm. Weiße Trenner statt grauer, Ziffern in Weiß, Zusätze und Labels leicht transparent. Statisch, sofort scanbar. Mobil stapeln die Werte, die Trenner verschwinden automatisch.

Auf einen Blick

Was uns ausmacht — in vier Zahlen.

  • 24/7 Erreichbarkeit
  • 3.400+ Aufträge
  • 12 Std. Reaktionszeit
  • 100% Festpreis-Garantie
<section class="zb-band" aria-label="Zahlen und Erfolge">
  <div class="zb-band-head">
    <p class="zb-band-eyebrow">Auf einen Blick</p>
    <h2 class="zb-band-title">Was uns ausmacht – in vier Zahlen.</h2>
  </div>
  <ul class="zb-band-grid cols2 cols4">
    <li class="zb-band-item">
      <span class="zb-band-num">24<i>/7</i></span>
      <span class="zb-band-label">Erreichbarkeit</span>
    </li>
    <li class="zb-band-item">
      <span class="zb-band-num">3.400<i>+</i></span>
      <span class="zb-band-label">Aufträge</span>
    </li>
    <li class="zb-band-item">
      <span class="zb-band-num">12<i> Std.</i></span>
      <span class="zb-band-label">Reaktionszeit</span>
    </li>
    <li class="zb-band-item">
      <span class="zb-band-num">100<i>%</i></span>
      <span class="zb-band-label">Festpreis-Garantie</span>
    </li>
  </ul>
</section>

<style>
.zb-band{position:relative;width:100%;overflow:hidden;isolation:isolate;
  background:var(--akzent,#7c87ff);border-radius:20px;padding:2rem 1.5rem;color:#fff}
@media(min-width:720px){.zb-band{padding:2.8rem 2.6rem}}
.zb-band::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(115deg,rgba(255,255,255,.14),transparent 45%)}
.zb-band-head{margin:0 0 1.8rem}
.zb-band-eyebrow{margin:0 0 .5rem;font-size:.74rem;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(255,255,255,.8)}
.zb-band-title{margin:0;font-size:clamp(1.4rem,3.4vw,2rem);line-height:1.15;letter-spacing:-.02em;
  color:#fff;overflow-wrap:break-word}
.zb-band-grid{list-style:none;margin:0;padding:0;display:grid;gap:1.4rem 0;grid-template-columns:1fr}
@media(min-width:560px){.zb-band-grid{grid-template-columns:repeat(2,1fr);gap:1.8rem 0}}
@media(min-width:880px){.zb-band-grid{grid-template-columns:repeat(4,1fr)}}
.zb-band-item{position:relative;padding:.2rem 1.6rem;text-align:left}
@media(min-width:560px){
  .zb-band-item{padding-left:1.8rem}
  .zb-band-item::before{content:"";position:absolute;left:0;top:.1rem;bottom:.1rem;width:1px;
    background:linear-gradient(180deg,transparent,rgba(255,255,255,.35) 20%,rgba(255,255,255,.35) 80%,transparent)}
  .zb-band-grid.cols2 .zb-band-item:nth-child(2n+1)::before{display:none}
}
@media(min-width:880px){
  .zb-band-grid.cols4 .zb-band-item:nth-child(4n+1)::before{display:none}
  .zb-band-grid.cols4 .zb-band-item:nth-child(2n+1)::before{display:block}
}
.zb-band-num{display:block;font-size:clamp(2.1rem,5.4vw,2.9rem);font-weight:800;line-height:1;
  letter-spacing:-.02em;color:#fff}
.zb-band-num i{font-style:normal;color:rgba(255,255,255,.72)}
.zb-band-label{display:block;margin-top:.5rem;font-size:.82rem;color:rgba(255,255,255,.82);
  font-weight:500;max-width:20ch}
</style>