set equal height on multiple divs










2















I need to set equal height on a series of divs inside another div wrapper. The problem is that I dont want the same height on all of them. The page kind of have 3 columns and the floating divs can be 1, 2 or 3 columns wide. The divs float left, so the following example will give me three rows of divs in my wrapper. How can I set equal height on the divs that are in the same row? In my example I want nr 1 and 2 to have equal height and 3, 4 and 5 another equal height? I cant know beforehand how many divs there is or how wide or high they are. Edit: They can be for instance 300, 600 or 900 px wide and the page width is 900px



<div id="wrapper">
<div class="one-wide">nr1</div>
<div class="two-wide">nr2</div>
<div class="one-wide">nr3</div>
<div class="one-wide">nr4</div>
<div class="one-wide">nr5</div>
<div class="three-wide">nr6</div>
</div>


Im thinking I somehow need to figure out when the added width of the divs is at the full page width and set equal height on those. Then do the same on the next divs. But I cant wrap my head around it. Currently im just using this to set the height on the children of the wrapper:



$.fn.equalHeights = function(px) 
$(this).each(function()
var currentTallest = 0;
$(this).children().each(function(i)
if ($(this).height() > currentTallest) currentTallest = $(this).height();
);
// for ie6, set height since min-height isn't supported
if ($.browser.msie && $.browser.version == 6.0) $(this).children().css('height': currentTallest);
$(this).children('div').css('min-height': currentTallest);
);
return this;
;









