Como fazer um elemento ter o tamanho do elemento filho que tenha position : absolute?

Em projetos de desenvolvimento web, é comum precisarmos posicionar um elemento filho dentro de um container usando position: absolute. O problema é que, quando fazemos isso, o container perde a sua altura e largura, pois os elementos filhos posicionados absolutamente são retirados do fluxo do documento. Isso pode ser um problema quando queremos que o container tenha o tamanho do elemento filho.

Felizmente, há uma solução simples para este problema, que envolve o uso de JavaScript para definir o tamanho do container com base no tamanho do elemento filho. Neste artigo, vou mostrar como fazer um container ter o tamanho do elemento filho quando este filho tem position: absolute usando JavaScript.

Usando JavaScript para definir o tamanho do container

A maneira de fazer um container ter o tamanho do elemento filho quando este filho tem position: absolute usando JavaScript envolve calcular a largura e altura do elemento filho e definir essas dimensões para o container. Veja o código abaixo:

<div class="container" id="container">
  <div class="child">Elemento filho</div>
</div>

<script>
  const container = document.getElementById('container');
  const child = container.querySelector('.child');
  const width = child.offsetWidth;
  const height = child.offsetHeight;
  container.style.width = `${width}px`;
  container.style.height = `${height}px`;
</script>

<style>
  .container {
    position: relative;
  }
  .child {
    position: absolute;
    top: 0;
    left: 0;
  }
</style>

Neste exemplo, a classe .container é definida como position: relative, o que significa que ela será posicionada em relação ao seu pai. A classe .child é definida como position: absolute, o que permite que o filho seja posicionado em relação ao container. As propriedades top: 0 e left: 0 garantem que o filho comece a ser posicionado a partir do canto superior esquerdo do container.

O JavaScript começa selecionando o container e o elemento filho usando document.getElementById e Element.querySelector. Em seguida, o código calcula a largura e altura do elemento filho usando offsetWidth e offsetHeight. Finalmente, as dimensões são definidas para o container usando style.width e style.height.

Conclusão

Neste artigo, vimos como fazer um container ter o tamanho do elemento filho quando este filho tem position: absolute usando JavaScript. Essa solução envolve calcular a largura e altura do elemento filho e definir essas dimensões para o container usando JavaScript. Embora seja um pouco mais complexa do que as soluções CSS, esta técnica é muito útil quando precisamos definir o tamanho do container dinamicamente com base no tamanho do elemento filho.