• 締切済み

jquerymobileのページ遷移のような遷移

いつもお世話になっております。 jquerymobileのページ遷移のような遷移を行いたいのですが、 イメージ(スライドはしなくても可) URL:http://billboardtop100.net/jquery_mobile/slide/slide.html 流れとしては、ページローディングしている最中、画面がオーバーレイしながら、 ローディングのアニメーション画像を表示し、 ロードが完了したら、スライドしてURL先へリンクする というイメージなのですが(スライドはしなくても可) ajaxとかそういう技術を使わないと、スムーズに遷移しないのでしょうか、、 以下に作ってみたサンプルを記載しますが、 単純にオーバーレイしてからリンク先へアクセスしているので、 読み込みも遅くなりますし、以下のコードだと、ロードの画像が真ん中にきません、、 そして画像を隠す動作が一瞬ちらついてしまいます、、、 html <div id="shade"><img src="/img/ajax-loader.gif" alt="ローディング中"></div> <section data-role="content"> <ul data-role="listview"> <li><a href="/aboutus.html" data-transition="slide">hoge</a></li> <li><a href="sample.html" data-transition="slide">hoge2</a></li> <li><a href="sample.html" data-transition="slide">hoge3</a></li> </ul> </section> js jQuery(function(jQuery){ jQuery("#shade").css({ opacity: '0.6', display: 'none', position: 'absolute', top: '0', width: '100%', height: '100%', background: '#000', zIndex: '1' }); jQuery("a[href]").click(function(e){ link = jQuery(this).attr("href"); if (!link.match(/#/i)) { e.preventDefault(); jQuery("#shade").css('display', 'block'); } }); }); カッコいいページ遷移がしたいです。。 是非ご教授下さい。 どうぞよろしくお願いします

みんなの回答

回答No.1

