業務でGMOグループの「カラーミーショップ」の構築を行いました。
既存のテンプレートを使うのではなく、ゼロからレスポンシブ対応のコードを書いて制作しました。一通りコーディングが終わり、さぁ動作確認しようと思い、respond.jsを読み込ませてIE8で動作確認しようとしたのですが、どうやってもレスポンシブにならない。
respond.jsというのはIE6~IE8にもメディアクエリを有効にするためのJavaScriptで書かれたポリフィルのことです。scriptタグで読み込むだけで、CSSファイルに記述されたメディアクエリを有効にさせることができます。
カラーミーショップでも自由にscriptタグを書くことはできるので動作できるはず、と思ったのです無理でした。そこでrespond.jsの動作条件についていろいろ調べてみると、resond.jsにはいろいろと制約があることがわかりました。
・HTML内のstyle要素は対象外
・CSSファイル内の@importは無効
・link要素に rel=”stylesheet” を記述すること
・属性セレクタの記述をすると無効になる
・ローカルでは動作しない
・CSSファイルはHTMLと同一のサーバーに置く
・media属性はHTMLかCSSどちらかだけにする
・BOM付きのUTF-8だとダメ
などなど。これまであまり意識してなかったのですが、こんなに条件があるんですね。
さて、このrespond.jsがカラーミーでは動作しないという問題ですが、カラーミーの仕様上、以下の点に問題がありそうです。
・CSSファイルはHTMLと同一のサーバーに置く
カラーミーでは同じページだったら、管理画面の同じページでHTMLとCSSを設定できるのですが、記述したCSSファイルの設置されるサーバーがカラーミーのホームページとは違うサーバーに設置されてしまいます。
CSSファイルは、
http://imgXX.shop-pro.jp/***********************
のようなドメインのサーバーにおかれています。このドメインとショップのあるサーバーのドメインが異なるため、respond.jsが動作しないというのが原因です。
ということで、カラーミーショップでレスポンシブ対応のショップを作る場合には、IE6~IE8をメディアクエリに対応させることはあきらめるしかなさそうですね。やれやれ・・・