Full-height columns with tableless design

by Alex Limi last modified Dec 06, 2009 09:27 PM
How to get the Tableless layout to behave like a table (100% height).

Put the stuff in the pre tags in your ploneCustom.css.

Solution 1

  • Indented Header
  • 100% of the first column available for background
  • height of the content or portlets available for the background of the third (second) column
  • footer at the bottom of everything
      #visual-portal-wrapper {
          margin-left: <dtml-var columnOneWidth missing="16em">;
          padding-right: <dtml-var columnTwoWidth missing="16em">;
      }

      * html #visual-column-wrapper {
          margin-left: -<dtml-var columnOneWidth missing="16em"> !important;
          position: relative;
          left: <dtml-var columnOneWidth missing="16em">;
      }

      #portal-column-one {
          position: relative;
          top: 0;
          left: -<dtml-var columnOneWidth missing="16em">;
      }

      * html #portal-column-one {
          left: 0;
      }

      #portal-column-two {
          position: relative;
          top: 0;
          right: -<dtml-var columnTwoWidth missing="16em">;
      }

      #portal-column-one .portlet,
      #portal-column-two .portlet {
          position: relative;
      }

      #content {
          position: relative;
          top: 0;
          left: 0;
          margin: 0 !important;
          z-index: 20;
      }

      * html #content {
          margin-left: <dtml-var columnOneWidth missing="16em"> !important;
          margin-right: <dtml-var columnTwoWidth missing="16em"> !important;
      }

      #portal-top {
          position: relative;
      }

Solution 2

  • Intended Header
  • 100% of both columns except in moz (js solution soon)
  • footer at the bottom of everything
  • possibly enables dissappearing float bug (feedback please)
      #content,
      #content p,
      div.comment,
      h1,
      h2,
      h3,
      h4,
      h5,
      h6,
      .documentDescription,
      .portalMessage {
          height: auto !important;
      }

      .hiddenStructure {
          height: 1px !important;
      }

      html,
      body {
          min-height: 100%;
          height: auto;
      }

      * html,
      * html body {
          height: 100%;
      }

      #visual-portal-wrapper {
          margin-left: <dtml-var columnOneWidth missing="16em">;
          padding-right: <dtml-var columnTwoWidth missing="16em">;
          min-height: 100%;
          height: auto;
      }

      * html #visual-portal-wrapper {
          height: 100%;
      }

      #portal-top,
      #portal-top #portal-logo,
      #portal-top #portal-globalnav,
      #portal-top #portal-breadcrumbs {
          position: relative;
      }

      #portal-column-one {
          position: relative;
          top: 0;
          left: -<dtml-var columnOneWidth missing="16em">;
      }

      #portal-column-two {
          position: relative;
          top: 0;
          right: -<dtml-var columnTwoWidth missing="16em">;
      }

      #portal-column-one .portlet,
      #portal-column-two .portlet {
          position: relative;
      }

      #content {
          position: relative;
          top: 0;
          left: 0;
          margin: 0 !important;
          z-index: 20;
      }

How To Use

in both solutions you have to place the background of the portlets for the left side on the body and for the right side put it on the visual-portal-wrapper

details soon

Usecases

  • Highly graphical sites

Compatible

this layout is compatible with

  • Opera 7.20+
  • Internet Explorer 5.5+
  • Mozilla 1.3+ (Solution 1, Solution 2 works actually like 1 but 2 is better for ie and opera)

Known Bugs

  • possibly enables disappearing float bug in ie 6 (solution 2)
  • min-height doesn't work in moz (solution 2)

please report bugs/incompatibilities to the Author.

Credits

Written by Michael Zeltner. Many thanks to Sjors Robroek for inspiring.