48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
const adjustFooterHeight = () => {
 | 
						|
  // If there is no footer on this page, do nothing
 | 
						|
  const footer = document.getElementById('island-footer');
 | 
						|
  if (!footer) { return; }
 | 
						|
 | 
						|
  // If the body is taller than the window, also do nothing
 | 
						|
  if (document.body.offsetHeight > window.innerHeight) {
 | 
						|
    footer.style.marginTop = '0';
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  // Add a margin-top to the footer to position it at the bottom of the screen
 | 
						|
  const sibling = footer.previousElementSibling;
 | 
						|
  const margin = (window.innerHeight - sibling.offsetTop - sibling.offsetHeight - footer.offsetHeight);
 | 
						|
  if (margin < 1) {
 | 
						|
    footer.style.marginTop = '0';
 | 
						|
    return;
 | 
						|
  }
 | 
						|
  footer.style.marginTop = `${margin}px`;
 | 
						|
};
 | 
						|
 | 
						|
const adjustHeaderWidth = () => {
 | 
						|
  // If there is no header, do nothing
 | 
						|
  const header = document.getElementById('base-header');
 | 
						|
  if (!header) { return; }
 | 
						|
 | 
						|
  const tempDiv = document.createElement('div');
 | 
						|
  tempDiv.style.width = '100px';
 | 
						|
  tempDiv.style.height = '100px';
 | 
						|
  tempDiv.style.overflow = 'scroll';
 | 
						|
  tempDiv.style.position = 'absolute';
 | 
						|
  tempDiv.style.top = '-500px';
 | 
						|
  document.body.appendChild(tempDiv);
 | 
						|
  const scrollbarWidth = tempDiv.offsetWidth - tempDiv.clientWidth;
 | 
						|
  document.body.removeChild(tempDiv);
 | 
						|
 | 
						|
  const documentRoot = document.compatMode === 'BackCompat' ? document.body : document.documentElement;
 | 
						|
  const margin = (documentRoot.scrollHeight > documentRoot.clientHeight) ? 0-scrollbarWidth : 0;
 | 
						|
  document.getElementById('base-header-right').style.marginRight = `${margin}px`;
 | 
						|
};
 | 
						|
 | 
						|
window.addEventListener('load', () => {
 | 
						|
  window.addEventListener('resize', adjustFooterHeight);
 | 
						|
  window.addEventListener('resize', adjustHeaderWidth);
 | 
						|
  adjustFooterHeight();
 | 
						|
  adjustHeaderWidth();
 | 
						|
});
 |