Articles in the ‘Web Design’ Category

Debugging print stylesheets

Simple premise: web sites are designed for the screen, they are meant to be viewed through a computer and that’s about it. Still, most people want to print out a web site at some point and your design probably won’t look very good. Print media strips out all backgrounds and forces a page width so large fixed width sites simply won’t print all their detail.

The simple answer to this is print stylesheets using the media=”print” or @media print options. This is covered in great detail all over the web, and so the basics of print stylesheets won’t be told here. What I’m going to cover is how best to debug those print styles so that you can quickly edit and get a good print stylesheet together.

Why can’t I see you!

My number one issue with debugging print styles is having to use print preview to show what the effects of a print stylesheet will look like. It can take a long time for older browsers (IE6) to render print previews and it’s just not necessary.

Simple remedy: when debugging, make your print stylesheets media=”all” to see live previews of what the effects are.

This isn’t ideal, especially if you’re debugging on a live site (though if you are, you really should get a development environment). So, thankfully, there is an alternative, in the form of the Firefox Web Developer toolbar.

Using the web developer toolbar to debug print stylesheets

In the image above, I’m using the web developer toolbar to display my print styles, reducing my web page to what print preview will see. You should also tick the “persist features” option or you’ll have to keep turning the print stylesheet on each time you visit the page.

This technique has additional benefits, in that Firebug, the web developer’s best friend, picks up the print styles as if they were the only ones available. This allows you to experiment with the stylesheet on the fly, speeding up development time.

What about IE?

Due to the unique way that most developers are funded, you will still have to deal with Internet Explorer. IE 8 is pretty good at print styles, using the “fit to width” option by default, which gets around most of the awkward layout problems. However, IE 6 doesn’t have this facility, so layouts often go wrong. Here’s a few workarounds for common problems:

Pre-requisite

Make yourself an IE 6 only stylesheet. In the spirit of graceful degradation, use conditional comments to target the offending browser with its own stylesheet. This allows you to target IE6’s inflexible width issue without damaging the other stylesheets. Put something like this in your site:

Make all your IE 6 specific changes in this file. As with the first technique, you may want to change the media to “all” to see what happens without using print preview.

My content goes off the page (to the right generally) and doesn’t come back

With a print page in portrait mode, you only get about 70% of the screen space. In this case, content simply overflows off the page and can’t be retrieved. Instructing your users to print in portrait mode alleviates this a little, but isn’t ideal for most clients.

If you have a fixed width layout, start by changing all of these pixel values into percentages. IE printing responds quite well to this in both landscape and portrait. If this doesn’t have the desired effect, consider removing and floated columns that you may have, allowing the sections to naturally flow beneath each other. Whilst this isn’t ideal, it can prevent content loss.

There’s a blank page in my printing / nothing appears when I go to print preview

This is an odd one. This can be caused by improperly clearing floated elements, so check those out. A good way to debug this is to turn off any custom styles that you’ve added (i.e. make sure your main stylesheet is set to screen, or comment it out) and see if the content prints. If it does, build your stylesheet back up until you find the problem.

If you still don’t see anything, it’s likely there is an in-line style causing the issue. SharePoint has tendency to add “height: 100%” to a few elements, which to most browsers means absolutely nothing, but IE6 takes seriously. Set that to “height: auto;” and you should get all of your content back again.

I’ve got some VML (IE’s Canvas implementation) that I need to hide but can’t

Sad news here, I don’t believe you can hide it in print stylesheets. If anyone knows how to do this, please let me know.

Don’t forget: printing is about the content

A printed page doesn’t have to look beautiful, with rounded corner borders or large images; the content should be laid out simply and should flow correctly. Use these techniques to get that right and all your print styling headaches will go away.

Why tablets aren’t working

Microsoft Courier tabletIt seems like making a tablet computer that is efficient, usable and cost-effective, can be quite a difficult proposition. The Joo Joo, a tablet that everyone wants to love is getting none. The Courier will never see daylight. The EeePad is delayed and most surprisingly, the Microsoft lauded HP Slate has been canned.

Only the iPad survives, and you still can’t get one outside of the states. Apple must be delighted that its competitors are falling by the wayside, giving it the whole market to itself.

