<div class="content-width">
  <div class="slideshow">
    <!-- Slideshow Items -->
    <div class="slideshow-items">
      <div class="item">
        <div class="item-image-container">
          <img class="item-image" src="https://i.pinimg.com/564x/23/a4/86/23a4860b8b70b1eb27f2791b97aaee8e.jpg" />
        </div>
        <!-- Staggered Header Elements -->
        <div class="item-header">
          <span class="vertical-part"><b>N</b></span>
          <span class="vertical-part"><b>i</b></span>
          <span class="vertical-part"><b>k</b></span>
          <span class="vertical-part"><b>e</b></span>
        </div>
        <!-- Staggered Description Elements -->
        <div class="item-description">
          <span class="vertical-part">
            <b>Nike</b>
          </span>
          <span class="vertical-part">
            <b>ipsum</b>
          </span> 
          <span class="vertical-part">
            <b>dolor</b>
          </span>
          <span class="vertical-part">
            <b>sit</b>
          </span> 
          <span class="vertical-part">
            <b>amet,</b>
          </span>
          <span class="vertical-part">
            <b>consectetur</b>
          </span> 
          <span class="vertical-part">
            <b>adipiscing</b>
          </span>
          <span class="vertical-part">
            <b>elit.</b>
          </span> 
          <span class="vertical-part">
            <b>Pellentesque</b>
          </span>
          <span class="vertical-part">
            <b>elementum</b>
          </span> 
          <span class="vertical-part">
            <b>gravida</b>
          </span>
          <span class="vertical-part">
            <b>ex</b>
          </span> 
          <span class="vertical-part">
            <b>at</b>
          </span>
          <span class="vertical-part">
            <b>maximus.</b>
          </span> 
          <span class="vertical-part">
            <b>Nullam</b>
          </span>
          <span class="vertical-part">
            <b>quis</b>
          </span> 
          <span class="vertical-part">
            <b>leo</b>
          </span>
          <span class="vertical-part">
            <b>ipsum.</b>
          </span> 
          <span class="vertical-part">
            <b>Lorem</b>
          </span>
          <span class="vertical-part">
            <b>ipsum</b>
          </span> 
          <span class="vertical-part">
            <b>Nam</b>
          </span> 
          <span class="vertical-part">
            <b>consectetur</b>
          </span>
          <span class="vertical-part">
            <b>malesuada</b>
          </span> 
          <span class="vertical-part">
            <b>blandit.</b>
          </span>
          <span class="vertical-part">
            <b>Mauris</b>
          </span> 
          <span class="vertical-part">
            <b>vulputate</b>
          </span>
          <span class="vertical-part">
            <b>purus</b>
          </span> 
          <span class="vertical-part">
            <b>id</b>
          </span>
          <span class="vertical-part">
            <b>dolor</b>
          </span> 
          <span class="vertical-part">
            <b>euismod</b>
          </span>
          <span class="vertical-part">
            <b>varius.</b>
          </span>      
        </div>
      </div>
      <div class="item">
        <div class="item-image-container">
          <img class="item-image" src="https://mir-s3-cdn-cf.behance.net/project_modules/max_1200/a1232e48702241.589f548dc6bee.jpg" />
        </div>
        <!-- Staggered Header Elements -->
        <div class="item-header">
          <span class="vertical-part"><b>S</b></span>
          <span class="vertical-part"><b>p</b></span>
          <span class="vertical-part"><b>o</b></span>
          <span class="vertical-part"><b>t</b></span>
          <span class="vertical-part"><b>i</b></span>
          <span class="vertical-part"><b>f</b></span>
          <span class="vertical-part"><b>y</b></span>
        </div>
        <!-- Staggered Description Elements -->
        <div class="item-description">
          <span class="vertical-part">
            <b>Spotify</b>
          </span>
          <span class="vertical-part">
            <b>ipsum</b>
          </span>
          <span class="vertical-part">
            <b>dolor</b>
          </span>
          <span class="vertical-part">
            <b>sit</b>
          </span>
          <span class="vertical-part">
            <b>amet,</b>
          </span>
          <span class="vertical-part">
            <b>consectetur</b>
          </span>
          <span class="vertical-part">
            <b>adipiscing</b>
          </span>
          <span class="vertical-part">
            <b>elit.</b>
          </span>
          <span class="vertical-part">
            <b>Pellentesque</b>
          </span>
          <span class="vertical-part">
            <b>elementum</b>
          </span>
          <span class="vertical-part">
            <b>gravida</b>
          </span>
          <span class="vertical-part">
            <b>ex</b>
          </span>
          <span class="vertical-part">
            <b>at</b>
          </span>
          <span class="vertical-part">
            <b>maximus.</b>
          </span>
          <span class="vertical-part">
            <b>Nullam</b>
          </span>
          <span class="vertical-part">
            <b>quis</b>
          </span>
          <span class="vertical-part">
            <b>leo</b>
          </span>
          <span class="vertical-part">
            <b>ipsum.</b>
          </span>
          <span class="vertical-part">
            <b>Lorem</b>
          </span>
          <span class="vertical-part">
            <b>ipsum</b>
          </span>
          <span class="vertical-part">
            <b>Nam</b>
          </span>
          <span class="vertical-part">
            <b>consectetur</b>
          </span>
          <span class="vertical-part">
            <b>malesuada</b>
          </span>
          <span class="vertical-part">
            <b>blandit.</b>
          </span>
          <span class="vertical-part">
            <b>Mauris</b>
          </span>
          <span class="vertical-part">
            <b>vulputate</b>
          </span>
          <span class="vertical-part">
            <b>purus</b>
          </span>
          <span class="vertical-part">
            <b>id</b>
          </span>
          <span class="vertical-part">
            <b>dolor</b>
          </span>
          <span class="vertical-part">
            <b>euismod</b>
          </span>
          <span class="vertical-part">
            <b>varius.</b>
          </span>
        </div>
      </div>
      <div class="item">
        <div class="item-image-container">
          <img class="item-image" src="https://i2.wp.com/www.futuristarchitecture.com/wp-content/uploads/2016/11/fantastic-small-living-room-interior-idea-7.jpg?w=700&ssl=1" />
        </div>
        <!-- Staggered Header Elements -->
        <div class="item-header">
          <span class="vertical-part"><b>A</b></span>
          <span class="vertical-part"><b>i</b></span>
          <span class="vertical-part"><b>r</b></span>
          <span class="vertical-part"><b>b</b></span>
          <span class="vertical-part"><b>n</b></span>
          <span class="vertical-part"><b>b</b></span>
        </div>
        <!-- Staggered Description Elements -->
        <div class="item-description">
          <span class="vertical-part">
            <b>Airbnb</b>
          </span>
          <span class="vertical-part">
            <b>ipsum</b>
          </span>
          <span class="vertical-part">
            <b>dolor</b>
          </span>
          <span class="vertical-part">
            <b>sit</b>
          </span>
          <span class="vertical-part">
            <b>amet,</b>
          </span>
          <span class="vertical-part">
            <b>consectetur</b>
          </span>
          <span class="vertical-part">
            <b>adipiscing</b>
          </span>
          <span class="vertical-part">
            <b>elit.</b>
          </span>
          <span class="vertical-part">
            <b>Pellentesque</b>
          </span>
          <span class="vertical-part">
            <b>elementum</b>
          </span>
          <span class="vertical-part">
            <b>gravida</b>
          </span>
          <span class="vertical-part">
            <b>ex</b>
          </span>
          <span class="vertical-part">
            <b>at</b>
          </span>
          <span class="vertical-part">
            <b>maximus.</b>
          </span>
          <span class="vertical-part">
            <b>Nullam</b>
          </span>
          <span class="vertical-part">
            <b>quis</b>
          </span>
          <span class="vertical-part">
            <b>leo</b>
          </span>
          <span class="vertical-part">
            <b>ipsum.</b>
          </span>
          <span class="vertical-part">
            <b>Lorem</b>
          </span>
          <span class="vertical-part">
            <b>ipsum</b>
          </span>
          <span class="vertical-part">
            <b>Nam</b>
          </span>
          <span class="vertical-part">
            <b>consectetur</b>
          </span>
          <span class="vertical-part">
            <b>malesuada</b>
          </span>
          <span class="vertical-part">
            <b>blandit.</b>
          </span>
          <span class="vertical-part">
            <b>Mauris</b>
          </span>
          <span class="vertical-part">
            <b>vulputate</b>
          </span>
          <span class="vertical-part">
            <b>purus</b>
          </span>
          <span class="vertical-part">
            <b>id</b>
          </span>
          <span class="vertical-part">
            <b>dolor</b>
          </span>
          <span class="vertical-part">
            <b>euismod</b>
          </span>
          <span class="vertical-part">
            <b>varius.</b>
          </span>
        </div>
      </div>
    </div>
    <div class="controls">
      <ul>
        <li class="control" data-index="0"></li>
        <li class="control" data-index="1"></li>
        <li class="control" data-index="2"></li>
      </ul>
    </div>
  </div>
