Pra mim sem dúvidas essa é a melhor maneira de centralizar uma div
<body>
<div class="content" style="width: 200px; height: 200px; background: red;">
<!-- Conteúdo da div -->
</div>
<script>
function responsiveDiv() {
const container = document.querySelector('body');
const content = document.querySelector('.content');
const maxWidth = 200;
const windowWidth = window.innerWidth;
const margin = (windowWidth - maxWidth) / 2;
container.style.marginLeft = margin + 'px';
container.style.marginRight = margin + 'px';
}
window.addEventListener('resize', responsiveDiv);
responsiveDiv();
</script>
</body>
Só uns comentários sobre o código:
O body
de um document
pode ser acessado diretamente por document.body
. Não há a necessidade de usar document.querySelector('body')
. O atalho existe porque um document
deve possuir apenas um body
(conforme especificação).
Claro que tecnicamente é possível criar um HTML com dois ou mais
body
's, mas é sabido que os browsers costumam ser bem lenientes e "aceitar" HTML inválido. Só não espere que o JS se comporte corretamente em todos os casos.
Outro detalhe é que a variável content
não é usada em nenhum lugar.
E por fim, se mudarmos a largura da div
, isso já não funciona mais, veja. Neste caso, os outros métodos citados no post funcionam melhor.
Isso que eu chamo de dificultar as coisas! hsuahsuauhs