Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Footer positioning: Difference between revisions

From MoodleDocs
m (Text replacement - "</code>" to "</syntaxhighlight>")
m (Text replacement - "<code php>" to "<syntaxhighlight lang="php">")
 
Line 3: Line 3:
In ''footer.html'', the footer div is normally contained inside the page div e.g. ''moodle/theme/standardblue/footer.html''
In ''footer.html'', the footer div is normally contained inside the page div e.g. ''moodle/theme/standardblue/footer.html''


<code php>
<syntaxhighlight lang="php">
  </div> <!-- end div content -->
  </div> <!-- end div content -->


Line 19: Line 19:
Change this so the footer div appears after the page div
Change this so the footer div appears after the page div


<code php>
<syntaxhighlight lang="php">
   </div> <!-- end div content -->
   </div> <!-- end div content -->
   </div> <!-- end div page -->
   </div> <!-- end div page -->
Line 35: Line 35:
Then in the layout CSS file add the following
Then in the layout CSS file add the following


<code php>
<syntaxhighlight lang="php">
html, body {
html, body {
   margin: 0; padding: 0;
   margin: 0; padding: 0;

Latest revision as of 13:36, 14 July 2021

Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.

In footer.html, the footer div is normally contained inside the page div e.g. moodle/theme/standardblue/footer.html

 </div> <!-- end div content -->

 <div id="footer">
    <hr size="1" noshade="noshade" />
    <?php echo $loggedinas ?>
    <?php echo $homelink ?>
  </div> <!-- end div footer -->

  </div> <!-- end div page -->
  </body>
</html>

Change this so the footer div appears after the page div

  </div> <!-- end div content -->
  </div> <!-- end div page -->
 
  <div id="footer">
    <hr size="1" noshade="noshade" />
    <?php echo $loggedinas ?>
    <?php echo $homelink ?>
  </div> <!-- end div footer -->
 
</body>
</html>

Then in the layout CSS file add the following

html, body {
  margin: 0; padding: 0;
  height: 100%;
}
 
#page {
  margin: 0; padding: 0;
  min-height: 100%; _height: 100%; /* min-height for smart browsers
                                   _height for Internet Explorer ;-)*/
}
 
#content {
  padding-bottom: 105px;
}
 
#footer {
  margin: -100px 0 0 0; padding: 0 0 10px 0; /* assuming footer of height 100px */

}

This creates a div that should always at least fill the height of the browser viewport, regardless of the amount of page content. The footer is positioned underneath this div and nudged up using a negative top margin. We also need to allow some extra space underneath the content so that when the footer gets repositioned it doesn't overlap anything. 105 pixels of padding are added to the bottom of the content div to make a space for the footer, then the footer is moved up from its current position by 100 pixels.

References