Fummel Chart

by Jens Kühn

HTML

<div class="grid">
  <main>
    <article>
      <header>
        <h1>
          Totale Erreichung in %
        </h1>
      </header>
      <section class="w1">
        <header>
          <h1>Awareness</h1>
        </header>
        <aside>
          <h3>552,-€</h3>
          <span>80%</span>
          <div style="width: 20%"></div>
        </aside>
        <footer>
          <dl style="flex-basis: 9.375%" class="_other p30">
            <dt>...</dt>
            <dd>30%</dd>
          </dl>
          <dl style="flex-basis: 37.5%" class="social p100">
            <dt>Social</dt>
            <dd>120%</dd>
          </dl>
          <dl style="flex-basis: 25%" class="display p80">
            <dt>Display AI</dt>
            <dd>80%</dd>
          </dl>
          <dl style="flex-basis: 28%" class="tv p90">
            <dt>TT GRP</dt>
            <dd>90%</dd>
          </dl>
        </footer>
      </section>

      <section class="w2">
        <header>
          <h1>Performance</h1>
        </header>
        <aside>
          <h3>240,-€</h3>
          <span>90%</span>
          <div style="width: 10%"></div>
        </aside>
        <footer>
          <dl style="flex-basis: 40%" class="social p80">
            <dt>Social</dt>
            <dd>80%</dd>
          </dl>
          <dl style="flex-basis: 40%" class="display p70">
            <dt>Display V.a.</dt>
            <dd>70%</dd>
          </dl>
          <dl style="flex-basis: 40%" class="tv p90">
            <dt>TV NRW</dt>
            <dd>90%</dd>
          </dl>
        </footer>
      </section>

      <section class="w3">
        <header>
          <h1>Traffic</h1>
        </header>
        <aside>
          <h3>70,-€</h3>
          <span>60%</span>
          <div style="width: 40%"></div>
        </aside>
        <footer>
          <dl style="flex-basis: 50%" class="social p100">
            <dt>Social</dt>
            <dd>100%</dd>
          </dl>
          <dl style="flex-basis: 10%" class="_other p20">
    ...

SCSS

.grid {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto;
  grid-gap: 10px;
  counter-reset: section;
}

article {
  font-family: Arial;
  display: flex;
  width: 1400px;
  flex-direction: column;
  width: calc(100% - 100px);
  padding: 50px;
  color: #fff;
  border: 1px solid #dedede;
  position: relative;
  
  &::before {
    counter-increment: section;
    content: counter(section, upper-alpha);
    position: absolute;
    color: #000;
    top: 0;
    left: 0;
    background-color: #dedede;
    padding: .2em;
  }
  
  
  & > header {
    display: flex;
    height: 30px;
    color: #5b5a58;

    h1 {
      position: relative;
      display: flex;
      justify-content: center;
      align-items: center;
      background-color: #d1d2d6;
      text-transform: uppercase;
      font-size: 0.8rem;
      margin: 0 0 0 190px;
      flex: 0 0 360px;
      text-align: center;

      &::before,
      &::after {
        content: '';
        position: absolute;
        width: 50px;
        height: 100%;
        background-color: #d1d2d6;
      }

      &::before {
        transform: skew(30deg);
        left: -25px;
      }
      &::after {
        height: 100%;
        transform: skew(-30deg);
        right: -25px;
      }
    }  
  }
  
  & > footer {
    height: 0;
    width: 0;
    margin: 0 0 0 311px;
    border-left: 57px solid transparent;
    border-right: 57px solid transparent;
    border-top: 85px solid #d1d2d6;
  }
}
section {
  display: flex;
  flex-direction: row;
  align-items: center;
  &.w1 {
    width: 100%;
    margin: 1px 10px;
    
    aside {
      flex: 0 0 245px;
    }
  }
  &.w2 {
    margin: 1px 55px;
    width: calc(90% - 25px);
    aside {
      flex: 0 0 150px;
    }
  }
  &.w3 {
    margin: 1px 100px;
    width: calc(80% - 25px);
    aside {
        flex: 0 0 60px;
      }
  }
  
  
  header {
    height: 70px;
    padding: 0 2rem;
    transform: skew(30deg);
  
    h1 {
      text-align: center;
      transform:...