Horizontal Scroll Container (hidden scrollbar)

by psycketom

HTML

<div class="document">
  <div class="tab-container">
    <div class="horizontal-overflow-mask">
      <div class="tab-entries">
        <a class="tab-entry is-active">Craftsmen</a>
        <a class="tab-entry">Creative</a>
        <a class="tab-entry">Learning</a>
        <a class="tab-entry">Agile</a>
        <a class="tab-entry">Caring</a>
      </div>
    </div>
  </div>

  <div class="content">
    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Eos quas deserunt atque neque praesentium. Iste enim quas, magnam vero. Aspernatur doloribus cum suscipit, commodi molestias tempore unde numquam quo iusto.
    </p>

    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Soluta, deleniti.
    </p>
  </div>
</div>

SCSS

*, *:before, *:after {
  box-sizing: border-box;
}

body {
  margin: 0;
}

p {
  margin: 0;
}

.document {
  max-width: 240px;
  margin: 20px;
}

.tab-container {
  line-height: 1 !important; // reset line height
  height: calc(1em + 20px + 2px); // font-size + #1 (padding) + #2 (border)
  overflow: hidden;
  margin-bottom: 10px;
}

.horizontal-overflow-mask {
  height: 100%;
  box-sizing: content-box;
  padding-bottom: 30px;
  overflow-x: scroll;
  overflow-y: hidden;
}

.tab-entries {
  display: inline-flex;
  align-items: flex-start;
  
  padding-left: 10px;
  padding-right: 10px;
}

.tab-entry {
  display: block;
  
  padding-top: 10px; // #1
  padding-bottom: 10px; // #1
  
  border-bottom: solid 2px transparent; // #2
  // border-left: solid 1px green;
  // border-right: solid 1px green;
  
  &.is-active {
    border-bottom-color: red;
  }
  
  + .tab-entry {
    margin-left: 20px;
  }
}

.content {
  padding: 20px;
  border: solid 1px black;
  
  p {
    + p {
      margin-top: 1.4em;
    }
  }
}