From: Charles G. <ch...@we...> - 2013-11-15 12:11:08
|
At the moment these are pre-applied to almost every widget. 1. Margin behaves in a way not consistent with the rest of the known layout universe. In e.g. HTML or a word processor, the margin determines the distance between 2 objects by using the maximum value. In the JS implementation margin is cumulative. To make it non-cumulative would require additional templates/processing and further bloat the widgets and usage requirements. *In Box/Java, it could be far more efficiently manipulated to be consistent with other standards.* 2. Lots of boxes! I know, boxes are cheap. Both margin and padding add 6 extra boxes, making the box tree 2 boxes deeper (4 total), and then there's all the lookups and processing involved with the traps plus the additional recursions in the core logic. *Implemented smartly in Box (an optional object) it would be hopefully less memory in practise but also a lot faster with less JS and lookups taking place in addition to the removal of all the template pre-applies. Plus you'll save yet more boxes according to #3.* 3. User burden. If you want margin or padding, you have to pre-apply the templates. In high volume cases you have to consider the benefit of using alternative layout measures. There's hundreds of cases in the widgets, and many more in our software, where we use additional boxes for spacing/layout as a minor optimization to avoid bringing in padding/margin. *Easier to use! No more pre-applying to get margin/padding. It just works (tm). That means you can use them anywhere without concern for performance impact.* - C |