expand

by cruperman

HTML

<div class="parent">
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Error cumque ducimus magni odio assumenda magnam enim natus labore aperiam quibusdam ea velit fuga, incidunt dicta sint rem dolorem. Fuga, voluptatem.</p>
  <div class="wrapper">
    <div class="button open">open</div>
    <div class="tag">lorem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lofraem</div>
    <div class="tag">lorem</div>
    <div class="tag">loredm</div>
    <div class="tag">lorem</div>
    <div class="tag">loredm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorfem</div>
    <div class="tag">loredddm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorem</div>
    <div class="tag">loredm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorfem</div>
    <div class="tag">loredddm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorem</div>
    <div class="tag">loredm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorfem</div>
    <div class="tag">loredddm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorem</div>
    <div class="tag">loredm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorfem</div>
    <div class="tag">loredddm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorddem</div>
    <div class="tag">lorfem</div>
    <div class="tag">loredddm</div>
    <div class="tag">lorfem</div>
    <div class="tag">lorfem</div>
    <div class="tag">loreddm</div>
    <div class="button close">close</div>
  </div>
  <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit....

SCSS

* {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  padding: 0;
}

.parent {
  padding: 30px;
  
  p {
    margin: 12px 0;
  }
}

.wrapper {
  overflow: hidden;
  height: 30px;
  
  .button.open {
    display: inline-block;
  }
  .button.close {
    display: none;
  }
  
  &.open {
    height: auto;
    overflow: auto;
    
    .button.open {
      display: none;
    }
    .button.close {
      display: inline-block;
    }
  }
}

.tag {
  display: inline-block;
  margin: 4px 10px 5px 0;
  padding: 3px 8px;
  border-radius: 3px;
  background: gray;
  float: left;
}

.button {
  display: inline-block;
  margin: 4px 10px 5px 0;
  padding: 3px 8px;
  border-radius: 3px;
  background: purple;
  
  &.close {
    float: left;
  }
}

JavaScript

var open = document.querySelector('.button.open'),
		close = document.querySelector('.button.close'),
		wrapper = document.querySelector('.wrapper');

open.addEventListener('click', function () {
	wrapper.classList.add('open');
});

close.addEventListener('click', function () {
	wrapper.classList.remove('open');
});