First appeared on September 12, 2000
Last update on Friday, January 25, 2002
I have been using Netscape Navigator since its early days. NS 1.1 was my first browser, and I simply loved it. It was easy to use, fast and powerful. I upgraded NS 1.1 to 3.0 then to 4.0, and was generally happy with it, but in mid 1999 some of Navigator's behaviors became so unacceptable that I was "forced" to choose its number one competitor Internet Explorer 4.0 as my browser. At this point you might ask what was so annoying with Navigator. There are mainly two things: 1. It was considerably slower in rendering pages than IE. 2. It wasn't compatible with the web standards as much as IE was thus it was displaying some pages wrong, and this was completely unacceptable to a web designer (that is me).
I'm currently using Internet Explorer 6.0, and I can say I'm fairly happy with it. It's fast and compatible, and some of IE's features are completely irreplaceable for me like the ability to save a web page with its images. Until this point, the whole story was from a user's perspective, but now here comes the gory part: Why it is so painful and
time consuming to design web pages for Netscape that look as good as in IE, especially when you are designing complex pages:
Too Many Nested Tables Make Netscape Crawl like a Turtle!
If you've ever happened to think why Netscape makes you wait so much on some pages while the same pages come soooo fast in IE, the answer is heavy use of nested tables. Many studies found that visitors don't like to wait (e.g. Changes in Web Usability Since 1994 by Jakob Nielsen). So, if your design causes pages to load slower, you will definitely lose some of your visitors. The solution is simple: Use as few nested tables as possible. However this sometimes limits designers because the most precious page
element we currently have is tables. Almost nothing can be achieved without using tables, and page layout heavily depends on them too. A partial solution lies in CSS positioning, but then again you can't use CSS layers to create dynamic-width designs (correction: actually you can -- see feedback).
Poorest CSS Support on the Planet
Netscape's CSS support is the poorest of all (IE 3/4/5, NS 4/5, Opera 3.5). You can check CSS Bugs and Workarounds at CSS Pointers Group to see the incredibly long bug list for Netscape 4.x, which is several times longer than the other browsers. If you use style sheets to dynamically change fonts on pages you design like many others do, you have probably already hit the problem of font sizes in Netscape. There is simply not a smooth transition between 8 and 9 points (or 11px and 12px)! This is completely unacceptable since 8 points is too small while 9 points is too big to be used as the standard body font.
When assigning column widths by using either proportional or fixed values, Netscape almost always resists not to use your values particularly in free-width tables. It overrides your original values and assigns some arbitrary values instead. The only solution is to use one-pixel GIF files
to set column widths rather than using the WIDTH attribute.
Table Background is Wrapped in Every Cell of a Table! Aaargh!
What would you do if you want to put an image in the background of a table. You would probably write something like <TABLE BACKGROUND="something.gif"> and then expect to see the background image would cover the background of the whole table. Well no, Netscape knows what you want to do better than you, and decides to wrap the image for every single cell in your table.
Table Background Colors Don't Work If the Parent Table has a Background Image
So you assigned a background image inside a big parent table and you want to add nested tables inside this table. You simply can't assign background colors to *any* cells of the nested tables unless you use a single-color image file as the background image (that is BACKGROUND="something.gif"
rather than BGCOLOR="something").
Fortunately, the new Gecko engine used in Netscape 6.0 fixes most of the problems stated above. However, migration to new Netscape 6.0 would probably be slow, and we will live with the deficiencies of Netscape 4.x for a few years more. At least there is some good news: the market share
of NS 4.x is now less than 10%.
I have some personal experiences with this, as I'm still required to support Netscape 4.xx for a work environment--it's 2003, and we're still being held back by some horrible design decisions that were made in 1997 (or before)!
For example, as the article mentions, Netscape 4.xx uses an algorithm that is exponential in its time complexity as opposed to linear, (which is what IE and Netscape 6.xx are) which means that nested tables are not always a viable layout option.
I would like to mention, by the way, that tables are indeed part of the HTML standard, and have been since... HTML 3.2? Therefore, they are more widely and correctly supported in actual web browsers than CSS is. I'd love to use CSS more, but as is also correctly mentioned in this article, Netscape 4.xx has horrible CSS support!
Also, creating a proper layout in CSS that is equivalent to a nested table layout is much more difficult, and sometimes actually impossible, due to the way elements can ignore the box boundaries or float on top of them.
So for as much as people talk about how CSS should be used for layout and HTML should be used for content, we aren't there yet. And even if all browsers had great CSS support, (and they don't, check out all the kludges and workarounds in any widely used CSS layout of any complexity) nested tables are still a more flexible layout tool in many situations. Unfortunately neither of these tools can be used to their full potential with Netscape 4.xx. :(
So good luck to all of you... it's time for me to go back to wrestling with Netscape 4.xx's bizarre layout constraints, and still make these pages work for the rest of the world.....
Netscape 4 definitely has lots of problems ..... I just ran into the "nested tables bgcolor won't display if parent table has background image problem" ... I guess I will make a 1 pixel x 1 pixel GIF of the background color for the nested table and use that.
I found two great articles a couple of years ago that teach you how to get around some of NS4 biggest bugs .. I still use their tips
Also, some of the code that the article talks about is not W3C compliant anyway, (background colors in tables and table cells for example) so it shouldn't be used in any browser. Tables are a (non-standard) means to an end.
Granted, other browsers will render this code, but shouldn't we be moving towards standards compliance and CSS layouts rather than still using tables?
So, I agree with the article when it says that Netscape 4.x is a piece of #%@, but I don't think that we should be trying to make table fixes and kludges. Instead we should be exploring the layout possibilities of CSS.