Dvorak Rants on CSS
John Dvorak writes on CSS after working on redesigning his weblog, the article ended up being extremely funny. From the write-up:
As we move into the age of Vista, multimedia's domination on the desktop, and Web sites controlled by cascading style sheets running under improved browsers, when will someone wake up and figure out that none of this stuff works at all?!
Solution: Start telling MSIE users to upgrade when they show up at your website, and if they don't, tell them to shove off. Yes, CSS standards are good. Firefox and Opera implement them a whole heck of a lot better than MSIE does. Okay, MSIE is catching up, but it's only one update followed by another 5 year span of stagnation. Users don't realize what a drag they're causing on web standards by sticking with such an old browser; it's time to help them feel the pain.
I find CSS to be a dream and much easier to work with than tables. More often than not, when people complain about CSS there are two main reasons:
a. Explorer (but you learn some work arounds)
b. They don't know what they're doing and are unwilling to learn (it's a paradigm shift as they say)
Of course, learning it from a good source makes all the difference.
I use CSS for layouts and for type (and for print.) It's a breeze. I recently had to do a quick update of an old site that used tables. It was a horrible, horrible experience. Fortunately, I've got the project to convert it using XHTML and CSS.
Well, it's not funny haha as much as funny sad. "You set a parameter for a style element, and that setting falls to the next element unless you provide it with a different element definition."
No...Really? You're saying that, if you set something to something, then it stays that way unless you tell it to be something else? And that that's a problem?
Come on! Don't push your own lack of skill off on the tool. If you want to do each page seperately, by all means, go right ahead. Otherwise, learn a little about CSS before you dimiss the whole thing as crap. I'm not a designer, but the "problems" he describes are are both familiar to me, and user error. Fixing inheretance is not that difficult.
I find CSS to be vaguely annoying because I'm not a visual guy, and my formatting never looks quite how I want it to, but there is no denying its simple and effective.
ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
Yup...now in IE7...none of it will work. Not even the clever work arounds of the past to get older versions to work....
Sorry..I couldn't keep a straight face either...
Light travels faster than sound. This is why some people appear bright until you hear them speak.........
Doesn't it seem that MOST public and open standards are difficult to implement and are lacking in terms of the most current "push the envelope" technology?
As I said in this post, I have more faith in PDF as a "layout standard" than I do in CSS. My OP talked about Flash and how well it seems to work across every platform on every OS -- here we see two proprietary formats that work better than the open one (let's not even talk about any iteration of HTML and overall compliance).
I know for my "foes" here it just seems like another slam on anything "public performed" but in this case I think it still holds water. When the masses try to agree on anything, we rarely see anything working well. When it does work we should be surprised, but how many manhours are wasted on trying to create these standards that make everyone happy? Yes, there are some public standards that seem to work great (MP3, but that can be argued that it is also a proprietary standard written by a company for a reason), but for every 1 public standard that we see "working" we see dozens of proprietary ones that work better. Someone just IM'd me about this thread and said "XViD," but I look at XViD which some consider public but a good portion of its structure was taken from a proprietary standard. Do public standards work, ever, and if they do work on occasion, is the amount of man hours "volunteers" worth it compared to the man hours involved in creating a proprietary standard?
From the article: "There actually are Web sites that mock this mess by showing the simplest CSS code and the differing results from the three main browsers and the Safari and Linux browsers." Does anyone have a link to these sorts of sites that he mentions?
In retrospect, I think it's the last thing he said that made any sense.
That which does not kill her only prolongs my agony.
With all do respect, I shouldn't have to be a "decent" web designer to be able to put up a personal homepage that looks the same in all browsers. Instead of using some WYSIWYG editor I decided to strike it out on my own and write a page from scratch using the "standards" that the W3C touts.
On top of crazy interpretations that different browsers display, I had the damnedest time trying to get the w3c recommended "DIV" tags to float in the right places. I ended up going back to tables, which really screws up text based browsers and screen readers. Why the hell can't anyone stick to a standard?
The problem leads to bad design habits (i.e. designing for only popular browsers), complex pages (i.e. javascript browser detectors that load different pages for different browsers), and n00b frustration that encourages use of monstrosities like Frontpage and Yahoo page builder.
Well...only if said proprietary company supports all browsers on all platforms. I've still got sites I cannot go to using Firefox on Linux because the site requires flash version 8x...and the highest version for linux is 7x...
No..if standards are observed by everyone...everyone should be able to view everything....
This is a site that I cannot view for instance...
Light travels faster than sound. This is why some people appear bright until you hear them speak.........
I've been writing code since I was 5 when my dad taught me Fortran. As a pre-teen, I learned BASIC. In high school, I learned C and Pascal. In college, I learned LISP, Ada, and C++. My "favorite" language right now, simply because I am having more fun with chip design, is Verilog. Suffice it to say that I have a lot of experience with programming and programming languages and quite radically different ways of thinking about encoding algorithms (software and hardware design are very different from each other).
Coding web pages makes me violently ill.
Back in 2003, I decided to learn web programming. In the process, I learned to hand-code HTML, CSS, Javascript, Java, SQL, and PHP. PHP, I can handle, because it's simple and straight-forward and designed to make back-end writing easy (although I understand that there have been some developments with Ruby since then). SQL makes sense, since it's specialized for database manipulation.
But when it comes to developing front-end web content, I just cannot justify using three different languages for one thing. I mean, I do understand the idea behind specializing languages (PHP vs. SQL), so in the abstract, I see a reason for making a separation between structure/content (HTML) and formatting (CSS). I just have a visceral reaction to having to use two different languages with two different syntaxes at once in this context. Embedding SQL in PHP doesn't bother me. For some reason, CSS and HTML bother me. I think it's because I feel like they're haphazzardly slapped together and FORCED to get along. PHP and SQL have no relation. Each is designed for its function. HTML evolved from a structural markup language into a total mess, and then CSS was invented as a bandaid. Along the way, no one ever thought to actually unify them. And then there's Javascript.
CSS, HTML, Javascript, and Java each has its own different name for each kind of DOM object. WTF!
If you want to do the full gamut of web front-end programming, you have to learn four names for every object or attribute!
What were these people thinking?
They weren't.
And it's never going to get better. 100 years from now, web programming will be tainted by the legacy evolutionary path everything went through.
Just wait for the Semantic Web. Yet another syntax to learn. No unification AT ALL.
I think I should go back to the days of plain-jane HTML and just deal with it
.. but as long as you develop in a standards-based browser, and don't do anything TOO funky, it's usually not overly difficult to get IE to work (there's always the "IE7" javascript hack). We can only hope that when Microsoft actually releases the real IE7, they get it right.
Because that wasn't even more of a mess??
Nested tables, embedded styles everywhere... sure, it works now, but only because the browser developers had so much time to get it to work, and developers have gotten used to it.
It's a horrible way to do layout. You end up with a twisted combination of layout and content - which means your web programmers have to have a bit of graphic design in them, and your graphic designers have to know a little bit about programming. To change something - for example, to move a menu from a horizontal bar at the top to a vertical menu on the right side - requires a ton of work. For a complex enough design, it may mean starting over, because you're 12 tables deep and are losing track of the row because there's too many rowspan=3's. Not to mention, there's no easy way to make a "print" or accessable version without having a whole separate layout.
Using CSS, you get a nice clean HTML layout. In fact, it's almost to the point where a web designer can be responsible for the CSS, and the programmer for the HTML*. Going back to the previous example, if your menu is in a div, and defined with an unordered list, then to move that navbar it's only a matter of changing the CSS. Don't need to touch the HTML (or corresponding server-side code that generates it) at all.
A nice thing about developing this way is the page is viewable before even putting in the CSS. In fact, it can be viewed easily by ANY browser (albeit without formatting) including text-based browsers and even the first generation web browsers. Making a printable version is just a matter of another stylesheet (and if you use the 'cascade' properly, you can have one that sets up the main layout, and one that modifies that for print, or one main, and two that inherit with specific changes - one for screen, one for print). Screen readers will have no problem with it. Search engines will index it easily.
Now, yes, it does have a learning curve. It takes a lot of reading to understand layout in CSS, as well as CSS in general. Current web developers often think "I know web development, I can do CSS" then get frustrated because things don't work (case in point, the original article). Really, they haven't bothered to learn it. There are a ton of great sites out there to help with this, and a couple google searches will find them. It's not something that happens overnight though, it takes a fair bit of reading and experimenting.
* There's still a few 'hacks' that are sometimes required to make the CSS work (ie, adding a 'wrapper div' around certain things), but these will hopefully be addressed eventually in newer versions of CSS. There's also the issue of IE
If IE7 does actually work, I would hope that the web would basically go to a "your browser is too old to view this page, please upgrade..." and provide links to firefox, IE7, and opera or whatever. I normally hate browser detection, but the faster we get rid of IE5/6 the better.
Speak before you think
I'm currently enjoying the pleasure of converting message board software from (broken at that) HTML 4.01 with tables for layout, to XHTML 1.0 Strict using CSS entirely for styling and presentation. It's been a long work in progress (we're on about our 6th month of development work for this version, but XHTML/CSS isn't the only work being done, and we're all volunteers), but the change has been amazing. You wouldn't believe the increased speed at rendering pages, even for a Perl-based project. It's thrilling, actually. And of course we kept the tabular data (memberlist, calendar) in tables because it belongs in such.
Yes, our CSS file is huge now, but I can live with that.
IE6 has problems. In all fairness, CSS was here first.
barack to the future?
Yes, Microsoft is at fault for not updating IE in so many years and then only supporting a few new things in ie7. However, its not just Microsoft. Netscape didn't follow standards until it was too late (netscape 6 was not soon enough). Mosaic sucked for a long time. As a designer, I want all browsers to support the exact same things with the exact same behavior in 99 percent of cases. (implementations will vary some) However thats a pipe dream.
How about this: All browsers must support CSS1 completely and CSS 2.1's positioning at least. floats and centering with margin: auto should frickin' work. Then we need something like SVG and png w/ transparency. That would at least allow us to do flash like things and use a decent graphics format. Flash is bad since it doesn't support all platforms. Most people say its great because it work on x86 linux, windows and the latest OSX. What about everyone else? (*bsd, solaris, linux on any other kind of processor, OS/2, etc)
We also need a decent video format that is cross platform for streaming. I don't care what it is just so that everyone actually has it. I'm sick of not getting to watch news feeds because i don't use MSIE with WMP 10 or 11 series. (yes MSNBC you suck) I can't even watch it in firefox on WINDOWS.
Please someone with a brain come up with standards and find a way to force these people to use them. That is the real trick. Its not just microsoft but all the idiots who only develop for whatever the hell is on their computer that they like.
MidnightBSD: The BSD for Everyone
Here's what I want to know:
For a long time, everyone used tables to format everything for the web. When they came out with CSS, they went for these abstract DIV tags for formatting... Why didn't they just take and modify the table row/column concept that had been working on 95% of the web? The notation worked, people "got it". Why, exactly, did we have to start from scratch?
~D
This sig has been enciphered with a one-time pad. It could say almost anything.
is to become a .NET developer and live happily ever after, of course. Except... not. The reason for all the languages and syntax is that the web grew up out of humanities desire to communicate. There is no one company that delivered the Internet as we know it. If you look at the history of any of the languages you mention you will find your answer as to why things are as they are. JavaScript came from Netscape and was originaly called LiveWire. It was a radicaly new web language that would give developers the tools to add client side processing to websites. Problem was that very few web developers at the time were actually programmers. They were most likely either DIY hobbiests or corporate lackies who sleezed their way into an easy paycheck by becoming the "web guy". So it rotted in the background until, hey, AJAX everybody!
HTML came out of SGML and the academic community. It was designed to deliver, get this, text _and_ images in the same document on the Internet! So cool! People were supposed to write their web pages in a text editor and then PUT their documents on the webserver. But PUT was not secure or powerful enough so enter webdav.
CSS is great! I have no complaints about the CSS/HTML dicotamy. And things will only get better with time. The problem with CSS is Internet Explorer. But I'm not going to beat that horse.
The web came so fast, and so many people were thinking about it that it produced an explosion of technologies, each trying to deliver something new. Now days we are sorting it all out, keeping whats good and letting the bad fade.
It's only been 15 years of the web. Can you imagine the world without it? I'd say things are pretty good.
Kind Regards
"A few great minds are enough to endow humanity with monstrous power, but a few great hearts are not enough to make us w
So why even introduce content styling at all?
CSS, in past specs and in practically current implementations, is half-baked. There are enough layout controls in it to make a person want to do layout with it. There are, however, too few controls (and too many poorly implemented) to make CSS a robust and dependable layout tool. Why, Why, WHY should centering a DIV involve the process of moving it 50% of the way across the screen then pulling it back 1/2 its (specified) width? Even in the mythical correctly-working-browser that's too much of a hack to consider CSS complete.
The best I can figure is that nobody thought that CSS was going to be much more than a fonts-and-colors tool until it was too late.
As for "working correctly": This isn't the Web of the early 1990s. Tools, technology, and bandwidth have increased to the point where basic information presentation is so far "in-the-bag" capable, and so many different types of people have joined the fray, that information presentation has gone from being irrelevant, through being an afterthought, to being a legitimate consideration. "Looking nice" is a consideration of "working" on the modern Web.
Information wants to be free.
Entertainment wants to be paid.
You just want to be cheap.
>With all do respect, I shouldn't have to be a "decent" web designer to be able to put up a personal homepage that looks the same in all browsers.
True, but your blame is misplaced.
CSS isn't perfect, but it's far easier if you wipe away ALL MSIE HACKS (or "browser hacks" if you can't bear to disrespect Microsoft).
I've been working on an internal-use web control panel for a hosting company, and CSS is a breeze. Templates are so much easier to manage, and there's less temptation to inject HTML tags into PHP.
I validate for CSS2.1, and on RARE occasions I add browser hacks. We're content to drop MSIE6 support as this is an internal application. We don't use something so exotic in CSS that it isn't supported in FireFox, which says FireFox is pretty good. If Microsoft chooses not to comply with CSS2, I blame them, and I am relieved this is not an external website... otherwise I WOULD be doing stupid box model tricks that escaped the attention of Microsoft software QA.
I'm glad MSIE7 is getting better. Microsoft tried to break the web and force their own fork of CSS. They lost. Now they are playing nice in this space... at least until they catch up.
(I can just see in a few years, MS encouraging "Avalon" XML and Windows forms on websites... *shudder*).
'most popular' implies that the member group has a positive view of the object. 'most used' has no positive or negative connotation. As the relevant data (browser statistics) is based on the number of hits rather than a poll of user preference it is clearly more accurate and truthful to say "most used" instead of "most popular".
Suppose Bill and Linus were in the same high school, and the ballot was distributed as:
MOST POPULAR (pick three)
[ ] Billy G
[ ] Billy G
[ ] Billy G
[ ] Other _________
While Billy might claim to be most popular based on the outcome of such a vote, it reflects a warped and stilted reality. He could say he got the most votes, which would at least be literally true. There is an inherent assumption that statements regarding the state of existance are intended to approximate true reality. The degree to which that approximation is accurate cooresponds directly with the truthfullness of the statement.
I'll probably go to hell for it, but to put it in terms of Goodwins Law:
Getting gassed by Nazis was very popular among the Jews.
Why didn't I think of that? Just ignore the standard and design for IE. Its such a great idea! Let's be practical here; who really cares about those fringe users running Linux, Unix, OS X, embedded systems, etc. If they want to look at websites, they can just get a real OS, right?
The sad part is that many people will probably read your comment and miss the sarcasm completely.
I have had many otherwise knowledgable people who make their living from designing websites defend the practice of designing for IE and IE alone, arguing that since that's where the market is, web standards can be damned.
Even if it was not intentional on its part, the bad CSS rendering code in Internet Explorer can be considered another of Microsoft's "Embrace and Extend" strategies. After all, if Microsoft cannot own the web, at least it can render it unviewable by anything other than its own software.
Ah, good ol' Microsoft: Setting back world progress in computing yet again.
Incidentally, to whom do I address my invoice at Microsoft to cover the months of unnecessary work I have spent over the years to make my perflectly CSS-compliant websites not looked like squashed garbage in MSIE?
More like:
I vote on your behalf was casted for Billy G. (Purchasing a computer with Windows preinstalled)
You can of course cast a second vote for Linus, (install Linux) or vote again for Billy G (upgrade Windows).
Nevertheless, your original vote for Billy G cannot be revoked.
P.S. If you can't prove that you paid your original poll tax we'll recend your voters registration card (WGA) but still count the vote because it suits us.
RESISTANCE IS FUTILE!
Beyond a certain point, table layout code gets so damn convoluted and recursive that it becomes a nightmare to make even small changes to layout. Especially tables within tables.
... or even add another row or column to an existing table. I want to plunge a pencil into this guy's eye, the code is so hard to adjust for.
I inherited a web project from a guy who used tables *almost* exclusively -- the almost is the worst, because now I've got TWO recursive trees to run back when making a layout change
He's got colspans and rowspans all over the place, and it's tough to figure out which goes to which table. Divs would have been much nicer because divs can have exclusive class declarations, and he could have just made each freaky section a class with the right properties. Instead he went gonzo and I'm left decyphering Sanskrit.
That's what DIV is good for. If you want to see what I'm dealing with, look at the code for the Duke City Shootout. Living with it is like living in a living nightmare.
Just for reference I am a professional web developer, producer and interactive director actually.
...it might just be a tiny piece of text over there in the right hand corner of the page when the user is viewing it on a wide screen (yes, just like the one you have on your laptop) or we could make it so it always looks like someone is yelling it, especially on over 50% of users montors... or we could use the niced fixed design here which has some drawbacks but will always present your message in this context and at this level of visual importance.
/rant over/
I completely understand and agree with what you have said. I am of the set of professionals who use the most appropriate methodology for the task at hand. I'll use PERL to do large regular expression string manipulations if it's a requirement but I won't insist upon it to do simple form validation routines where a PHP library on the server and javascript client side will do the job 100%. I'll require that my html and css coders avoid classes if possible, sticking to id's and tags and helping them think through organizing their content semantically so that when we have to distribute the work load everyone can get up to speed on the stylesheets and layouts quickly. I protoype with wireframes and content for the clients before any design has even been started, asking questions about the relationships between the content areas, navigation, etc. to help determine functional requirements well in advance of final design approval... etc. etc.
In the end however, politics and egos will get in the way of a perfectly thought out IA and UI concept which also has a rocking design, engaging user interaction features, etc. because the head of the department at the client whose budget is paying for the project (I'm talking to you Toyota Parts and Service, and Panasonic I haven't forgotten you either...) has a very specific agenda about their marketing strategy and the fact that they've already invested too much in some poorly thought out strategy and simply MUST include a huge graphic for some dumb concert series in a key market region that will be over two weeks after the site launch and won't be replace by anything nearly as important after... and they won't consider a separate micro-site just for that event... gah... short-sighted to say the least.
Anyways... it's not all fun and games but there are some parts where inspiration meets elegance and all is good in the world... and it just really chaps my hide when people who get to work a whole month on getting one website to be perfect feel like they can make other people feel bad about doing their job.
I'd love to talk to the clients about how they should completely rethink how design works... unfortunately all of them really only have experience with print, tv and or radio creative, all of which rely upon constrained and 'final' formats.
I mean how do you tell a guy who's been looking at TV storyboards for the last 20 years and magazine ad layouts... wait, this design you're looking at.. well it could look COMPLETELY DIFFERENT if the user drags open the browser window... that messaging you care so much about.. yes the one you spent $80,000 of market research on and $10,000 of copy writing budget to come up with not to mention legal, focus groups, etc.... well...
I've read some people statements that the above situation calls for a PDF.... ha... nobody likes opening PDFs unless it's something they want to save to read later or to print... PDFs are not a part of the web, they are like a take away brochure which usually goes directly into the trash as soon as you walk away.
A fool throws a stone into a well and a thousand sages can not remove it.