JSFiddle - React, Tailwind, and code Playground

by Abdul Ahmad

HTML

<div class='page-section'>
  <div class='page-width'>
    <div class='page-section--empty-space'>

    </div>
    <h1 class='section-title'>
      Panel Section
    </h1>
    <div class='panels'>
      <div class='panel left'>

      </div>
      <div class='panel right'>

      </div>
    </div>
    <div class='page-section--empty-space'>

    </div>
  </div>
</div>
<div class='page-section'>
  <div class='page-width'>
    <div class='page-section--empty-space'>

    </div>
    <h1 class='section-title'>
      Carousel + buttons fit inside width
    </h1>
    <div class='carousel'>
      <div class='button'>

      </div>
      <div class='panel content'>

      </div>
      <div class='button'>

      </div>
    </div>
    <div class='page-section--empty-space'>

    </div>
  </div>
</div>
<div class='page-section'>
  <div class='page-width'>
    <div class='page-section--empty-space'>

    </div>
    <h1 class='section-title'>
      Carousel content fit inside width - buttons outside
    </h1>
    <div class='carousel-v-2'>
      <div class='button left'>

      </div>
      <div class='panel content'>

      </div>
      <div class='button right'>

      </div>
    </div>
    <div class='page-section--empty-space'>

    </div>
  </div>
</div>
<div class='page-section'>
  <div class='page-width'>
    <div class='page-section--empty-space'>

    </div>
    <div class='page-section--empty-space'>

    </div>
    <h1 class='section-title'>
      Meet the team
    </h1>
  </div>
  <div class='horizontal-scroll'>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
    <div class='card'>

    </div>
   ...

SCSS

body {
  font-family: Helvetica;
  margin: 0;
}

.page-section {
  box-sizing: border-box;
}

.page-section--empty-space {
  height: 100px;
}

.page-width {
  max-width: 1200px;
  margin: 0 auto;
  border-right: 1px dashed #ddd;
  border-left: 1px dashed #ddd;
  height: 100%;
  
  &.carousel-container {
    max-width: calc(1200px + 40px + 120px);
  }
}

.section-title {
  margin: 0;
  margin-bottom: 40px;
}

.panels {
  display: flex;
 
}

.panel {
  border-radius: 10px;
  border: 1px solid #ddd;
  height: 300px;
}

.left {
  width: 300px;
  margin-right: 20px;
}

.right {
  flex-grow: 1;
  flex-shrink: 1;
}

.carousel {
  display: flex;
  align-items: center;
  
  .button {
    width: 40px;
    height: 40px;
    border-radius: 100%;
    border: 1px solid #ddd;
  }
  
  .content {
    flex-grow: 1;
    height: 300px;
    margin-right: 20px;
    margin-left: 20px;
  }
}

  .carousel-v-2 {
    display: block;
    position: relative;
    
    .content {
      margin: 0;
    }
    
    .button {  
      width: 40px;
      height: 40px;
      border-radius: 100%;
      border: 1px solid #ddd;
      position: absolute;
      top: calc(50% - 20px);
      
      &.right {
        left: -40px;
        margin-left: -20px;
      }
      
      &.left {
        right: -40px;
        margin-right: -20px;
      }
    }
  }

.horizontal-scroll {
  overflow-x: auto;
  white-space: nowrap;
  border: 1px dashed #ddd;
  width: 100%;
}

.card {
  display: inline-block;
  vertical-align: middle;
  width: 200px;
  height: 200px;
  border-radius: 10px;
  margin-left: 30px;
  border: 1px solid #ddd;
  
  &:last-child {
    margin-right: 30px;
  }
}