Why have the others failed? The culprit seems to be a combination of OS, battery life and performance. HP claimed that the Slate, using Windows 7, was not suitable for touch. Its combination with a comparatively power hungry Atom processor meant battery life suffered (3-5 hours reportedly). The Joo Joo suffers from new OS syndrome. Like Android, the first few iterations show promise but stability is lacking and it needs a lot more work. These issues can be resolved, but it needs time and investment.

The Courier is an interesting proposition. Never going past a rendered concept video, its UX and ideas will hopefully make their way into larger screen Windows Mobile 7 implementations.

I believe that this is how tablets should work in real life: a mobile OS on a larger device. They are designed for touch, are low power and can do some remarkable things.

I’m going to be excited when the first Android and WM7 tablets arrive. If, as hoped, the Slate becomes a Web OS device, the market, completely dominated by the iPad, will have competition. The tablet isn’t dead; it’s just been approached in the wrong way. Apple is leading the way as usual, and everyone is playing catch up. They will get there eventually, as they did in the wake of the iPhone. I’m looking forward to the competition.

Executive Summary: Flash vs HTML5

Flash CS5 boxSo, infamously, the iPhone OS doesn’t support Flash, encouraging its users to use the advantages of the webkit-based Safari to overcome any challenges that a lack of Flash can present. Last year, Adobe announced that in Flash CS5, you’d be able to convert it to run on the iPhone. In April, with a revised iPhone developer agreement, Apple put the brakes on, saying only apps written in one of three languages would be accepted on the App store. Adobe’s solution would compile directly to the CPU bytecode, hence being illegal.

Adobe weren’t too pleased about this, yet launched the product anyway, hoping Apple would change its mind. Since then, Steve Jobs wrote an open letter, explaining their position, claiming six points:

  1. Flash is closed source (like the iPhone), HTML5 is open
  2. Flash is the number one cause of crashes on OS X
  3. Flash is not designed for touch
  4. Need to maintain app quality on the store
  5. HTML5 can do everything that Flash can
  6. Battery life suffers

In the letter, there’s a bit of pretending that the iPhone is the only phone in the market, but otherwise, in my opinion, it’s accurate.

Adobe’s response was somewhat deluded; laughing that Flash wasn’t an open platform (someone should break the news to Adobe’s CEO) and saying that Flash 10.1 will ship to mobile devices later this year, focusing on multi-platform development. Adobe’s CEO also points that Apple’s developer restrictions are cumbersome and have nothing to do with the technology.

Even worse for Adobe, Microsoft has weighed in, saying HTML5 is the future of the web.

So, who’s on the right side? I believe that Apple have got it right this time, even implementing a half-finished specification is better than a platform that Apple have no control over, especially when the user experience is so important for the iPhone’s success. HTML5 genuinely can do everything Flash can, and do it all on hardware. It goes beyond Flash with geo-location and JavaScript access to more hardware features like the accelerometer and camera.

Personally, Adobe needs a re-think of their strategy. Flash enjoyed enormous success as a video player (thanks to YouTube) but they should have seen HTML5 coming. It’s been on the cards since the first iPhone in 2007 and Adobe has done through an entire release cycle (CS5) with little though for HTML5. If they’re smart, which they are, Flash CS6 will be able to create SVG graphics and Canvas apps using web databases and fonts, having Flash fallbacks for non-HTML5 capable browsers. Dreamweaver will have HTML5 structure tags available and Illustrator and Photoshop will do SVG too.

If Adobe don’t keep up with developers, the devs will simply find other tools to use. Adobe can avoid this, and it’s in their hands.

Facebook Logins with Facebook Connect

Facebook ConnectThis is a follow-up to one of my most popular posts, “Getting a Facebook Login working with your application“. That was written in 2007, and is quite out of date.

This entire post was inspired by a reader who e-mailed me asking for help. I’m more than happy to help someone who is learning. It makes the whole thing worthwhile.

In May 2008, Facebook announced “Facebook Connect”, a Trusted authentication method so that user’s profiles can be used on other sites. My 2007 article pretty much does what Facebook Connect does for you now, but Facebook have made it much easier. To get started, take a look at the Facebook Connect web pages and more specifically, the single sign-on guide.

A few things of note:

  1. This does not replace your current login system. You still need a user database
  2. People still need to click “connect” and you cannot use general session/cookie information to simply log in without interaction.

Facebook claims it gives you 15% more registrations, so what are you waiting for, get started!