Should the client-side part of websites be purely in good old HTML and CSS, or should it be a smooth and well-animated Flash-experience? Are Flash only for video-playback, games and ads, or is it suited for full-fledged web applications? Is it a waste of time to struggle with getting a HTML/CSS-driven website to look similar in IE 6, IE 7, Firefox, Safari and Opera? The discussion is almost as old as the World Wide Web, and can, as always when geeks stands up for their technology, get heated. To me, however, this discussion is very much alive and topical today.
I work as a web developer in an advertising agency. Our web department is only a few months old - as long as my employment, really, and it currently consists of two web designers and me, doing back-end stuff in Ruby on Rails. If you ask the advertising guys (those tech-savvy enough to reply, mind), the whole HTML/CSS versus Flash is a no-brainer: Flash looks better, you get those nice animation effects and transitions, and it looks the same in all browsers without extra work. If you ask me, personally, Flash should only be used in sparse doses for specialized tasks such as video playback and animated displays. But let me try to be “objective” for a moment - what are really the strengths and weaknesses of each technology?
Flash
Flash have quite a lot of benefits. Things somehow look better in Flash. Everything can have a slight animation, a little twinkle and beautiful transitions instead of browser load bars. Flash are great for games, for animated ads and movies, for video playback and for other highly interactive or specialized tasks that HTML doesn’t do nearly as well. Also, as mentioned, Flash really does look the same across all browsers and operating systems. Almost 99 % of all systems has the Flash plugin installed, so that’s a non-issue. Another thing which I think is turning slowly into a non-issue, is Flash productivity. Previously, it was quite hard to reuse code and components across Flash projects, but with Actionscript 3.0, this has all changed.
Flash also have a few drawbacks. Most important, I think, Flash is not the language of the web. Flash is a self-contained plugin running in the browser, without any respect for classic conventions such as the use of the browser’s back and forward buttons. Google and other search engines cannot index a website purely in Flash, which is why we have create a hidden structure of HTML landing pages linking to each other. Even then, most Flash websites doesn’t support deep links at all - it always starts out with it’s initial state. Also, Flash is not accessible at all. This might seem like a minor issue, but it’s not just for the sake of handicapped people we make accessible websites, it’s also to make them accessible from other devices than the computer - the mobile phone, for instance. Also, any website related to the public sector has to live up to a number of accessibility demands in most countries. I could go on; Flash is not for good for forms, it’s not good for long passages of text, it (usually) have fixed width and height, database communication is harder with Flash, and so on …
HTML/CSS
HTML, CSS and really also Javascript, also have their benefits when used together. Some of these benefits are the drawbacks of Flash; easy to index by search engines, easier to make accessible, and all database communication is handled server-side, before the finished HTML page is sent to the browser. HTML is the language of the web and of the browser. Forms looks the familiar way, back and forward buttons work, any page can be bookmarked and deep-linked using the url, and large bodies of text just looks better. Productivity might be a question of how the development team is composed, but I would guess that HTML/CSS is, on average, still way more productive than Flash, and much easier to develop cooperatively between front-end and back-end developers.
The caveat of HTML/CSS is the incompatibility of different browsers, operating systems and versions. To deliver HTML/CSS with a clear conscience, it has be tested in at least five different browsers in three operating systems, and even the most Microsoft-fixated has to test against both IE 6 and 7 these days. Also of course, HTML can’t follow Flash when it comes to nice transitions and animations. Even with AJAX and plenty of great Javascript libraries for creating stunning interfaces, it’s just much faster, smoother and cross-browser compatible to do that stuff in Flash. HTML/CSS is not as good as it could have been by now, because Microsoft dominated the browser market for so long and got lazy, and things are moving slowly. New versions of HTML and CSS has been ready for a long time, but the browsers have to implement before they can be used.
Concluding thoughts
So, benefits and drawbacks for both alternatives. Or are they alternatives? A website purely in Flash is more like a mini-application running inside the browser. A website without Flash is possible, but it is often a lot nicer with the Flash. I already gave my personal opinion of how to strike the balance between Flash and HTML/CSS in the introduction, but I am already working a solution where Flash will have to be much more dominating than that. Flash pages and HTML pages will have to share the same layout and data, and it will interesting to see how that works out.
What do you guys think? Are there any general rule of thumb, or does it depend completely on the website in question? Hope to hear some opinions about this - enjoy the summer.
Hello, I'm Casper Fabricius. I have developed for the web for 8 years, and have been enjoying Ruby on Rails for the past 3.
My experience covers communities, shopping solutions, multi-language sites, heavy back-end lifting and a wide selection of more traditional websites. I currently favor Radiant CMS as a platform, and I am an expert Radiant extension developer.
I am based in Copenhagen, Denmark, but I take assignments from across the globe. Feel free to study my resumé, featured projects and - of course - to hire me.