How do I go about getting what the height of an element on a page would be if it ignored the ‘height’ css property applied to it?
The site I’m working on is http://www.wncba.co.uk/results and the actual script I’ve got so far is:
jQuery(document).ready(function($) {
document.origContentHeight = $("#auto-resize").outerHeight(true);
refreshContentSize(); //run initially
$(window).resize(function() { //run whenever window size changes
refreshContentSize();
});
});
function refreshContentSize()
{
var startPos = $("#auto-resize").position();
var topHeight = startPos.top;
var footerHeight = $("#footer").outerHeight(true);
var viewportHeight = $(window).height();
var spaceForContent = viewportHeight - footerHeight - topHeight;
if (spaceForContent <= document.origContentHeight)
{
var newHeight = document.origContentHeight;
}
else
{
var newHeight = spaceForContent;
}
$("#auto-resize").css('height', newHeight);
return;
}
[ http://www.wncba.co.uk/results/javascript/fill-page.js ]
What I’m trying to do is get the main page content to stretch to fill the window so that the green lines always flow all the way down the page and the ‘Valid HTML5’ and ‘Designed By’ messages are never above the bottom of the window. I don’t want the footer to stick to the bottom. I just want it to stay there instead of moving up the page if there’s not enough content to fill above to fill it. It also must adapt itself accordingly if the browser window size changes.
The script I’ve got so far works but there’s a small issue that I want to fix with it. At the moment if the content on the page changes dynamically (resulting in the page becoming longer or shorter) the script won’t detect this. The variable document.origContentHeight will remain set as the old height.
Is there a way of detecting the height of an element (e.g. #auto-resize in the example) and whether or not it has changed ignoring the height that has been set for it in css? I would then use this to update the variable document.origContentHeight and re-run the script.
Thanks.
I’ve got it working. I had to rethink it a bit. The solution is on the live site.
The one think I’d like to change if possible is the
Is there a way of detecting that the table row has changed size without chacking every 500ms. I tried
(#content).resize(function()but couldn’t to get it to work.