Um problema comum nas páginas HTML é existir uma lista enorme de campos checkbox e a pessoa querer separá-las em várias colunas, de acordo com a largura da tela, evitando assim ter que ficar rolando a página.
Usar apenas um float a esquerda nos elementos com largura fixa não é a melhor solução, pois a ordem alfabética fica confusa, deixando de ser de cima para baixo, como um dicionário, e passa a ser da esquerda para a direita.
Criei então em javascript uma solução para este problema:
HTML:
CSS:
Usar apenas um float a esquerda nos elementos com largura fixa não é a melhor solução, pois a ordem alfabética fica confusa, deixando de ser de cima para baixo, como um dicionário, e passa a ser da esquerda para a direita.
Criei então em javascript uma solução para este problema:
HTML:
<div> <div class="checkbox"> <label><input type="checkbox" name="" id="">A</label> </div> <div class="checkbox"> <label><input type="checkbox" name="" id="">B</label> </div> <div class="checkbox"> <label><input type="checkbox" name="" id="">C</label> </div> <div class="checkbox"> <label><input type="checkbox" name="" id="">D</label> </div> </div>
CSS:
.separador { float: left; width: 250px; padding-left: 5px; box-sizing: border-box; }
JAVASCRIPT
function separarEmColunas(selector_elemento, largura_coluna = 250) { let el_pai = document.querySelector(selector_elemento).parentElement; let width_grupo = el_pai.offsetWidth; let qt_coluna = Math.trunc(width_grupo / largura_coluna); let qt_elemento = document.querySelectorAll(selector_elemento).length; let qt_elemento_coluna = Math.trunc(qt_elemento / qt_coluna); let resto = qt_elemento % qt_coluna; let txt_option = ''; let el_pegar = 0; let lista_ck = document.querySelectorAll(selector_elemento); for (let i = 0; i < qt_coluna; i++) { txt_option += `<div class="sig_separador">`; let qt_esta_coluna = qt_elemento_coluna; if (resto > 0) { qt_esta_coluna++; resto--; } for (let ii = 0; ii < qt_esta_coluna; ii++) { txt_option += lista_ck[ii + el_pegar].outerHTML; } el_pegar += qt_esta_coluna; txt_option += '</div>'; } el_pai.innerHTML = txt_option; }
separarEmColunas(".checkbox");
Comentários
Postar um comentário