Html5 Theme / Understanding layouting with the HTML5 theme |
The HTML5 theme uses a two-phase JavaScriptâ„¢ algorithm to apply the layout.
The layout algorithm is a two-phase process.
/* use the box-model */ * { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -o-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box;r> } html, body { overflow: hidden; position: absolute; left: 0px; top: 0px; right: 0px; bottom: 0px; } /* the root layout container */ #gGridLayoutRoot { height: 100%; } /* Genero containers */ .gForm, .gGroup { position: relative; display: inline-block; vertical-align: top; } /* layout containers */ [data-g-layout-container] { position: relative; } /* layout container items */ [data-g-layout-container] > * { position: absolute; }
As was pointed out, the two steps of the layout algorithm can be contradictory and sometimes a style must be applied in one of the two phases only. To enable that possibility, a reserved class called gLayoutMeasuring is added to the element identified by gGridLayoutRoot during the first phase. It may be used to set a style during the measure phase "#gGridLayoutRoot(.gLayoutMeasuring)" or during the size and position phase "#gGridLayoutRoot:not(.gLayoutMeasuring)".
#gGridLayoutRoot:not(.gLayoutMeasuring) .gScrollView { width: 100%; height: 100%; }Sets the width and height to 100% during the size and position phase. During the measuring phase, the element takes its natural size.
/* layout container items */ [data-g-layout-container] > * { left: <left>; top: <top>; width: <width>; height: <height>; } /* stretch layout policy elements that have an horizontalStretching or verticalStretching property at true */ <inline style> { width: <computed width>; height: <computed height>; }