</div>
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html, body {
  width: 100%;
  height: 100vh;
  overflow: hidden; 
  background: #22222A;
  font-family: 'Fira Mono', monospace;
  -webkit-font-smoothing: antialiased;
  font-size: .88rem;
  color: #bdbdd5;
}

.content-width {
  width: 86%;
  height: 100vh;
  margin: 0 auto;
}

.slideshow {
  position: relative;
  width: 100%;
  height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: space-around;
}

.slideshow-items {
  position: relative;
  width: 100%;
  height: 300px;
}

.item {
  position: absolute;
  width: 100%;
  height: auto;
}

.item-image-container {
  position: relative;
  width: 42%;
}

.item-image-container::before {
  content: '';
  position: absolute;
  top: -1px;
  left: 0;
  width: 101%;
  height: 101%;
  background: #22222A;
  opacity: 0;
  z-index: 1;
}

.item-image {
  position: relative;
  width: 100%;
  height: auto;
  opacity: 0;
  display: block;
  /* transition: property name | duration | timing-function | delay  */
  transition: opacity .3s ease-out .45s;
}

.item.active .item-image {
  opacity: 1;
}

.item.active .item-image-container::before {
  opacity: .8;
}

.item-description {
  position: absolute;
  top: 182px;
  right: 0;
  width: 50%;
  padding-right: 4%;
  line-height: 1.8;
}

