簡単な方法でやりたかったので、単純にユーザーエージェントで分岐させる方法を。
PHPの場合
まず下記のような関数を定義します。
/* iPhoneの場合 */
function is_iphone () {
$_ret = false;
if ( preg_match( '/iPhone/i', $_SERVER['HTTP_USER_AGENT'] ) ) {
$_ret = true;
}
return $_ret;
}
/* iPadの場合 */
function is_ipad () {
$_ret = false;
if ( preg_match( '/iPad/i', $_SERVER['HTTP_USER_AGENT'] ) ) {
$_ret = true;
}
return $_ret;
}
/* iPodの場合 */
function is_ipod () {
$_ret = false;
if ( preg_match( '/iPod/i', $_SERVER['HTTP_USER_AGENT'] ) ) {
$_ret = true;
}
return $_ret;
}
/* iphone, ipad, ipodいずれかの場合 */
function is_ios () {
$_ret = false;
if ( is_iphone() || is_ipad() || is_ipod() ) {
$_ret = true;
}
return $_ret;
}
iPhoneにだけCSSを適用したい場合は下記のような感じで。
<head> <?php if ( is_iphone() ) : ?> <link rel="stylesheet" type="text/css" href="css/iphone.css" /> <?php endif; ?> </head>
JavaScriptの場合
PHPが使えない環境の場合はJavaScriptを利用します。まず下記のような関数を定義します。
/* iPhoneの場合 */
function is_iphone () {
var _ret = false;
if ( navigator.userAgent.match( /iPhone/i ) ) {
_ret = true;
}
return _ret;
}
/* iPadの場合 */
function is_ipad () {
var _ret = false;
if ( navigator.userAgent.match( /iPad/i ) ) {
_ret = true;
}
return _ret;
}
/* iPodの場合 */
function is_ipod () {
var _ret = false;
if ( navigator.userAgent.match( /iPod/i ) ) {
_ret = true;
}
return _ret;
}
/* iphone, ipad, ipodいずれかの場合 */
function is_ios () {
var _ret = false;
if ( is_iphone() || is_ipad() || is_ipod() ) {
_ret = true;
}
return _ret;
}
iPhoneにだけCSSを適用する場合だと下記のような感じです。head要素の末尾にappendでlinkタグを追加します。記述を簡単にするためjQueryを使用しています。
/* 要jQuery */
$(function(){
if ( is_iphone() ) {
$('head').append( '<link rel="stylesheet" type="text/css" href="css/iphone.css" />' );
}
});
JavaScriptを使った記述だと冗長になるのと、JS内にlinkタグを記述しないといけないのが気持ち悪い。PHPのほうはHTML内に分岐処理を記述できるので直感的。個人的にはPHPで処理したほうが見やすいかなぁと思います。