Slashdot Log In
Designing With Web Standards
Posted by
samzenpus
on Mon Dec 04, 2006 03:05 PM
from the raise-your-standards dept.
from the raise-your-standards dept.
Trent Lucier writes "If you've browsed the web design section of any bookstore lately, you've seen him staring at you. The blue hat. The mustache. The blinding neon background. He's Jeffrey Zeldman, publisher of the influential web development magazine, 'A List Apart' and author of the book Designing With Web Standards (DWWS). The first edition of the DWWS was published in 2003, and now 2006 brings us an updated 2nd edition. In a market flooded with XHTML, CSS, and web standards books, is DWWS 2nd Ed. still relevant?" Read the rest of Trent's review for the answer.
DWWS is more of a survey course than a deep dive into a particular topic. In fact, a large part of the book is dedicated to the philosophy of web standards, as opposed to their specific implementation. The reader is given background information on the turbulent early years of the web, when Netscape and Microsoft battled each other with proprietary features, driving coders crazy and sending development costs through the roof. Inconsistent support for HTML, JavaScript and CSS often meant that a single page had to have multiple versions written to support different browsers. Predictably, many companies decided to "standardize" their websites on one browser (usually Internet Explorer), causing much pain for users who wanted or needed to use other programs.
Out of this mess came the web standards movement, whose goal was to encourage browser-agnostic design practices. However, the web standards proponents faced several problems at the outset. "Standards compliant design" was synonymous with "ugly." CSS was a 4-letter word, due to buggy and inconsistent browser support. Additionally, few people understood that standards compliance was a continuum and not an all-or-nothing affair.
Which brings us to Zeldman's book. Part 1 of DWWS explains the concepts above in terms that non-technical people can understand. The book states that it is for "designers, developers, owners, and managers..." Of course, the idea that a non-technical person would choose to read a book on web standards doesn't comply with what I like to call "reality." But tech leads may find some ammunition in these chapters for their arguments with management about the benefits of browser-neutral web design.
XHTML and CSS are the main focus of the second part of the book. Readers without any HTML experience will likely have difficulty following these chapters. Those with some experience will learn to master the DOCTYPE, tame font sizes, and conquer annoying Internet Explorer bugs.
Zeldman is a pragmatist, never forgetting that his readers live in the real world with real limitations. Some developers still have to support older browsers, or integrate with proprietary technologies (ex: Flash and Quicktime). He recommends solutions for these circumstances, letting his audience know the pros and cons of each approach. Early in the book, Zeldman states his motto of "No Rules. No Dogma." The book adheres to that statement, explaining that some standards can be maddeningly vague, or that the XHTML Strict DOCTYPE isn't for everyone.
As always, Internet Explorer 6 requires special attention. The (in)famous CSS box model hack is explained, in which jujitsu-like techniques are used to fix one IE bug (the way width is measured) by exploiting another (broken support for the CSS voice-family rule):
.content
{
width:400px; /* All browsers read this line */
voice-family: "\"}\""; /* IE chokes here and bails out of this block */
voice-family:inherit;
width:300px; /* Other browsers make it to the end and use the correct width */
}
Every time someone codes this, a kitten dies. But it is valid markup, and it is used by many standards supporters. A few references to IE7's improvements are sprinkled here and there, but this book was published before the browser was formally released so don't expect too much info.
One of the hottest topics in CSS is the pure CSS-based layout. Pure CSS layouts usually involve the concept of floating elements and calculating widths. In DWWS, we get a chapter dedicated to the hybrid layout. Hybrid layouts make use of CSS and HTML tables to layout a page, although the table usage is minimized. Zeldman is correct to take this approach, which gives readers practical advice and then lets them decide if they want to move on to more complicated CSS layouts.
The chapter on accessibility is one of the most illuminating. Zeldman has well-reasoned retorts to all the common graphic designer excuses for ignoring accessibility. Accessibility does not mean that a site has to be ugly. Rather, accessibility is something that happens under the hood, in the markup itself. The business case for accessibility is also strongly made. Think you can ignore blind users because your flashy site targets a small, hip audience? Be prepared to get punished by Google, since the GoogleBot is the most powerful blind user on the web ("The Blind Billionaire", as it is called in the book).
A brief chapter is dedicated to DOM-based scripting (aka JavaScript), and the discussion is mostly limited to what scripting can do, and not how to do it. The DOM (Document Object Model) is the model for describing the hierarchy of content on a webpage. Modern techniques like AJAX make extensive use of the intimate relationship between XHTML, CSS, and JavaScript DOM support. However, accessibility, usability, and maintainability are still challenges in the hyper-scripted world of Web 2.0. Zeldman doesn't offer much advice on these topics, but provides a book list for further reading.
I have not read the first edition of DWWS, but the second edition makes it clear where Zeldman has changed tactics and techniques. For example, the image replacement technique described in the first edition wasn't accessible in certain screen readers, so improvements are suggested in the second edition.
Overall, DWWS is a good book for web developers that already know the basics of HTML and CSS, but want to update their 1997 coding techniques. Those new to web design, however, may want to start with a book that is a little more comprehensive. Zeldman does a good job of explaining how to create leaner, lower-cost, and more maintainable web sites. On more than one occasion, I put down this book mid-sentence, loaded up my text editor, and was able to make a quick change to solve a problem that was bugging me. In a book dedicate to making the web designer's life easier, what more can you ask for?
Trent Lucier is a software engineer. His latest experiment is localhost80.com
You can purchase Designing With Web Standards, 2nd Ed. from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
In my experience. (Score:2, Funny)
Re: (Score:2)
Re: (Score:3, Insightful)
If it works in any browser at all I'll call it a sucsess.
Re:In my experience. (Score:4, Insightful)
A lot of these applications use almost entirely ActiveX and simply do not work well with alternate browsers. It simply isn't possible, and sometimes you just have to resort to having the app supported on just one browser.
Then why do companies use them? Legacy.
You see, these apps have been around forever, and people have been using them forever with a lot of investment made into them, and folks aren't ready to just give it all up. Of course, they ignore such things as TCO (e.g. having a Microsoft environment with IE, money spent on security and combating worms etc).
So, the end result is problems like this.
Parent
Re: (Score:2)
Re: (Score:2)
What if they are intentionally built to obfuscate and prevent such communication (i.e. lock-in).
Most CRM apps out there are built that way, which makes it extremely hard for external applications to interface and work with these applications.
Re: (Score:2)
>> A lot of these applications use almost entirely ActiveX and simply do not work well with alternate browsers.
Don't do that then.
Heh.
Easy to say, but difficult to do when there are a few thousand installations of such systems, and when changing such a system would be in the order of millions.
Tables should not be used for layout! (Score:5, Informative)
Standards-based design is not just about browser compatibility. It's also about separating style from content. Tables are for tabular data, not graphic design. What you describe is the HTML equivalent of spaghetti code, and it's one of the main targets of Zeldman [alistapart.com] and other of proponents of standards-based design.
HTML (unlike, say, PDF) is not a layout language. Tags are meant to describe the content they enclose, not specify how it is to be displayed. It is the job of CSS to present that content in different contexts. Violating that separation, for example using tables for layout, makes maintenance difficult because content and style cannot be modified independently. It denies users the ability to re-style your content (e.g. with custom stylesheets). It creates barriers to accessibility for those who do not interact with computers visually (e.g. those with disabilities), or who use other devices to access the web. It misrepresents the content of web pages to machine analysis - search engines, for example, use tags to determine the role and importance of text on a page.
Of course, the reality of the HTML and CSS standards and their support in popular (*cough*) browsers is somewhat different. It is sometimes necessary or practical to misuse HTML as you describe. But it should not be done without an understanding of the standards and the consequences of ignoring them. Books like Zeldman's give designers and developers the knowledge and tools they need to use HTML and CSS correctly where possible, and to minimize abuse otherwise.
For some reason, programmers seem to be trailing designers when it comes to understanding how to use HTML and CSS correctly. They figure if it looks right, it must be right. That was certainly my attitude. Perhaps it's because we don't take designers or HTML seriously ("it's not Turing complete!"). I don't know. But do read Zeldman or Eric Meyer or someone like them, either in hardcopy or online. Knowing how do this stuff right made me a much better web programmer.
Parent
Re:Tables should not be used for layout! (Score:5, Insightful)
There's a strong correlation between people who adhere to the W3C's specifications and people who separate content from presentation, but that doesn't mean that they are the same thing. <font> and <table> are in the HTML 4 and XHTML 1.0 specifications.
Conflating the two leads to people claiming stupid things, like that they are writing "standard" code because they use CSS, when in fact their code is non-standard and full of hacks.
I know over the past few years "web standards" has become a popular buzzword, but there's a difference between best practices and conformance to particular specifications. Just because it's a good thing, it doesn't mean the specifications require it, and jujst because it's in the specifications, it doesn't mean it's a good thing.
Parent
Re: (Score:2)
Good point. I simplified for clarity; maybe I shouldn't have. In the article I linked to, Zeldman talks about adhering to the spirit of the standards, not merely the letter. As your example shows, the letter sometimes violates the spirit.
Re: (Score:2)
You're missing the point of separating style (Score:4, Insightful)
Let's hold our horses and calm down a bit. You are confusing data with presentation. HTML is for content description, CSS is for presentation. Use the right tool for the job, and you can get the effect you want - without using HTML tables. And you will gain accessibility, maintainability, and so on.
The banners, nav bars, headings etc. that you mention are not tabular data. They do not necessarily have rows and columns. A navigation bar, for example, is typically one-dimensional, not two: it's a list of links - hence current best practice is to represent it in HTML as a list (<ul> or <ol>). Because these things are not tabular data, they should not be represented in tables.
Again, HTML is not a layout language. HTML tables are more like database tables than a grid system; like database tables, the relationship between rows and columns exists regardless of what they look like. The browser chooses how to display that information - typically in a tabular format, by applying CSS. That's right, CSS that specifies the layout, not HTML. You can use <div>s instead of <table>, <tr> and <td> tags and still display your information in a tabular format by applying the correct CSS table properties. These properties are about presentation, they say nothing about the nature of the data.
In your case, the banner should probably be something like <div class="banner">, the headings should be <h2>, <h3> etc. (that's why they're called heading tags), and the columns should probably be <div>s, located correctly with CSS (there are some very clever ways of doing this involving negative margins and the like (see A List Apart [alistapart.com]), none of which force you to misrepresent your data as tables - though in a few cases, using a table for columns is the most practical solution).
No one is telling you what your web pages should look like. They are, however, recommending the most effective, flexible, accessible, and maintainable ways of getting that look using the tools available. Using tables for layout is seldom any of those things.
Parent
Too bad CSS isn't better at layout (Score:5, Insightful)
True, but my question has long been: why is CSS not better at layout? Say I want a page with a header, three columns of content, and a footer that gets pushed down according to whichever column has the longest content. That's a very common layout task, and it's dead simple to do with a table, but so difficult with CSS that (the last time I checked) it was considered a difficult problem even for authors of CSS books! (I haven't tried your link to the Holy Grail on A List Apart, but you must admit that a layout solution that relies on negative margins is the very definition of a kludge.)
Don't get me wrong: I love using style sheets, and most of the time I'm grateful for CSS. But I hate it that some important things that were once easy have now become hard, all in the name of avoiding tables.
Parent
Re: (Score:3, Interesting)
Because CSS stands for Cascading Style Sheet; and style and layout are not the same thing. Style is fonts, colours, line spacing and stuff. CSS is great for style, particularly so where you want to apply a single style consistently across many pages. Layout is about how the building blocks of the page hang together. You can do this using CSS, in the same way that you can handle style using html, but it's not ideal (although on balance I'd rather use CSS for layout than htm
AJAX benefits from clean HTML (Score:3, Interesting)
That's what I used to do too, until I read Zeldman. I loved it. One of the big disadvantages, however, is that you lose the semantics of HTML (such as they are). Those semantics are valuable - for search engines (clean HTML can make a big difference) and for other applications. There aren't a lot of data formats as well-understood and universal as HTML; that's worth taking advantage of. Remember, your HTML is lik
Re:Tables should not be used for layout! (Score:4, Funny)
of course not, silly.
It's the thought that counts.
Parent
Re:In my experience. (Score:5, Insightful)
I develop some pretty interesting apps with ECMA-script and CSS, and my practise is this:
- Write a piece of code with standards in the back of your head, and test it with Firefox. Then retest in Konqueror (I'm an avid KDE-user).
- Code the whole app this way
- Boot into Windows, test with IE7. Not much changes needed, 99% works.
- Fire up IE6. Cry, and regain temper.
- Adjust so that IE6 works, without breaking the original functionality. Don't use browser-checks. They'll bite your ass later.
- Test in Opera. Most just works when it already does in FF and IE6, so no harm there.
- Retest everything cautiously in all five mentioned browsers and adjust as needed. IE7 might pose a problem due to the fixes for IE6.
All in all, the basic coding still is the major part of programming for me. The adjusting for the different browsers is not that much of a hassle.Standards are nice, but when it works with Gecko, IE6, IE7, KHTML and Opera, it's good enough. For basic webpages, Lynx is also a testbed for me (with regard to spiders).
Parent
Re: (Score:2)
IE allows to develop a page rapidly and make it look pretty in IE only. I actually suspect MS to have done a lot of work to find out how most developers work, find out how they'd want to do things and then make IE to allow them to do that. Who cares if it standard or not.
That's how you develop IE-dependency, have developers be able to get their work done faster and force them to put a "bes
Re: (Score:2)
Re: (Score:2)
Usually the browser support drops right about when the boss starts giving in to all the bells and whistles features the client wants.
All usual, its always a game of give and take. and there's always a point where it costs too much in terms of development time to do it all so you narrow it down to FF and IE for instance.
but, most of the time, it is feasible to deliver a good ui
Re: (Score:3, Insightful)
Look, I failed math three years running in high school, but it still only took me about 1.7 seconds to spot the logical flaws in your equation:
Re: (Score:2)
IE allows to develop a page rapidly and make it look pretty in IE only
I dunno, on my current project I had to develop a prototype/mock-up of our web GUI. I stuck IE7 on one monitor, FF2 on the other and pointed them both to the page I was working on. Edit, save, click "Refresh" on two browsers and see exactly what the clients will see. Worked just the same when I got the layout done and started working on the javascript.
Fortunately, it's a web app, not a shopping site. I'm sure I'd have the same problems real web designers have if I had to have lots of flashy graphics wi
Re: (Score:2)
In my experience, you can do it with standards, or you can do it so it renders properly in Internet Explorer.
Nathan
Or... (Score:2)
Re: (Score:2)
I've worked with a lot of developers that have used that kind of "pragmatism" to excuse the fact that they don't want to bother learning new techniques. They always end up creating
Re: (Score:2)
In my experience, you can do it with standards, or you can make it look like the client wants it to look like, which requires at least two sets of scripts for the diferent browsers
It requires two sets of scripts to get it to look a certain way? What kinds of scripts are these, that are controlling the "look" of the web page, and why are you writing two?
Then you run into things like ActiveX maps and OWC objects and give up on it working in anything other then IE.
Sounds like a good reason not to use Act
what I want (Score:2)
Re:what I want (Score:4, Funny)
Parent
Re: (Score:2)
I don't want a book. I just want an abridged version of http://www.w3.org/TR/CSS21/ [w3.org] with all the unsupported parts cut out.
Re: (Score:2)
I would love to see a listing of all the CSS and HTML that is fully-supported by both IE7 and Gecko.
Don't forget IE6 if your project is of any level of importance. It's got at least another two years of being significant enough to keep web designers hating themselves. If only it could die a quick death...
I can't comment on the book, but what makes A List Apart great is that it focuses on coding to standards and making IE work. It's not that hard once you spend enough nights struggling with it that you just sort of know what to attempt to get it to do. Resources like A List Apart can really give some i
Unfortunately... (Score:2, Interesting)
Many of the more persistent issues in IE6 aren't due to impelementation of the CSS standard (or lack thereof), but rather of bugs. I mean, sweet baggigty, how on Earth can you predict if IE6 is going to double the margin on a floated element or not? Hell, it's a "here today, gone tomorrow" issue for a full-time web designer.
And don't get me started on the peekaboo bug. That one alone took me a day and a half to figure out. For the most part, IE7 will respect web standards (and hell, even better than Firef
yeah (Score:4, Funny)
If it was easy, everyone could do it (Score:3, Informative)
That was from a year ago. Now even he has seen the light and is starting to build standards-based sites. It just took a while.
One invaluable resource for identifying browser CSS support is this page [webdevout.net] which has nice pretty colors showing the amount of support.
Re: (Score:3, Interesting)
CSS
Updates/maintenance is one of CSS's strongest points. Client wants all the links green instead of red? Look in my style.css, change a { color:#f00; } to a { color:#0f0; } - instead of pick through 50 pages looking for every <font> tag inside an <a> tag. Client wants the l
Re: (Score:2)
Mind you, table layouts suck bad, but you do have decent tools that can help a tiny bit. Pure CSS layout tools are -just- starting to come out. Mind you (before I get flamed for daring mention using anything beyond notepad/vim/emacs to do HTML/CSS) these tools are just helpers, and should neve
Re: (Score:2)
I know you are exaggerating, but any experienced CSS designer doesn't need anywhere near that many divs. In fact, the only div tags I use are to outline the larger block elements (header, content, footer), plus an extra "container" div, just to cover my bases. Everything else can usually be done just by manipulating the tags wi
Re: (Score:3, Informative)
I've looked for some trick that I could be missing, but everywhere I looked, it tend to be that. Of course, you can lower the amount needed by using, as you send, the inside elements, but often its still required to have quite a few too many divs. Being able to use display:table-cell in IE w
Tragedy (Score:2, Funny)
I felt a powerful disturbance in the force, as if thousands of CSS-P zealots died reading this.
Re: (Score:2)
Sometime a very limited and careful use of tables (not a bunch of nested tables garbage) can make the site easier to maintain, and
And obviously, if the site is supposed to be accessible, its not an option...
Re:I must say. (Score:4, Funny)
Parent
Re: (Score:3, Interesting)
They actually *created* a noticeable chunk of said standards.
Microsoft employees were part of the CSS, XML, XHTML creation committees and had significant contributions to those standards.
You can however understand that a commercial company where time is money and money is matter of survival in a market developing with a furious pace would be disappointed at the speed at which W3C works.
IE6 was abandoned for no other
Re: (Score:2)
Don't make me laugh. Microsoft still haven't come anywhere close to finishing their CSS 2 implementation, the specification for which was published over eight years ago. The same goes for other specifications - for example, they've only just finished PNG, and that specification was published over a d
Re: (Score:2)
If you think Microsoft has problems implementing rendering engines and image parsers/manipulato
Re: (Score:2)
If only Mozilla started to adhere to MS's specifications, the world would be an equally better place. I don't really think that there's anything particularly special or important about the W3C that makes their arbitary standards better than somebody else's arbitrary standards.
Re: (Score:3, Informative)
Too bad the standards aren't arbitrary. The W3C is an international consortium [w3.org] which holds meetings to try and get a consensus on what a web standard should be. Microsoft is part of this consortium [w3.org] but even after agreeing to the standards, chooses to ignore them.
So who's fault is it again for not following the standards?
Re: (Score:2)
Personally, I like background-image:url(foo.png) alot better than filter:progid:DXImageTransform.Microsoft.AlphaIma
But then, that's just me. BTW, you have a really fucked up notion of "equally better".
"Designing With Web Standards first ed" (Score:2)
As an owner of the first edition, it is a must own title for anyone into webdesign and programming. If only Microsoft started to adhere to the W3C specification, the world would be a better place.
Yea, I got the first edition years ago then when I found out the second ed came out I got it right away. I'd like to get a good book on CSS too, perhaps one of Meyers. What I'd really like to get though is a good book on accessibility, while following web standards helps a lot there's more to accessibility than
Re: (Score:2)
Re: (Score:3, Interesting)
Um. Yes. Yes, it is. XHTML 1.1 is an utterly useless format, but not for reasons having anything to do with CSS; per the W3C's notes on media types for XHTML, XHTML 1.1 should be served with the MIME-type application/xhtml+xml, and never with the MIME-type text/html. But Internet Explorer, even IE7, does not understand this MIME-type (though, to be fair, they'v
Re:Stop using a CSS as an excuse to produce poor H (Score:3, Insightful)
The issue? jQuery. There's a TON of neat things like slide and calendar than simply break my CSS, no matter what I do. If I'd designed more simply, with a well-placed table or 2, then I'd hav