Adrian, all, I do not agree on em being best practise let me explain why with this extract from chapter 13 of Jeffrey Zeldman's "Designing With Web Standards" (as I said before it's a little verbose):
============================================================================== The Heartbreak of Ems Accessibility advocates and the creators of CSS have long agreed that ems are the way to go. Sadly, they are often the way to go to hell. Listen to all the lectures, read all the books and articles, and you will come away feeling dirty and ashamed if you use anything other than ems to specify your type sizes. But the beautiful theory of ems breaks down in coarse practice and not only in browsers that fail to support the common default font size. On a minor note, there is the problem of old browsers. Netscape 4 ignores em and ex units that are applied to text, although it bizarrely respects these units when they are used for line height. IE3 treats em units as pixels. Thus, 2em is mistranslated as 2 pixels tall. Almost no one uses IE3 any more, but still. Likewise, older browsers often bungle inheritance on nested elements sized with em units. Because fewer and fewer people are stuck with Netscape 4, we won't waste your time going into the details of that browser's mishandling of relatively sized nested elements. Just know that if you need to support outdated browsers and if you use em units (especially on nested elements), you are letting yourself and your users in for a world of pain [13.11]. 13.11. What's in an em? Not cross-platform, cross-browser size consistency, that's for sure (http://www.thenoodleincident.com/tutorials/box_lesson/font/). User Choices and Em Units A more common problem with em units is that users often downsize their default font size settings as noted several times in this chapter. Mac users switch back to 12px/72ppi; Windows folks set their browsers' View: Text Size menu to "small" rather than "medium." Such changes make any text sized below 1em smaller than it is supposed to be and might make it too small to be read. In 2002, CSS/DHTML expert Owen Briggs tested every available text sizing method across a vast range of browsers and platforms to find out what worked and what failed. 264 screen shots later, despite hoping to prove that ems were always viable, he had actually discovered the opposite [13.11]. Ems work well as long as you never spec your text below the user's default size. Ems work well as long as users never adjust their preferences. But most designers and many clients favor smaller type and many designs require them. Many users consider the 16px default size uncomfortable for normal reading and change their preference settings accordingly. When em units are used to design sites, the designer's and user's shrinkage efforts compound on one another, resulting in text that might be hard to read or even entirely illegible. When you set small type with em units (or percentages), you run afoul of a universe of unknowable, uncontrollable user preference settings. What looks elegant on your monitor might be mouse type on your users'. If you commit this act in the name of accessibility, you're kidding yourself. In the i3Forum site, we tried to minimize the potential damage by sticking to sizes that were only slightly smaller than 1em. But the user's mileage might vary. Alternatively (http://www.alistapart.com/stories/dao/), client and aesthetics permitting, you can design all your sites using only normal or oversized type set with em units. This will avoid size-based accessibility problems. But very few designs work with a default size of 16px and higherand some users will complain that your site is ugly because the text is "too big." If the moral seems to be that you can't please everybody, the additional moral is that you are even less likely to please everybody when you use em units to specify your text size. Some standards evangelists and some accessibility advocates will choose to disbelieve what we've said, just as some people choose to believe that the 1969 moon landing was a hoax. Was it T.S. Eliot or Woody Allen who said, "Too much reality is not what the people want."? Whoever said it first, he was right. So what do the people want? They might want the two methods described in the remainder of this chapter, which seem to work better than any we have considered so far, although even the methods we are about to discuss have their problems. ============================================================================== The 2 methods he advocates are "Pixels Prove Pixels Work" and "The Font Size Keyword Method" (Fahrner's Method). If you are interested by those I may put a link on my site for this stuffes (perhaps I should have better do that for extract above also) Jacques ----- Original Message ----- From: "Adrian Crum" <[EMAIL PROTECTED]> To: <dev@ofbiz.apache.org> Sent: Monday, January 22, 2007 8:51 PM Subject: RFC: HTML/CSS Best Practices > The proposed HTML/CSS coding guidelines/best practices. My comments are in > brackets [] - they are not intended to be a part of the final version. > > These guidelines are short and to the point. I could go into more detail, but > then that would be bordering on writing a book about web design. Instead, I > took > the approach that the reader has already read books on HTML and CSS, and they > just need some basic guidelines. > > Your comments and suggestions are welcome. Once everyone has commented, I will > post the final version on the Wiki. > > --------------------------------- > OFBiz HTML and CSS Best Practices > --------------------------------- > > --- Web Standards and Browser Compatibility --- > > OFBiz HTML and CSS code should strive to conform to the latest W3C standards. > Browser-specific extensions should be avoided. > > If a particular browser does not conform to the latest standards, then the > HTML/CSS code should strive to produce a usable web page with that browser. In > other words, OFBiz developers should not "dumb down" the user interface to > support a non-conforming browser, yet someone using a non-conforming browser > should still be able to use OFBiz. > > [As Andy Clarke said, "For such a young and dynamic medium as the web, the > notion that designers should not push design boundaries forward because of > only > one browser, even when that browser is the market leader, seems incompatible > with progress."] > > --- HTML Guidelines --- > > HTML should be well structured, concise, and free of styling information. Well > structured HTML is easily styled with style sheets (CSS) - therefore all > styling > code should be kept in the style sheets. > > [Brief "good" versus "bad" code example goes here.] > > HTML tables should be used for rendering tabular data only - they should not > be > used for general layout. > > All HTML should pass validation. > > --- CSS Guidelines --- > > Style sheets should be concise and organized. > > Class IDs are preferred over class names. > > Build from the bottom up. Assign common properties to basic HTML elements > first, > then embellish the elements with additional selectors (CSS inheritance). > > Give the class names/selectors meaningful names that describe what they are > styling. Class names should be easily understood by non-technical people - > such > as graphics artists. Class names should not imply positioning or styling. > Examples of improper class names: "topRightButton" "leftMenuBar" > "boldRedText" - > those all imply position/style. > > Recurring HTML element collections (navigation bars, button bars, screenlets) > should be styled as a whole - using contextual or descendant selectors. > > Be consistent with property values. Use EMs for sizing - which allows the page > to be resized gracefully. Use the hex notation for colors - which allows a > graphic artist to search/replace colors. > > [Brief "good" versus "bad" code example goes here.] > > --- HTML/CSS Testing Guidelines --- > > Don't make assumptions in your code. Don't assume everyone reads > left-to-right. > Don't assume everyone can distinguish between subtle shades of gray. Don't > assume everyone uses their browser's default settings. Test your code on > several > browsers, then change the browser's settings. Reverse the layout direction > (CSS > direction: rtl;). Change the language. Resize the browser window - make it > really tiny. The page should make sense under any circumstance. > > After you're satisfied that your HTML/CSS code will display correctly under > any > circumstance, run the page through a validator to catch any errors.