I started playing around with Safari’s CSS gradients yesterday to see whether they would be usable on One tsp.’s mobile interface. Looks like there has been support in WebKit for about a year now, but I don’t know specifics about how that translates to versions of Safari and other browsers built on top of WebKit.
The demos seemed to work for me in Safari 4 and in the latest version of mobile Safari built into the iPhone 3.0 OS. I tested the 2.0 OS and it did not support gradients. I don’t know what support the Palm Pre browser has available.
This looked good enough for me, through. Much of the interface for One tsp. is already taking advantage of a few CSS extensions with varying support. The interface looks its best on modern browsers (IE excluded) but is still totally usable everywhere else.
So what’s the difference?
I’ve only replaced one gradient background so far, but I’m stunned. By defining the gradient in CSS, I’ve added just 92 bytes to my style sheet. This allowed me to remove the background-image rule I had in place to load an image file, which was 50 bytes. The image file that is no longer needed was pretty small (635 bytes) but also meant another external request that needed to be made. When we’re talking about a mobile device, extra requests can have a high latency — worse than what we typically think of for the web.
These are pretty small numbers, I’ll admit. But assuming I have six gradients defined per page, the net savings would be trading around 4 KB and six additional requests for about 260 bytes and no additional requests. That’s pretty cool.
Faster Mobile Interfaces
Successful mobile web applications need to be super fast. Users trading a native app for a web app will expect it to be responsive. Speed can be improved through faster server responses, low mobile network latency (which we have little control over), fewer and smaller requests to the server, and cacheability on as much content as possible.
Rounded corners and background gradients are two frequently used interface styles that can now be achieved directly in the browser using CSS, eliminating the need for many additional image requests.