結論を言えばYesです。 jQueryMobile などのシームレスな画面遷移の仕組みをざっと箇条書きにすると次のようになっています。 1. ユーザーがリンクをクリックする 2. クリックイベントが発動 リンク先などのチェックをする $('a').click() 3. ページローディングを開始  $.ajax 、$.getなど 4. ローディング表示  $.ajaxのbeforeSendなど 5. 読み込んだコンテンツをページ表示用要素にappend  $.ajaxのsuccessなど 6. 5で作った要素をbodyにappend 7. ローディング消す 8. ページ遷移アニメーション開始 元のページ要素を左へ移動→非表示にする   新しいページ要素を右から移動→中央へ 普通のリンクのようにページ移動しているわけではなく、 ページの中身を読み込んで表示しているページに追加して移動してるっぽく見せています。 あと、jQueryMobileなどではCSS3アニメーションを主に使っています。 この仕組みはjQTouchのソースを見る方が分かりやすいです。 質問で書かれたソースだとローディング表示がローディング中に行われず、 その意味を成していないという問題がありますので、ローディングを常に表示しておいて、 ページの読み込みが終わった時にそれを消す方がまだマシじゃないかなと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • モーダルウィンドウでページ内遷移する方法

    remodal.jsを利用して開いたモーダルウィンドウから、元ページ内遷移するようにリンクを設置した場合、クリックで遷移と同時にモーダルウィンドウを消す方法をご存知でしたら教えていただけますでしょうか。 モーダル内のhtml抜粋 <ul> <li><a href="#hoge">ほげ</a></li> <li><a href="#hoge2">ほげ2</a></li> </ul> remodal.js https://github.com/VodkaBears/Remodal

  • jqueryの構文について

    はじめまして、最近jqueryの勉強を始めました。 セレクタを変数で指定した場合の子要素の取得の仕方がわからず、困っています。 アドバイスいただけませんか? <html> <head> <title></title> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> <script> $(document).ready(function() { $("#next").click(function () { //下のように書いてみたのですが動きません。 var next_slide = $("#slide01").next(); $(next_slide).text("hoge");//これは動きます var img_url = $(next_slide > a).attr("href");//エラーを起こします alert(img_url); return false; }); }); </script> </head> <body> <ul> <li id="slide01"><a href="url01">スライド01</a></li> <li id="slide02"><a href="url02">スライド02</a></li> <li id="slide03"><a href="url03">スライド03</a></li> </ul> <a href="#" id="next">次へ</a> </body> </html> 要は次の要素の子要素にアクセスしたいのです。 ご教授のほどよろしくお願いしますm(_ _)m

  • PHPで同一ページ内でページの読み込みについて

    ナビゲーションから、リンクをクリックすると、ページが読み込まれるプログラムを作っているのですが、どのようにすればよいのでしょか?さっぱりわかりません。アドバイスお願いします。 ↓参考 //ナビゲーション <ul> <li><a href="#">リンク1</a></li> <li><a href="#">リンク2</a></li> <li><a href="#">リンク3</a></li> <li><a href="#">リンク4</a></li> </ul> //リンク1がクリックされたら、これを表示したい。 <?php require("hoge1.php"); ?> //リンク2がクリックされたら、これを表示したい。 <?php require("hoge1.php"); ?> //リンク3がクリックされたら、これを表示したい。 <?php require("hoge1.php"); ?> //リンク4がクリックされたら、これを表示したい。 <?php require("hoge1.php"); ?> ↓イメージ図 index.php内でページの読み込み --------------------------------- | ヘッダー | --------------------------------- --------------------------------- |リンク1|リンク2|リンク3|リンク4| ---------------------------------- ここでページの読み込み --------------------------------- | フッター | --------------------------------- 宜しくお願いします。

    • ベストアンサー
    • PHP
  • アコーディオンパネルで複数のリンクを展開する方法

    こんばんわ。Jquery超初心者です。 Jqueryでアコーディオンパネルを実装しようとしているのですが、Jqueryの指定に問題があるようで、 開きません。以下コードです。 (HTML) <ul class="slide"> <li><a href="">窓口業務</a> <ul> <li><a href="">menu 1-1</a></li> <li><a href="">menu 1-2</a></li> <li><a href="">menu 1-3</a></li> </ul> </li> <li><a href="">異動業務</a> <ul> <li><a href="">menu 2-1</a></li> <li><a href="">menu 2-2</a></li> <li><a href="">menu 2-3</a></li> </ul> </li> <li><a href="">検針業務</a> <ul> <li><a href="">menu 3-1</a></li> <li><a href="">menu 3-2</a></li> <li><a href="">menu 3-3</a></li> </ul> </li> <li><a href="">調定業務</a> <ul> <li><a href="">menu 4-1</a></li> <li><a href="">menu 4-2</a></li> <li><a href="">menu 4-3</a></li> </ul> </li> </ul> (JQuery) $(function () { $("ul.slide li ul").hide(); $("ul.slide li").click(function () { $("ul.slide li").each(function () { if ($("ul.slide li").css("display")=="none"){ $("ul.slide li ul"). slideDown(); } else { $("ul.slide li ul").slideUp(); } }); }); }); eachの使い方が間違っているのか、はたまた何か足りない記述があるのか、途方に暮れています。 何かお気づきの方、ご指摘の程宜しくお願い致します。

  • Query Mobile でのページ遷移アニメ

    jQuery Mobile でのページ遷移アニメーション(data-transition)についての質問です。 通常のフォームのサブミットボタンでページ遷移をした場合はアニメーションするのですが、JavaScriptの document.forms[0].submit(); でページ遷移をしようとすると、アニメーションが効きません。 私だけでしょうか・・・ ちなみに、どうしても JavaScriptの document.forms[0].submit(); 関数でサブミットしなければなりません。(理由は長くなるので省略します) また、 document.forms[0].submit(); return false; としても、同様にページ遷移のアニメーションは効きませんでした。

  • hrefでのページ遷移とscript読み込みについて質問です。

    hrefでのページ遷移とscript読み込みについて質問です。 file:///C:/homepage/main.html というhtmlファイルの中に<li><a href="next.html">aaa</a></li> というリンクを作り、これをクリックすると、 URL欄に file:///C:/homepage/main.html#next.html と表示され、next.htmlの<script>内に記述されているjavaスクリプトが読み込まれません。 URL欄ににfile:///C:/homepage/next.html と直で入力するとスクリプトは読み込まれます。 URLがfile:///C:/homepage/next.htmlに遷移されるようにし、 きちんとスクリプトも読み込まれるようにするにはどうしたらいいでしょうか? ブラウザはFireFox 3.6を使用しています。 ご回答宜しくお願いします。

  • jQuery Mobileでのページ遷移、挙動

    jQuery Mobileを使ってスマートフォン用のサイトを作成しています。 ページ遷移時の挙動が直せなくて困っています。 1つのHTML内に複数のページを作るやり方ではなくて、 リンクには rel='external' フォームには data-ajax='false' をつけて、 Ajaxでのページ遷移を行わないようにしているつもりです。 で、おかしな挙動なのですが、 1.AのページからリンクをクリックしてBのページを表示する。 2.ブラウザの戻る機能でAのページに戻る 3.再びリンクをクリックしてBのページを表示する。 このとき、Bのページが表示された後、「Loading」というメッセージが表示され、 Aのページを表示してしまいます。(AのページをAjaxで読み込んでいるか、 Bのページが何らかで非表示になっているように思えます) $.mobile.ajaxLinksEnabled = false; という設定も試してみたのですが、 特に変化はありませんでした。 この解決策を教えてください。 出来れば、jQuery Mobileのデザイン関連だけ使って、ページ遷移絡みは 使いたくないという気持ちです。

  • window.openで同画面遷移しない

    window.openで別窓でウィンドウを開き、開いたウィンドウは親ウィンドウにあるリンク1、リンク2、リンク3をクリックすると別窓で開いたウィンドウが同画面遷移で変わるようにしたいのですが、IEで各リンクをクリックすると新規ウィンドウが立ち上がってしまいます。Firefoxでは問題ないのですが。 <head>~</head>内に以下のjavascriptを書きました。 <script type="text/javascript"> <!-- function winOPEN(URL,winName) { window.open(URL, 'window1', 'width=400, height=300, menubar=no, toolbar=no, scrollbars=yes'); } // --> </script> またリンクのhtmlは以下のようにしました。 <ul> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク1</a></li> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク2</a></li> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク3</a></li> </ul> どこがいけないのでしょうか。教えてください。

  • ページ内に複数のJQueryスライドを設置したいが

    JQuery勉強中の初心者です。1ページ内に同じタイプのスライドショーを4つ設置しようとしていますが、上手く表示されません。 使用しているのは、Galleriaのクラッシックデーマ(下記URLと同一のもの)です。 http://galleria.io/themes/classic/ これをJQueryでオーバーレイさせ、オーバーレイ表示上にGalleriaのスライドを設置しています。 ページ内にはギャラリーを表示するための4つの画像ボタンがあり、そのボタンをクリックすると、オーバーレイ表示上にそれぞれ違うスライドを表示します。 下記のソースのような記述をしています(文字数の関係で、下記ソースの画像ボタンは2つにしています。)。 しかし、<div id="btn1">~</div>をクリックすると、 オーバーレイ表示上にギャラリーが表示されることはされるのですが、5秒後ぐらいに ギャラリー画面上に 「Fatal error: Could not extract a stage height from the CSS. Traced height: 0px.」 と表示されます。 どうしてもこのスライドショーを使用したいので、お盆休み中に格闘しましたが、 どなたか分かる方がおられましたら、解決方法をお教えいただけないでしょうか。 何卒よろしくお願いします。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" id="camera-css" href="../common/css/galleria.classic.css" media="all"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js?ver=1.8.3"></script> <script src="../common/js/galleria-1.2.9.min.js"></script> <script> /* オーバーレイ表示用のcss */ <style type="text/css"> #btn1,#btn2 { display:block; width: 420px; height: 281px; cursor: pointer; } #overlay1,#overlay2 { display: none; width: 100%; height:100%; position: fixed; top: 0; z-index: 100; background: rgba(0,0,0,0.8); } #close1,#close2 { width: 80px; cursor: pointer; position:absolute; top:50px; right:0; } </style> </head> <body> <div id="overlay1"> /* オーバーレイ用のボックス */ <div id="galleria"> /* 1つ目のスライドショー用のボックス */ <a href="../common/img/photo/t1.jpg"><img src="../common/img/photo/thumb/t1.jpg",data-big="../common/img/photo/t1.jpg"></a> <a href="../common/img/photo/t2.jpg"><img src="../common/img/photo/thumb/t2.jpg",data-big="../common/img/photo/t2.jpg"></a> <a href="../common/img/photo/t3.jpg"><img src="../common/img/photo/thumb/t3.jpg",data-big="../common/img/photo/t3.jpg"></a> </div><!-- #galleria --> <p id="close1"><img src="../common/img/photograph/slide/close.png" alt="close"></p> </div><!-- #overlay1 --> <div id="overlay2"> /* オーバーレイ用のボックス */ <div id="galleria1"> /* 2つ目のスライドショー用のボックス */ <a href="../common/img/photo/s1.jpg"><img src="../common/img/photo/thumb/s1.jpg",data-big="../common/img/photo/s1.jpg"></a> <a href="../common/img/photo/s2.jpg"><img src="../common/img/photo/thumb/s2.jpg",data-big="../common/img/photo/s2.jpg"></a> <a href="../common/img/photo/s3.jpg"><img src="../common/img/photo/thumb/s3.jpg",data-big="../common/img/photo/s3.jpg"></a> </div><!-- #galleria --> <p id="close2"><img src="../common/img/photograph/slide/close.png" alt="close"></p> </div><!-- #overlay2 --> /* オーバーレイ用と、オーバーレイ表示を閉じるボタン用のスクリプト */ <script type="text/javascript"> $(function() { $("#btn1").click(function() { $("#overlay1").fadeIn(); }); $("#btn2").click(function() { $("#overlay2").fadeIn(); }); $("#close1").click(function() { $("#overlay1").fadeOut(); }); $("#close2").click(function() { $("#overlay2").fadeOut(); }); }); </script> /* ギャラリーをオーバーレイ表示するためのボタン */ <div id="container" class="clearfix"> <div id="btn1"><img src="../common/img/photograph/no1_tbt.jpg" alt="" class="item"></div> <div id="btn2"><img src="../common/img/photograph/no2_bali.jpg" alt="" class="item"></div> </div> /* ギャラリー用オプション&JQuery呼び出し用 */ <script> // Load the classic theme Galleria.loadTheme('../common/js/galleria.classic.min.js'); option = { width: 900, // 幅 height: 600, // 高さ imageCrop: false, // 画像のクロップ有無 // true:width/heightにフィットさせるように画像を切り取って表示 // false:画像を全体表示させるように縮小 transition: 'fade', // 画像の遷移イフェクト _toggleInfo: false, // imgのalt属性を取得してキャプションとして表示 // true:キャプションの非表示 // false:キャプションの表示 } // Initialize Galleria Galleria.run('#galleria',option); Galleria.run('#galleria1',option); /* ←idを分けてみたりしました。 */ </script>

  • jQueryMobileでテキスト分岐ゲーム

    JavaScript&jQuery初心者です。 JavaScriptの勉強のために、jQueryMobileを使って、スマホ向けの簡単なテキストゲームを作ってみましたが、変数で処理の分岐のさせ方がわかりません。 ページがロードされたときに、have_mapが決まってしまいます。 以下のサンプルだと、常に地図を手に入れた状態で宿屋に行けてしまいます。 ボタンの選択によって、状態を変数に入れて、分岐などに使いたいのですが。。。 そもそも、変数定義の流れがよく分かっていないのだと思うのですが。。。 アドバイスがいただけるとうれしいです。 よろしくお願いいたします。 コードはこちらになります。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ChooseAvatar</title> <!-- jQuery MobileのCSSを読み込む --> <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0-rc.2/jquery.mobile-1.1.0-rc.2.min.css" /> <!-- jQuery本体を読み込む --> <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> <!-- jQuery MobileのJSを読み込む --> <script src="http://code.jquery.com/mobile/1.1.0-rc.2/jquery.mobile-1.1.0-rc.2.min.js"></script> </head> <body> <script> var have_map = 0; </script> <div id="page1" data-role="page"> <div data-role="header" > <h1>質問1</h1> </div> <div data-role="content" align="center"> <p> 宝箱を見つけた<br> </p> <p> <a href="#page2" data-role="button">開ける</a> <a href="#page3" data-role="button">開けない</a> </p> <script> have_map = 0; </script> </div><!-- /content --> <div data-role="footer"> <h4>sample</h4> </div><!-- /footer --> </div><!-- /page --> <div id="page2" data-role="page"> <div data-role="header" > <h1>宝箱</h1> </div><!-- /header --> <div data-role="content" align="center"> <p> 地図を手に入れた<br> </p> <p> <a href="#page3" data-role="button">先に進む</a> </p> <script> have_map = 1; </script> </div><!-- /content --> <div data-role="footer"> <h4>sample</h4> </div><!-- /footer --> </div><!-- /page --> <div id="page3" data-role="page"> <div data-role="header" > <h1>分かれ道</h1> </div><!-- /header --> <div data-role="content" align="center"> <p> 分かれ道です<br> </p> <p> <script> //alert(have_map); if( have_map === 1 ){ have_map_text_A = "宿屋に入る"; have_map_text_B = "お店に入る"; }else{ have_map_text_A = "右に進む"; have_map_text_B = "左に進む"; } document.write("<a href='#page4' data-role='button'>"+have_map_text_A+"</a>"); document.write("<a href='#page5' data-role='button'>"+have_map_text_B+"</a>"); </script> </p> </div><!-- /content --> <div data-role="footer"> <h4>sample</h4> </div><!-- /footer --> </div><!-- /page --> </body> </html>

このQ&Aのポイント
  • MFC-J739DNでのプリントトラブルについて相談です。急にiPhoneからPDFがプリントできなくなりました。お使いの環境はiOS16.1.1で無線LAN接続です。関連するソフト・アプリはMobile connectで、電話回線はdocomoです。
  • ブラザー製品のMFC-J739DNでのトラブルです。急にiPhoneからPDFをプリントできなくなりました。お使いの環境はiOS16.1.1で無線LAN接続です。関連するソフト・アプリはMobile connectで、電話回線はdocomoです。
  • MFC-J739DNでのプリントトラブルに関する質問です。iPhoneからPDFをプリントできなくなりました。お使いの環境はiOS16.1.1で無線LAN接続です。関連するソフト・アプリはMobile connectで、電話回線はdocomoです。
回答を見る

専門家に質問してみよう