Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/01/2017, 07:40
jorgecanto
 
Fecha de Ingreso: abril-2015
Mensajes: 16
Antigüedad: 9 años
Puntos: 4
Seleccionar varios elementos con la misma clase

Hola.

En mi página tengo una serie de divs que quiero que tengan una altura proporcional al ancho del propio div. Para esto imagino que primero debo extraer el ancho de cada elemento con javascript y después aplicarle el mismo alto.

Este es mi código html:

Código HTML:
Ver original
  1. <div class="grid">
  2.           <a href=""><div class="box size1" style="background-image: url('img/01.jpg');"></div></a>
  3.           <a href=""><div class="box size2" style="background-image: url('img/21.jpg');"></div></a>
  4.           <a href=""><div class="box size2" style="background-image: url('img/15.jpg');"></div></a>
  5.           <a href=""><div class="box size3" style="background-image: url('img/07.jpg');"></div></a>
  6.           <a href=""><div class="box size4" style="background:#fff;"></div></a>
  7.           <a href=""><div class="box size5" style="background-image: url('img/27.jpg');"></div></a>
  8.           <a href=""><div class="box size2" style="background-image: url('img/35.jpg');"></div></a>
  9.           <a href=""><div class="box size1" style="background-image: url('img/32.jpg');"></div></a>
  10.           <a href=""><div class="box size6" style="background-image: url('img/33.jpg');"></div></a>
  11.           <a href=""><div class="box size5" style="background-image: url('img/26.jpg');"></div></a>
  12.           <a href=""><div class="box size4" style="background-image: url('img/24.jpg');"></div></a>
  13.         </div>

El código CSS para estos elementos:

Código CSS:
Ver original
  1. /* PORTFOLIO GRID */
  2. .grid .box {
  3.   background-size:cover;
  4.   background-position:center center;
  5. }
  6. .size1 {
  7.   width:50%;
  8.   height:800px;
  9.   float:left;
  10. }
  11. .size2 {
  12.   width:50%;
  13.   height:400px;
  14.   float:left;
  15. }
  16. .size3 {
  17.   width:100%;
  18.   height:400px;
  19.   background-position:center left !important;
  20.   float:left;
  21. }
  22. .size4 {
  23.   width:35%;
  24.   height:400px;
  25.   float:left;
  26. }
  27. .size5 {
  28.   width:65%;
  29.   height:400px;
  30.   float:left;
  31. }
  32. .size6 {
  33.   width:50%;
  34.   height:400px;
  35.   margin-top:-400px;
  36.   float:left;
  37. }

Y el código javascript:

Código Javascript:
Ver original
  1. function postControl() {
  2.  
  3.       var width1 = $(".size1").width();
  4.       var elemento1 = document.querySelector(".size1");
  5.       elemento1.style.height = width1 + "px";
  6.  
  7.       var width2 = $(".size2").width();
  8.       var elemento2 = document.querySelector(".size2");
  9.       elemento2.style.height = width1 * 0.5 + "px";
  10.  
  11.       var width3 = $(".size3").width();
  12.       var elemento3 = document.querySelector(".size3");
  13.       elemento3.style.height = width3 * 0.35 + "px";
  14.  
  15.       var width4 = $(".size4").width();
  16.       var elemento4 = document.querySelector(".size4");
  17.       elemento4.style.height = width4 * 0.928 + "px";
  18.  
  19.       var width5 = $(".size5").width();
  20.       var elemento5 = document.querySelector(".size5");
  21.       elemento5.style.height = width5 * 0.5 + "px";
  22.  
  23.       var width6 = $(".size6").width();
  24.       var elemento6 = document.querySelector(".size6");
  25.       elemento6.style.height = width6 * 0.5 + "px";
  26.       elemento6.style.top = width6 * 0.5 + "px";
  27.  
  28.   };

El javascript funciona perfectamente. El problema es que en dos elementos con la misma clase, solo funciona con el primero. Esto pasa en todos los elementos que se repiten.

¿Existe alguna forma de conseguir que cada parte del javascript aplique a todos los elementos de la misma clase?