set equal height on multiple divs
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
add a comment |
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
add a comment |
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
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
jquery layout css-float height
edited Jul 13 '12 at 16:01
mskfisher
2,12832741
2,12832741
asked Mar 18 '10 at 20:10
ugreenugreen
5021613
5021613
add a comment |
add a comment |
5 Answers
5
active
oldest
votes
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.
Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)
– ugreen
Mar 21 '10 at 12:15
add a comment |
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().
add a comment |
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.
add a comment |
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
add a comment |
- 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););
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)
– ugreen
Mar 21 '10 at 12:15
add a comment |
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.
Thanks for the input. Dunno if I did it in a particular efficient way.. but it works :)
– ugreen
Mar 21 '10 at 12:15
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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().
add a comment |
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().
add a comment |
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().
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().
answered Mar 18 '10 at 20:15
KevinKevin
10.2k114981
10.2k114981
add a comment |
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
answered Mar 18 '10 at 20:19
fortysixandtwofortysixandtwo
343312
343312
add a comment |
add a comment |
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
add a comment |
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
add a comment |
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
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
answered Mar 21 '10 at 12:11
ugreenugreen
5021613
5021613
add a comment |
add a comment |
- 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););
add a comment |
- 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););
add a comment |
- 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););
- 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););
answered Nov 12 '18 at 20:52
Mehdi SaghariMehdi Saghari
495
495
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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