share|improve this question




























    2















    I need to set equal height on a series of divs inside another div wrapper. The problem is that I dont want the same height on all of them. The page kind of have 3 columns and the floating divs can be 1, 2 or 3 columns wide. The divs float left, so the following example will give me three rows of divs in my wrapper. How can I set equal height on the divs that are in the same row? In my example I want nr 1 and 2 to have equal height and 3, 4 and 5 another equal height? I cant know beforehand how many divs there is or how wide or high they are. Edit: They can be for instance 300, 600 or 900 px wide and the page width is 900px



    <div id="wrapper">
    <div class="one-wide">nr1</div>
    <div class="two-wide">nr2</div>
    <div class="one-wide">nr3</div>
    <div class="one-wide">nr4</div>
    <div class="one-wide">nr5</div>
    <div class="three-wide">nr6</div>
    </div>


    Im thinking I somehow need to figure out when the added width of the divs is at the full page width and set equal height on those. Then do the same on the next divs. But I cant wrap my head around it. Currently im just using this to set the height on the children of the wrapper:



    $.fn.equalHeights = function(px) 
    $(this).each(function()
    var currentTallest = 0;
    $(this).children().each(function(i)
    if ($(this).height() > currentTallest) currentTallest = $(this).height();
    );
    // for ie6, set height since min-height isn't supported
    if ($.browser.msie && $.browser.version == 6.0) $(this).children().css('height': currentTallest);
    $(this).children('div').css('min-height': currentTallest);
    );
    return this;
    ;









    share|improve this question


























      2












      2








      2








      I need to set equal height on a series of divs inside another div wrapper. The problem is that I dont want the same height on all of them. The page kind of have 3 columns and the floating divs can be 1, 2 or 3 columns wide. The divs float left, so the following example will give me three rows of divs in my wrapper. How can I set equal height on the divs that are in the same row? In my example I want nr 1 and 2 to have equal height and 3, 4 and 5 another equal height? I cant know beforehand how many divs there is or how wide or high they are. Edit: They can be for instance 300, 600 or 900 px wide and the page width is 900px



      <div id="wrapper">
      <div class="one-wide">nr1</div>
      <div class="two-wide">nr2</div>
      <div class="one-wide">nr3</div>
      <div class="one-wide">nr4</div>
      <div class="one-wide">nr5</div>
      <div class="three-wide">nr6</div>
      </div>


      Im thinking I somehow need to figure out when the added width of the divs is at the full page width and set equal height on those. Then do the same on the next divs. But I cant wrap my head around it. Currently im just using this to set the height on the children of the wrapper:



      $.fn.equalHeights = function(px) 
      $(this).each(function()
      var currentTallest = 0;
      $(this).children().each(function(i)
      if ($(this).height() > currentTallest) currentTallest = $(this).height();
      );
      // for ie6, set height since min-height isn't supported
      if ($.browser.msie && $.browser.version == 6.0) $(this).children().css('height': currentTallest);
      $(this).children('div').css('min-height': currentTallest);
      );
      return this;
      ;









      share|improve this question
















      I need to set equal height on a series of divs inside another div wrapper. The problem is that I dont want the same height on all of them. The page kind of have 3 columns and the floating divs can be 1, 2 or 3 columns wide. The divs float left, so the following example will give me three rows of divs in my wrapper. How can I set equal height on the divs that are in the same row? In my example I want nr 1 and 2 to have equal height and 3, 4 and 5 another equal height? I cant know beforehand how many divs there is or how wide or high they are. Edit: They can be for instance 300, 600 or 900 px wide and the page width is 900px



      <div id="wrapper">
      <div class="one-wide">nr1</div>
      <div class="two-wide">nr2</div>
      <div class="one-wide">nr3</div>
      <div class="one-wide">nr4</div>
      <div class="one-wide">nr5</div>
      <div class="three-wide">nr6</div>
      </div>


      Im thinking I somehow need to figure out when the added width of the divs is at the full page width and set equal height on those. Then do the same on the next divs. But I cant wrap my head around it. Currently im just using this to set the height on the children of the wrapper:



      $.fn.equalHeights = function(px) 
      $(this).each(function()
      var currentTallest = 0;
      $(this).children().each(function(i)
      if ($(this).height() > currentTallest) currentTallest = $(this).height();
      );
      // for ie6, set height since min-height isn't supported
      if ($.browser.msie && $.browser.version == 6.0) $(this).children().css('height': currentTallest);
      $(this).children('div').css('min-height': currentTallest);
      );
      return this;
      ;






      jquery layout css-float height






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jul 13 '12 at 16:01









      mskfisher

      2,12832741




      2,12832741










      asked Mar 18 '10 at 20:10









      ugreenugreen

      5021613




      5021613






















          5 Answers
          5






          active

          oldest

          votes


















          1














          Keep track of the widths and when they add up to the total width then resize the columns (keep track of which ones you've looked at OR how many might be easier) and then reset your currentTallest variable. So you'd be doing the resizing inside the loop every time you reached the end of the row.






          share|improve this answer























          • Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

            – ugreen
            Mar 21 '10 at 12:15


















          1














          Since you are using jQuery, are you using the EqualHeights plugin?



          http://www.cssnewbie.com/example/equal-heights/plugin.html



          Seems like you would have some logic to know how many divs are in a row before hitting the page width, then starting a new div row with a ID. Then call



          $('#custom-id').equalheights();


          as many times as you need to, and that should set them all to the same height per ID.



          You could build on that too by doing an each for divs in a row, and adding their width with .width().






          share|improve this answer






























            0














            Perhaps you can loop through the divs, and check for $(this).offset().top
            If offset().top isn't equal to the last offset, you know you're on a different row.






            share|improve this answer






























              0














              I went with somethin like Peter suggested. I rewrote the plugin to:



              $.fn.cleverHeights = function(px) 
              $(this).each(function()
              var currentTallest = 0;
              var width = 0;
              var row = new Array();
              $(this).children().each(function(i)
              if ($(this).height() > currentTallest) currentTallest = $(this).height();
              width += parseInt($(this).outerWidth(), 10);
              row[++row.length] = $(this);
              if (width > 900)
              $.each( row , function()
              $(this).css('min-height': currentTallest);
              // for ie6, set height since min-height isn't supported
              if ($.browser.msie && $.browser.version == 6.0) $(this).css('height': currentTallest);
              );
              row.length = 0;
              width = 0;
              currentTallest = 0;

              );
              );
              return this;
              ;


              Thanks for the input






              share|improve this answer






























                0














                • EqualHeight.js - v1.0.1

                • https://github.com/JorenVanHee/EqualHeight.js

                this light weight plugin even support windows resize and responsive mode
                here is how to use:



                $(window).load(function() 
                $('.wrapper div').equalHeight(responsive: true););





                share|improve this answer






















                  Your Answer






                  StackExchange.ifUsing("editor", function ()
                  StackExchange.using("externalEditor", function ()
                  StackExchange.using("snippets", function ()
                  StackExchange.snippets.init();
                  );
                  );
                  , "code-snippets");

                  StackExchange.ready(function()
                  var channelOptions =
                  tags: "".split(" "),
                  id: "1"
                  ;
                  initTagRenderer("".split(" "), "".split(" "), channelOptions);

                  StackExchange.using("externalEditor", function()
                  // Have to fire editor after snippets, if snippets enabled
                  if (StackExchange.settings.snippets.snippetsEnabled)
                  StackExchange.using("snippets", function()
                  createEditor();
                  );

                  else
                  createEditor();

                  );

                  function createEditor()
                  StackExchange.prepareEditor(
                  heartbeatType: 'answer',
                  autoActivateHeartbeat: false,
                  convertImagesToLinks: true,
                  noModals: true,
                  showLowRepImageUploadWarning: true,
                  reputationToPostImages: 10,
                  bindNavPrevention: true,
                  postfix: "",
                  imageUploader:
                  brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
                  contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
                  allowUrls: true
                  ,
                  onDemand: true,
                  discardSelector: ".discard-answer"
                  ,immediatelyShowMarkdownHelp:true
                  );



                  );













                  draft saved

                  draft discarded


















                  StackExchange.ready(
                  function ()
                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f2473041%2fset-equal-height-on-multiple-divs%23new-answer', 'question_page');

                  );

                  Post as a guest















                  Required, but never shown

























                  5 Answers
                  5






                  active

                  oldest

                  votes








                  5 Answers
                  5






                  active

                  oldest

                  votes









                  active

                  oldest

                  votes






                  active

                  oldest

                  votes









                  1














                  Keep track of the widths and when they add up to the total width then resize the columns (keep track of which ones you've looked at OR how many might be easier) and then reset your currentTallest variable. So you'd be doing the resizing inside the loop every time you reached the end of the row.






                  share|improve this answer























                  • Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

                    – ugreen
                    Mar 21 '10 at 12:15















                  1














                  Keep track of the widths and when they add up to the total width then resize the columns (keep track of which ones you've looked at OR how many might be easier) and then reset your currentTallest variable. So you'd be doing the resizing inside the loop every time you reached the end of the row.






                  share|improve this answer























                  • Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

                    – ugreen
                    Mar 21 '10 at 12:15













                  1












                  1








                  1







                  Keep track of the widths and when they add up to the total width then resize the columns (keep track of which ones you've looked at OR how many might be easier) and then reset your currentTallest variable. So you'd be doing the resizing inside the loop every time you reached the end of the row.






                  share|improve this answer













                  Keep track of the widths and when they add up to the total width then resize the columns (keep track of which ones you've looked at OR how many might be easier) and then reset your currentTallest variable. So you'd be doing the resizing inside the loop every time you reached the end of the row.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Mar 18 '10 at 20:31









                  PeterPeter

                  749612




                  749612












                  • Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

                    – ugreen
                    Mar 21 '10 at 12:15

















                  • Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

                    – ugreen
                    Mar 21 '10 at 12:15
















                  Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

                  – ugreen
                  Mar 21 '10 at 12:15





                  Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)

                  – ugreen
                  Mar 21 '10 at 12:15













                  1














                  Since you are using jQuery, are you using the EqualHeights plugin?



                  http://www.cssnewbie.com/example/equal-heights/plugin.html



                  Seems like you would have some logic to know how many divs are in a row before hitting the page width, then starting a new div row with a ID. Then call



                  $('#custom-id').equalheights();


                  as many times as you need to, and that should set them all to the same height per ID.



                  You could build on that too by doing an each for divs in a row, and adding their width with .width().






                  share|improve this answer



























                    1














                    Since you are using jQuery, are you using the EqualHeights plugin?



                    http://www.cssnewbie.com/example/equal-heights/plugin.html



                    Seems like you would have some logic to know how many divs are in a row before hitting the page width, then starting a new div row with a ID. Then call



                    $('#custom-id').equalheights();


                    as many times as you need to, and that should set them all to the same height per ID.



                    You could build on that too by doing an each for divs in a row, and adding their width with .width().






                    share|improve this answer

























                      1












                      1








                      1







                      Since you are using jQuery, are you using the EqualHeights plugin?



                      http://www.cssnewbie.com/example/equal-heights/plugin.html



                      Seems like you would have some logic to know how many divs are in a row before hitting the page width, then starting a new div row with a ID. Then call



                      $('#custom-id').equalheights();


                      as many times as you need to, and that should set them all to the same height per ID.



                      You could build on that too by doing an each for divs in a row, and adding their width with .width().






                      share|improve this answer













                      Since you are using jQuery, are you using the EqualHeights plugin?



                      http://www.cssnewbie.com/example/equal-heights/plugin.html



                      Seems like you would have some logic to know how many divs are in a row before hitting the page width, then starting a new div row with a ID. Then call



                      $('#custom-id').equalheights();


                      as many times as you need to, and that should set them all to the same height per ID.



                      You could build on that too by doing an each for divs in a row, and adding their width with .width().







                      share|improve this answer












                      share|improve this answer



                      share|improve this answer










                      answered Mar 18 '10 at 20:15









                      KevinKevin

                      10.2k114981




                      10.2k114981





















                          0














                          Perhaps you can loop through the divs, and check for $(this).offset().top
                          If offset().top isn't equal to the last offset, you know you're on a different row.






                          share|improve this answer



























                            0














                            Perhaps you can loop through the divs, and check for $(this).offset().top
                            If offset().top isn't equal to the last offset, you know you're on a different row.






                            share|improve this answer

























                              0












                              0








                              0







                              Perhaps you can loop through the divs, and check for $(this).offset().top
                              If offset().top isn't equal to the last offset, you know you're on a different row.






                              share|improve this answer













                              Perhaps you can loop through the divs, and check for $(this).offset().top
                              If offset().top isn't equal to the last offset, you know you're on a different row.







                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Mar 18 '10 at 20:19









                              fortysixandtwofortysixandtwo

                              343312




                              343312





















                                  0














                                  I went with somethin like Peter suggested. I rewrote the plugin to:



                                  $.fn.cleverHeights = function(px) 
                                  $(this).each(function()
                                  var currentTallest = 0;
                                  var width = 0;
                                  var row = new Array();
                                  $(this).children().each(function(i)
                                  if ($(this).height() > currentTallest) currentTallest = $(this).height();
                                  width += parseInt($(this).outerWidth(), 10);
                                  row[++row.length] = $(this);
                                  if (width > 900)
                                  $.each( row , function()
                                  $(this).css('min-height': currentTallest);
                                  // for ie6, set height since min-height isn't supported
                                  if ($.browser.msie && $.browser.version == 6.0) $(this).css('height': currentTallest);
                                  );
                                  row.length = 0;
                                  width = 0;
                                  currentTallest = 0;

                                  );
                                  );
                                  return this;
                                  ;


                                  Thanks for the input






                                  share|improve this answer



























                                    0














                                    I went with somethin like Peter suggested. I rewrote the plugin to:



                                    $.fn.cleverHeights = function(px) 
                                    $(this).each(function()
                                    var currentTallest = 0;
                                    var width = 0;
                                    var row = new Array();
                                    $(this).children().each(function(i)
                                    if ($(this).height() > currentTallest) currentTallest = $(this).height();
                                    width += parseInt($(this).outerWidth(), 10);
                                    row[++row.length] = $(this);
                                    if (width > 900)
                                    $.each( row , function()
                                    $(this).css('min-height': currentTallest);
                                    // for ie6, set height since min-height isn't supported
                                    if ($.browser.msie && $.browser.version == 6.0) $(this).css('height': currentTallest);
                                    );
                                    row.length = 0;
                                    width = 0;
                                    currentTallest = 0;

                                    );
                                    );
                                    return this;
                                    ;


                                    Thanks for the input






                                    share|improve this answer

























                                      0












                                      0








                                      0







                                      I went with somethin like Peter suggested. I rewrote the plugin to:



                                      $.fn.cleverHeights = function(px) 
                                      $(this).each(function()
                                      var currentTallest = 0;
                                      var width = 0;
                                      var row = new Array();
                                      $(this).children().each(function(i)
                                      if ($(this).height() > currentTallest) currentTallest = $(this).height();
                                      width += parseInt($(this).outerWidth(), 10);
                                      row[++row.length] = $(this);
                                      if (width > 900)
                                      $.each( row , function()
                                      $(this).css('min-height': currentTallest);
                                      // for ie6, set height since min-height isn't supported
                                      if ($.browser.msie && $.browser.version == 6.0) $(this).css('height': currentTallest);
                                      );
                                      row.length = 0;
                                      width = 0;
                                      currentTallest = 0;

                                      );
                                      );
                                      return this;
                                      ;


                                      Thanks for the input






                                      share|improve this answer













                                      I went with somethin like Peter suggested. I rewrote the plugin to:



                                      $.fn.cleverHeights = function(px) 
                                      $(this).each(function()
                                      var currentTallest = 0;
                                      var width = 0;
                                      var row = new Array();
                                      $(this).children().each(function(i)
                                      if ($(this).height() > currentTallest) currentTallest = $(this).height();
                                      width += parseInt($(this).outerWidth(), 10);
                                      row[++row.length] = $(this);
                                      if (width > 900)
                                      $.each( row , function()
                                      $(this).css('min-height': currentTallest);
                                      // for ie6, set height since min-height isn't supported
                                      if ($.browser.msie && $.browser.version == 6.0) $(this).css('height': currentTallest);
                                      );
                                      row.length = 0;
                                      width = 0;
                                      currentTallest = 0;

                                      );
                                      );
                                      return this;
                                      ;


                                      Thanks for the input







                                      share|improve this answer












                                      share|improve this answer



                                      share|improve this answer










                                      answered Mar 21 '10 at 12:11









                                      ugreenugreen

                                      5021613




                                      5021613





















                                          0














                                          • EqualHeight.js - v1.0.1

                                          • https://github.com/JorenVanHee/EqualHeight.js

                                          this light weight plugin even support windows resize and responsive mode
                                          here is how to use:



                                          $(window).load(function() 
                                          $('.wrapper div').equalHeight(responsive: true););





                                          share|improve this answer



























                                            0














                                            • EqualHeight.js - v1.0.1

                                            • https://github.com/JorenVanHee/EqualHeight.js

                                            this light weight plugin even support windows resize and responsive mode
                                            here is how to use:



                                            $(window).load(function() 
                                            $('.wrapper div').equalHeight(responsive: true););





                                            share|improve this answer

























                                              0












                                              0








                                              0







                                              • EqualHeight.js - v1.0.1

                                              • https://github.com/JorenVanHee/EqualHeight.js

                                              this light weight plugin even support windows resize and responsive mode
                                              here is how to use:



                                              $(window).load(function() 
                                              $('.wrapper div').equalHeight(responsive: true););





                                              share|improve this answer













                                              • EqualHeight.js - v1.0.1

                                              • https://github.com/JorenVanHee/EqualHeight.js

                                              this light weight plugin even support windows resize and responsive mode
                                              here is how to use:



                                              $(window).load(function() 
                                              $('.wrapper div').equalHeight(responsive: true););






                                              share|improve this answer












                                              share|improve this answer



                                              share|improve this answer










                                              answered Nov 12 '18 at 20:52









                                              Mehdi SaghariMehdi Saghari

                                              495




                                              495



























                                                  draft saved

                                                  draft discarded
















































                                                  Thanks for contributing an answer to Stack Overflow!


                                                  • Please be sure to answer the question. Provide details and share your research!

                                                  But avoid


                                                  • Asking for help, clarification, or responding to other answers.

                                                  • Making statements based on opinion; back them up with references or personal experience.

                                                  To learn more, see our tips on writing great answers.




                                                  draft saved


                                                  draft discarded














                                                  StackExchange.ready(
                                                  function ()
                                                  StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f2473041%2fset-equal-height-on-multiple-divs%23new-answer', 'question_page');

                                                  );

                                                  Post as a guest















                                                  Required, but never shown





















































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown

































                                                  Required, but never shown














                                                  Required, but never shown












                                                  Required, but never shown







                                                  Required, but never shown







                                                  Popular posts from this blog

                                                  𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                                                  Edmonton

                                                  Crossroads (UK TV series)