Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

111
Visualizações
Html / CSS / JavaScript Divs de formato automático con una proporción en otro div

Quiero hacer una interfaz con un contenedor donde el usuario elija una cantidad de cuadrados para mostrar. Los cuadrados deben usar el máximo de espacio, con un mínimo de pérdida. Por lo tanto, el ancho de un cuadrado debe calcularse a partir del ancho y la altura del contenedor.

A partir de este problema, rápidamente llegué a esta función:

 function calcSquareWidth(nbSquares = 1) { //items is the number of squares let width = $('#container').width(); //width of the container let height = $('#container').height(); //height of the container return Math.sqrt((width * height) / nbSquares); //width of a square }

JSFiddle

En teoría esto funciona, pero esta función no tiene en cuenta el espacio desperdiciado del contenedor. En otras palabras, da el lado de uno de los cuadrados, si queremos usar todo el contenedor. Pero solo queremos usar la porción máxima del contenedor para mostrarlos, no todo.

Así que partí del principio de que tenía que encontrar la manera de recuperar la superficie sobrante, luego restarla de la superficie total del recipiente y aplicar mi función.

 function calcSquareWidth(nbSquares = 1) { let width = $('#container').width(); //width of the container let height = $('#container').height(); //height of the container let surface = width * height; //surface of the container let x = Math.sqrt( surface / nbSquares); //side of a square use the whole container // To get the excess, I divide the container width and height by the side of a square and I get the integer part let eWidth = Math.floor(width / x) * x; //width of the excess let eHeight = Math.floor(height / x) * x; //height of the excess let eSurface = eWidth * eHeight; //surface of the excess return x - (Math.sqrt(surface - eSurface) / nbSquares); }

JSFiddle

Ese es el mejor resultado que tengo. Pero eso no es perfecto. Algunos cuadrados pueden salir del contenedor.

He hecho algún otro experimento, pero nada que mostrar aquí. He hecho algunas pruebas con css pero tampoco llego.

Si alguien tiene una idea, me interesa!

PD: Mi inglés no es nada malo, ¡pero tengo que aprender más! Por lo tanto, no sea tímido para reclamar algunos detalles si es necesario.

Gracias !

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda