レスポンシブウェブサイトを作りたいです。ブラウザがモバイルサイズの場合、コンテンツはiPhoneスタイルのリストビューで表示する必要がありますブラウザがデスクトップサイズの場合、コンテンツはタブで表示する必要があります。
これを行うための最良の方法は何ですか? モバイル/デスクトップに別々のファイルを使用したくありません。レスポンシブにしたいと思います。
これが私が行った研究の一部です。
試み1:純粋なCSSソリューション。
CSSはレイアウトを簡単に切り替えることができるメディアクエリを提供するため、純粋なCSSソリューションが最適です。CSSは、タブを作成するためのメソッドを提供します。しかし、それはiPhoneスタイルリストの方法を提供していないようです。(アコーディオンリストでほとんど偽造することができますが、これはユーザーを本物のiPhoneアプリのように別のページに移動させることはありません)。
試行2:Jqueryソリューション(Fiddleを参照)
- Jquery Mobileは、 iPhoneスタイルのリストビューを作成する簡単な方法を提供します
- Jquery UIは、タブを作成する簡単な方法を提供します。
- Enquire.jsは、メディアクエリに相当するJavascriptを提供します。
このフィドルでは、JqueryMobileとJqueryUiを組み合わせてみました。Enquire.Jsは、画面に応じて必要なライブラリを呼び出すために使用されます。
ライブラリが呼び出されると、dom構造が変更されます。したがって、不要なライブラリを削除する必要があります。そうしないと、ユーザーがブラウザのサイズを変更した場合(つまり、モバイルデスクトップを切り替える場合)、未使用のライブラリが破損し、呼び出されたライブラリの競合が発生します。
私のフィドルでは、これを試みましたが、うまくいかないようです:
$(document).ready(function() {
enquire.register("screen and (max-width: 600px)", function() {
$('script[src~="jquery-ui.js"]').remove();
$('link[rel=stylesheet][href~="jquery-ui.css"]').remove();
$('head').append('<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css" />');
$('head').append('<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"><\/script>');
$("#tabs").tabs("destroy");
}).listen();
enquire.register("screen and (min-width: 601px)", function() {
$('script[src~="jquery.mobile-1.0a3.min.js"]').remove();
$('link[rel=stylesheet][href~="jquery.mobile-1.0a3.min.css"]').remove();
$('head').append('<link rel="stylesheet" href="http://code.jquery.com/ui/1.9.1/themes/base/jquery-ui.css" />');
$('head').append('<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"><\/script>');
$("#tabs").tabs();
}).listen();
});
未使用のライブラリが削除されても、新しいライブラリの競合が発生します。また、レイアウトを呼び出す前に、ブラウザのサイズを変更する必要があります。ユーザーがブラウザのサイズを変更しない場合、コンテンツのスタイルは変更されません。
試行3:Dom Cloning(Fiddleを参照)
この試行は試行2と似ていますが、ページの読み込み時にDOMが変数に格納される点が異なります。次に、ユーザーがブラウザーのサイズを変更すると、既存のDOMが保存されているDOMに置き換えられます。ここではメソッドの概要に従いましたが、うまくいかないようです。domは、置き換えられるのではなく、削除されるだけです。
私は解決策を見つけるために髪を引き裂いてきたので、これで助けていただければ幸いです!(私はこれに似た質問をしたことを知っていますが、この新しい質問は新しい投稿を正当化するのに十分異なると感じました。)
試行4:データ属性の動的な割り当て
Jquery mobileは、マークアップのデータ属性を使用してスクリプトを機能させます。これらを動的に適用しようとしたので、ブラウザがモバイルサイズの場合にのみドキュメントに書き込まれます。ただし、ブラウザのサイズを変更しても、デスクトップタブは壊れたままです。