One of the most frequent questions I get from my students is, why does my design
look this way in browser X while looking another way in browser Y?
I mean if the pages are structured the same and they are both using the same
CSS, shouldn't they look the same?
Well, in a perfect world they would.
Unfortunately, the world of web browsers is far from perfect.
The reason that browsers render pages differently has everything to do with
something we call a rendering engine.
Every browser has its own rendering engine that it uses to parse your code and
determine how it's supposed to display.
Since most browsers developed independently of each other, there are multiple
rendering engines. Each one has slightly different parsers, preferences, and
policies that determine how your content is rendered.
As a designer, it's important to understand which rendering engines are used for
various browsers and how they differ when laying out pages and content.
The four most common rendering engines are Trident, Presto, Gecko, and WebKit.
Microsoft developed the Trident rendering engine and as such, it's a proprietary
engine that's used in a multitude of browsers and web clients.
Internet Explorer and most AOL browsers use Trident.
Presto is another proprietary engine, developed by Opera software for their
browsers and licensed to other devices.
Gecko is an open-source rendering engine, originally developed by Netscape, but
released to the Open Source Mozilla project, which then continued development.
It powers popular browsers like Firefox and Camino.
WebKit is another open-source rendering engine developed by Apple,
Google, Nokia, and others.
It drives browsers such as Apple's Safari browser and Google's Chrome.
It's worth noting that these rendering engines are still being developed,
and older versions of the browsers will have older versions of these rendering engines.
That's why designers should test their pages in not just multiple browsers, but
multiple versions of the same browser as well.
Now thankfully, there aren't as many differences now as there have been in the past.
This convergence in browser behavior has been driven in large part by something
called web standards.
The movement towards web standards started in the late '90s with organizations
such as the Web Standards Project, which began as a group of designers and
developers frustrated with the current state of browser development.
They, and other organizations and corporations, began pressuring browser
developers to adopt the recommendations of the World Wide Web Consortium.
The World Wide Web Consortium, or W3C, began in 1994 and attended the
standardize web protocols and technologies by issuing a series of
recommendations for everyone to follow.
In the end, the outcry from the design and development community, along with the
rise of open-source browsers such as Firefox, helped other manufacturers
realize the advantages of supporting web standards.
So what makes understanding web standards so important to designers in general,
and in CSS in particular?
Well, if most modern browsers support web standards--to a degree, they all do--
that means that by learning these standards and staying current with their
development, you ensure that your sites will have a consistent design and user
experience across multiple browsers.
To a degree, that's kind of where we find ourselves now.
As of this recording, the current versions of Firefox, Safari, Chrome, Opera,
and Internet Explorer have far more in common with how they display pages than
they have differences.
Now, that doesn't mean that you won't eventually have to deal some minor
browser inconsistencies, or that you still don't need to account for older browser versions.
I mean, you do, but I may be worried about how a page looks in Netscape
Navigator 4 or Internet Explorer 5.5 for many years.
Soon enough dealing with a majority of browser inconsistencies will be a thing of the past.
Of course, that just leaves us to the brave new world of mobile development that
we now need to worry about.
The current state of mobile browsers is very similar to what we experienced in
the mid-'90s with desktop browsers.
I have no doubt that mobile devices will experience a similar maturation as they
begin to adopt web standards in a consistent way.
Until then, the best thing that you can do is become familiar with the
differences in CSS rendering from one browser and one device to another.
Later on in this title, I'll pass along some valuable online resources that can
help you keep track of those differences and how to deal with them.