Olá pessoal, será que vocês podem me ajudar? Eu criei um filtro pelo javascript para selecionar os imóveis de uma imobiliária, o filtro funcionou legal, porém quando adiciono a classe "none" para desaparecer os imóveis que não fazem parte daquele filtro, as divs geram espaços vazios entre os imóveis cadastrados.
Eu gostaria que os produtos se reorganizassem na tela, tirando os espaços vazios, dos produtos que foram escondidos com CSS - display: none;
Este é o HTML
<div class="col-8 text-end">
<div id="filtros"><!-- Filtro por Tipo -->
<button class="btn btn-light ms-2 px-4 fl-todos" onclick="filtroImoveis('fl-todos')">Ver Todos</button>
<button class="btn btn-light ms-2 px-4 fl-terreno" onclick="filtroImoveis('fl-terreno')">Terrenos</button>
<button class="btn btn-light ms-2 px-4 fl-apartamento" onclick="filtroImoveis('fl-apartamento')">Apartamentos</button>
<button class="btn btn-light ms-2 px-4 fl-casa" onclick="filtroImoveis('fl-casa')">Casas</button>
<button class="btn btn-light ms-2 px-4 fl-sitio" onclick="filtroImoveis('fl-sitio')">Sítios</button>
<button class="btn btn-light ms-2 px-4 fl-loteamento" onclick="filtroImoveis('fl-loteamento')">Loteamentos</button>
</div>
</div>
E este é o JS:
// Esconder os imóveis
let imoveis = document.querySelectorAll(".thumb-imovel");
imoveis.forEach(i => {
i.classList.add("none");
});
// Parametro passado pelo botão
function filtroImoveis(value){
let botaoFiltro = document.querySelectorAll("#filtros button");
botaoFiltro.forEach((botao) => {
// checar se o botão clicado contém a classe enviada
if(botao.classList.contains(value) == true) {
botao.classList.add("current");
} else {
botao.classList.remove("current");
}
});
let imoveis = document.querySelectorAll(".thumb-imovel");
imoveis.forEach((item) => {
if(value == "fl-todos"){
item.classList.remove("none");
console.log(item);
} else {
if(item.classList.contains(value)){
item.classList.remove("none");
} else {
item.classList.add("none");
}
}
});
}
// Mostrar todos
window.onload = () => {
filtroImoveis("fl-todos");
}
E o css assim:
#filtros button.current {
background-color: #468C77;
color: #EEE;
transition: 800ms;
}
.none {
display: none;
transition: 800ms;
}