<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)
}
})
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.