• 締切済み

docomoで.phpのファイルでcssを利用したい

web制作をしており、現在3キャリア共通で見られる携帯サイトを作成している最中なのですが、docomoでCSSが適応されずほとほと困り果てています。 内容としては3キャリア(docomo,au,softbank)対応の携帯サイトを作成し、PCでも確認が可能にしたいです。 実際のサイトはhttp://kk-***.com/index.phpで、docomo以外では問題なく見れる状態です。 3キャリア共通なので、http://dspt.blog59.fc2.com/blog-entry-57.htmlの絵文字変換スクリプトを利用しており、他のページにもphpが必要な部分もあり、全てのページを.phpで作成しています。 .phpでcssを利用する場合は.htaccessの利用ではなくページ内に header('Content-type: application/xhtml+xml'); を直接記述する必要があると知り、足しましたがやはりdocomoではcssが適応されません。 実際のソースは以下になります。 ■■■■■■■■■■■■■ <?php if (strpos('DoCoMo', $_SERVER['HTTP_USER_AGENT']) !== FALSE) { // docomo header('Content-type: application/xhtml+xml'); } else { // docomo以外(PCなどで確認をしたい為の振り分け) header('Content-type: text/html'); } ?> <?php echo "<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>\n"; ?> <?php //共通ファイルの読み込み(絵文字変換スクリプト) include_once './include/commons.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> ■■■■■■■■■■■■■ これ以降はmetaタグやbodyタグになっており、実際のページでソース表示でも確認できる内容です。 長文大変申し訳ありませんが、どなたか助けて頂けませんでしょうか。どうしても自分では解決策がみつかりません。 ちなみにi-modeシミュレーターではちゃんと表示されますが、実機で確認するとCSSが適応されていない状態です。

みんなの回答

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

使っているドコモの機種は何ですか? 機種によって機能に差があります。 たぶん、ドコモで使えない属性を使っているのが原因でしょう。 ドコモは制約が多いから、ドコモのサイトを見て直したほうがいいです。

ryouta0616
質問者

お礼

さっそくのご回答ありがとうございます。 実際のサイトのリンクがなぜか文字化けをおこしていたので再度書きます。 サイトは http://***.com/ になります。 使えない属性を使っているとのご指摘でしたので、 ぱっと見ヘッダー内の書き方は問題ないという事なのでしょうか。 例えば<body>内に使用できない属性等が一部ある事で、全てのCSSが適応されないという現象って起こりうるのでしょうか。 使用しているタグは div,img,a,span,form,select,option,input,table,td,tr ですので特にdocomoでも問題ないかと思われます。 ただ改めて確認した所cssにはbackgroundなど一部docomoで反映されないものもありそうです。 ただcssなどで対応できないものはその部分のみスタイルが反映されずに表示されると思うんです。 またphp部分の記述を全て削除し、.phpを.htmlに変更するとdocomoでも問題なくcssが反映された状態で表示されます。 ですので、やはり問題は拡張子が.phpである事によりMIMEタイプが反映されていないのが原因だと思うんです。 ただどのサイトにもheader関数で指定する事により解決できると書かれております。 if (strpos('DoCoMo', $_SERVER['HTTP_USER_AGENT']) !== FALSE) { // docomo header('Content-type: application/xhtml+xml'); } の記述がおかしいのでしょうかね。。 なんにせよ返答ありがとうございました。もう一度試行錯誤してみます。

ryouta0616
質問者

補足

すみません。自己解決しました。 やはりヘッダー関数が問題だったようで、 if (strpos('DoCoMo', $_SERVER['HTTP_USER_AGENT']) !== FALSE) { // docomo header('Content-type: application/xhtml+xml'); } else { // docomo以外(PCなどで確認をしたい為の振り分け) header('Content-type: text/html'); } から header('Content-type: application/xhtml+xml'); に変更したらなおりました。すみません。 ただこれだとPCの表示の際に開業や画像のサイズが一部違ったように表示されてしまう為、 docomoだけに適応させたかったんですが、、 記述に間違いがあるのかもしれません。再度検証してみます。

関連するQ&A