Tag Archives: CSS3

iPhone Web App Development

Filed under Apple, Web Developement

The Apple iPhone is currently the best selling mobile in the world, it is estimated that the UK has 2 million iPhone users alone. There are a growing number of people who are using their iPhone or mobile to browse the web.  Should you make provisions for your website to be mobile friendly? This post outlines some ideas to create an iPhone friendly website or “web app”.

Image credit

There are two methods of developing web apps for the iPhone, the first way is by creating dedicated web pages for use by the iPhone.  The other way is to utilise a JavaScript framework plugin like JQTouch (  JQTouch is a plugin for the popular JQuery JavaScript framework.

Which method that you use depends on your overall goal, if you are looking to create a website that mimics a native app, for example, that emulates the iOS user interface or even supports gesturing then I would be recommended  using the JQTouch project, doing this cut down on the required development time.

If your requirement is for just an iPhone friendly website then developing a mobile version of website using HTML5 and CSS3 maybe the best solution. This solution may also mean that you can allow for cross-browser compatible and make you website “work” with other mobile device like Android or Black Berry.

Why not take a look at this website good source of inspiration when designing site for mobile visitors. Also example of iPhone web apps can be found on Apple’s website .

Safari the iPhone’s default web browser uses the Webkit as it’s rendering engine, this displays most web page and website very well, even those sites that have not been design with the iPhone in mind look good. As you may have heard there is an on-going disagreement between Apple and Adobe over Flash, the iPhone does not support Adobe Flash.  Normally webmasters would use Flash when integrating video into their site, as the iPhone does not support flash then HTML5 need to be used to embed videos. In fact HTML5 and CSS3 provide a powerful duo, Apple have create this mini-site: to demonstrate the features of Safari (Webkit), HTML5 and CSS3 – please note that it is blocked to non-Safari browsers. The battle between Apple and Adobe over Flash has meant that Silverlight support has been overlooked, like Flash, Silverlight is not support by the iPhone.

Developing a iPhone friendly website using the JQTouch project are the outside scope of this post, however if this something that appeals to you but you do not have the in-house expertise then please feel free to get in touch to discuss your individual requirements. As discussed, we will however demonstrate some simple ideas and provide some sample code on how to make your website more interesting and friendly for your iPhone visitors.

For your iPhone visitors, you may decide to use smaller images – so they loaded quicker if they are using a mobile connection, larger fonts – so that the content is easier to read with needing to zoom in, or even make allowances for device orientation. In order to this you first need to detect if your visitor is using a iPhone, this can achieved by using the code below:


$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
if ($browser == true)
echo 'You are using an iPhone';



if ( (navigator.userAgent.indexOf('iPhone') != -1) ) {
document.location = "iphone.html";

Most webmasters and developer choose to re-direct iPhone visitors to a different page or area of their site. Some people set up a dedicated sub-domain for mobile visitors ( others create a sub folder for all mobile content ( It all depends on personal preference or the facilities offered by your hosting provider.

Frequent website visitors may decide to bookmark your site or even add a shortcut to their home screen. The code below is used to create a custom home screen icon:

<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>

As discussed earlier the iPhone uses a Webkit browser this allows you to easy style web forms to look like native iPhone apps. Below is an example image of what can be achieved. Take a look at for some more examples.

The iPhone screen is 320 x 480 pixels. If you do not want people to have to use the zoom function in order to read text or view an entire picture, consider restricting your pages to the limitations of the iPhone’s screen size. The code below prevents the visitor from being able to zoom in and out.

&lt;meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /&gt;

Use of separate style sheets for different orientation can also benefit user experience. Below is an example of how to use different style sheet:

<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">

Native apps often take longer to load but are much more responsive once loaded. To emulate this behaviour, you could use anchors in a single HTML or PHP file. A JavaScript framework like JQuery and jQuery UI will allow you hide or unhide content as required. A good example of this would to be use Accordion which can be found here.

I hope this post has given you a flavour of whats required when developing web apps for the iPhone or other mobile devices. In a upcoming post we intend to expanded on the techniques outlined here.

Cross-browser support for different rendering engines

Filed under Web Developement

Web developers are often faced with the problems associated with developing a cross-browser website or application, those developers planning to use new HTML5 and CSS3 mark-up will also have to ensure that they cater for different rending/layout engines like Webkit (Safari, Chrome) or Gecko (Firefox).

Here are a few CCS examples:


-moz-linear-gradient (left, red, silver); 

webkit-gradient (linear, left center, right center, from(red), to(silver));


-moz-box-shadow: 5px 5px #818181;

-webkit-box-shadow: 5px 5px #818181;

/*Border corners*/

-moz-border-radius: 9px 3px 9px 3px;

-webkit-border-radius: 3px;
-webkit-border-top-left-radius: 9px;
-webkit-border-bottom-right-radius: 9px;