Cómo obtener el porcentaje de proporción entre un elemento secundario y un elemento superior

Necesito apilar divs dentro de un contenedor principal div. El contenedor div principal también es un elemento secundario o está dentro de un contenedor principal.

Mi problema es que al apilar los divs como píxeles, todo está bien; sin embargo, si necesito deslizar uno debajo o entre la pila de divs, a veces pierdo un píxel. Soy consciente de que no es posible tener 0.3232 píxeles y asumo que estoy perdiendo un píxel en el lugar decimal.

Tengo un conjunto constante como var PIXELS_PER_FOOT = 25;

Si tengo una estructura como la siguiente, ¿cómo puedo establecer el porcentaje de un elemento secundario proporcional al superpadre?

  <div id="superParent" height='500px'       OR 20 Feet     >



    <div id="anotherParent" height="300px"   OR 12 Feet     >


    <div id="aChild" height=If this div is  3 Feet 
                             I need to get the percentage of 3 foot from 20 foot and        
                              apply                             
                              that percentage to its parent or                 
                               what I am calling the anotherParent


   </div>
   </div>

Así que si 3/20 = 15%. Necesito obtener 12/20 = 60%, y aquí es donde me pierdo. Porque aplicar el 15% al ​​elemento aChild no sería correcto ya que su padre no es el número del que obtengo los porcentajes principales.

No puedo usar jQuery para esto.

preguntado el 22 de mayo de 12 a las 21:05

1 Respuestas

Ya tengo acceso al píxel de cada padre, porque en mi ciclo los píxeles de cada objeto se configuran de arriba hacia abajo en función de la altura de su padre, por lo que no importa dónde me encuentre en el ciclo, siempre puedo tener una forma de configurar el porcentaje de un objeto secundario siempre que establezca la altura del objeto secundario antes de intentar obtener el porcentaje.

this.heightPercent = (this.heightPixels / that.parent.size.heightPixels) * 100;

contestado el 23 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.