@mrjyn
May 20, 2011
Country Roads made me cry
Super OBSCURE HTML '%%' Length Units
HTMLayout %% length units
Strange and wonderful dance Strange and wonderful dance
- Strange
- and dance
- wonderful
- wonderful
- strange_dance.mp4 Watch on Posterous
Strange and wonderful dance Strange and wonderful dance Strange and dance wonderful strange_dance.mp4 Watch on Posterous ...»See Ya
In short, %% units are "percentage from free space". They also known as flex units or relative length units.
The engine supports two forms of flex units: "spring coil" notation - 100%% and star notation - 1* and these forms are related as:
100%% = 1*
%% units are applicable to border, padding, margin, width and height CSS attributes only. HTMLayout will effectively compute them for all blocks in 'normal' flow. Thus width:100%% of floated block will not be interpreted at all (will be treated as undefined).
Formal definition of %% length units computation:
When allotting space among element attributes competing for space along axis, HTMLayout engine allot all values for attributes having other than %% lengths first, then divide up remaining available space among %% lengths. Each %% length receives a portion of the available free space that computed as a percentage from total sum of all %% units along axis. If total sum of all %% lengths along axis is less then 100 then 100%% value is used as a total sum of all %% units. Thus, if 100 pixels of space are available after the user agent allots pixel and percentage space, and the competing relative lengths are 10%%, 20%%, and 70%%, the 10%% will be alloted to 10 pixels, the 20%% will be alloted 20 pixels, and the 70%% will be alloted 70 pixels. If 100 pixels of space are available, and the competing relative lengths are 10%%, 20%%, and 30%%, the 10%% will be alloted to 10 pixels, the 20%% will be alloted 20 pixels, the 30%% will be alloted 30 pixels, and remaining 40 pixels will be left undistributed.Example:
In the example below I am using HTML table to model layout which could be done by %% units without need to use tables. Some %% use cases cannot be reproduced even by HTML tables.
Imagine that four blocks below declared in CSS as:
width:100px
width:30%% width:70%% width:150px
Below is the same layout but with %% units use. Could be viewed properly only in HTMLayout engine so far:
width:100pxwidth:30%%width:70%%width:150pxTwo "tables" above have same structure and dimensions of "cells" in HTMLayout engine.
And following example is just one DIV having left and right border set to 30%% and 70%% respectively.
border-left:solid tan 30%%; border-right:solid tan 70%%; border-top:solid tan 4px; border-bottom:solid tan 4px; width:50%; background: goldDIV above takes all available width of its container in HTMLayout engine.
To see examples of %% units alive download HTMLayoutDemo.zip - HTMLayout engine and its demo application with samples.
HTMLayout %% length units Strange and wonderful dance Strange and wonderful dance Strange and dance wonderful wonderful wonderful strange_dance.mp4 Watch on Posterous Strange and wonderful dance Strange and wonderful dance Strange and dance wonderful strange_dance.mp4 Watch on Posterous ...» See Y ...»See Ya
Blink and You'd Miss it! Don't use “custom DTDs”!
Don't use “custom DTDs”!
What's with the <blink>?
The W3C Style page contains a <blink> element. <blink> is not an HTML element and yet the page is valid according to some HTML validators. What's the trick?
In fact, the page is syntactically valid, because the element is declared in the document. As long as elements are properly declared, the page is valid in the SGML/XML sense.
But the page is not semantically valid. It is an SGML document, but it is not an HTML document. There is no official standard that defines what <blink> means.
The W3C Style page uses a non-standard element as a joke. If you know the history of CSS you may remember that one of the reasons for CSS was precisely to avoid that every browser invented its own non-standard elements, such as <blink>.
Don't use “custom DTDs”! What's with the
Hint.
via microsoft.com ...»See Ya
Strange and wonderful dance
Strange and wonderful dance Strange and wonderful dance
- Strange
- and dance
- wonderful