/* Staggered Vertical Items ------------------------------------------------------*/
.item-header {
  position: absolute;
  top: 150px;
  left: -1.8%;
  z-index: 100;
}

.item-header .vertical-part {
  margin: 0 -4px;
  font-family: 'Montserrat', sans-serif;
  -webkit-font-smoothing: auto;
  font-size: 7vw;
  color: #fff;
}

.vertical-part {
  overflow: hidden;
  display: inline-block;
}

.vertical-part b {
  display: inline-block;
  transform: translateY(100%);
}

.item-header .vertical-part b {
  transition: .5s;
}

.item-description .vertical-part b {
  transition: .21s;
}

.item.active .item-header .vertical-part b {
  transform: translateY(0);
}

.item.active .item-description .vertical-part b {
  transform: translateY(0);
}

/* Controls ----------------------------------------------------------------------*/
.controls {
  position: relative;
  text-align: right;
  z-index: 1000;
}

.controls ul {
  list-style: none;
}

.controls ul li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 3px;
  background:#bdbdd5;;
  cursor: pointer;
}

.controls ul li.active {
  background:#6a6a77;;
}
// Master DOManipulator v2 ------------------------------------------------------------
const items = document.querySelectorAll('.item'),
  controls = document.querySelectorAll('.control'),
  headerItems = document.querySelectorAll('.item-header'),
  descriptionItems = document.querySelectorAll('.item-description'),
  activeDelay = .76,
  interval = 5000;

let current = 0;

const slider = {
  init: () => {
    controls.forEach(control => control.addEventListener('click', (e) => { slider.clickedControl(e) }));
    controls[current].classList.add('active');
    items[current].classList.add('active');
  },
  nextSlide: () => { // Increment current slide and add active class
    slider.reset();
    if (current === items.length - 1) current = -1; // Check if current slide is last in array
    current++;
    controls[current].classList.add('active');
    items[current].classList.add('active');
    slider.transitionDelay(headerItems);
    slider.transitionDelay(descriptionItems);
  },
  clickedControl: (e) => { // Add active class to clicked control and corresponding slide
    slider.reset();
    clearInterval(intervalF);

    const control = e.target,
      dataIndex = Number(control.dataset.index);

    control.classList.add('active');
    items.forEach((item, index) => { 
      if (index === dataIndex) { // Add active class to corresponding slide
        item.classList.add('active');
      }
    })
    current = dataIndex; // Update current slide
    slider.transitionDelay(headerItems);
    slider.transitionDelay(descriptionItems);
    intervalF = setInterval(slider.nextSlide, interval); // Fire that bad boi back up
  },
  reset: () => { // Remove active classes
    items.forEach(item => item.classList.remove('active'));
    controls.forEach(control => control.classList.remove('active'));
  },
  transitionDelay: (items) => { // Set incrementing css transition-delay for .item-header & .item-description, .vertical-part, b elements
    let seconds;
    
    items.forEach(item => {
      const children = item.childNodes; // .vertical-part(s)
      let count = 1,
        delay;
      
      item.classList.value === 'item-header' ? seconds = .015 : seconds = .007;

      children.forEach(child => { // iterate through .vertical-part(s) and style b element
        if (child.classList) {
          item.parentNode.classList.contains('active') ? delay = count * seconds + activeDelay : delay = count * seconds;
          child.firstElementChild.style.transitionDelay = `${delay}s`; // b element
          count++;
        }
      })
    })
  },
}

let intervalF = setInterval(slider.nextSlide, interval);
slider.init();
View Compiled

External CSS

  1. https://fonts.googleapis.com/css?family=Fira+Mono|Montserrat:800

External JavaScript

This Pen doesn't use any external JavaScript resources.