<select onchange='chooseFilter(this.value)'>
  <option value=''>All Cards</option>
  <option value='fire'>Fire</option>
  <option value='ice'>Ice</option>
  <option value='wind'>Wind</option>
  <option value='rock'>Rock</option>
</select>

<div id='cardBlock'>
  <div class='card red' data-type='fire'></div>
  <div class='card blue' data-type='ice'></div>
  <div class='card gray' data-type='wind'></div>
  <div class='card green' data-type='rock'></div>
</div>
#cardBlock {
  display: flex;
  align-items: center;
  justify-content: center;
}

.card {
  background: #000;
  width: 55px;
  height: 55px;
  margin: 10px;
  transition: 0.2s 0s all ease-in-out;
}

.card.red { background-color: red; }
.card.blue { background-color: blue; }
.card.gray { background-color: gray; }
.card.green { background-color: green; }

.filtered {
  visibility: hidden;
  opacity: 0;
}

.absolute {
  position: absolute;
}
function chooseFilter(value) {
  let cards = document.querySelectorAll('#cardBlock .card')
  cards.forEach(card => {
    card.classList.add('filtered')
    setTimeout(function() {
      card.classList.add('absolute')
    }, 300)
  })
  cards.forEach(card => {
    if (!card.getAttribute('data-type').includes(value)) {
      card.classList.add('filtered')
      setTimeout(function() {
        card.classList.add('absolute')
      }, 300)
    } else {
      setTimeout(function() {
        card.classList.remove('filtered')
        card.classList.remove('absolute')
      }, 300)
    }
  })
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.