ホームページ » コーディング » jQueryを使ったモバイルアプリの設計/開発者向けナビゲーション

    jQueryを使ったモバイルアプリの設計/開発者向けナビゲーション

    スマートフォンは現在、いくつかの非常に効率的なWebブラウザを装備しています。 JavaScriptはこれまで以上に強力であり、jQueryなどのコードライブラリを利用して拡張することができます。最新のHTML5 / CSS3仕様を追加すると、いくつかの基本的なフロントエンドコードを使って非常に見栄えのするモバイルWebアプリケーションを構築することができます。.

    このチュートリアルでは、モバイルベースのWebサイト/ Webアプリケーションを作成する方法を説明します。特定のデバイスと画面の解像度をターゲットにするためにCSS3メディアクエリを使用します。プラスjQueryの少しはメニューを活気づけ、Ajaxの呼出しを使用して外的なページの内容を荷を積むのを助ける。さらに良いことに、ChromeやFirefoxなどの通常のデスクトップブラウザではレイアウトが適切に表示されるように拡張することさえ可能です。.

    • ライブデモ
    • ソースコード

    ページ構造の定義

    まずHTMLページを見て、CSSルールを使ってスタイルを設定しましょう。ヘッダー内の変わったメタタグは、Webアプリケーションには直接影響しないので、ほとんどスキップします。しかし、私が言及すべきことがいくつかあります。すなわち、以下のスニペットからです。

        

    X-UA互換 特定のブラウザで文書をどのようにレンダリングするかを説明するために使用されます。 HTML5でコーディングするときはおもしろいシナリオなので、これについてあまり気にする必要はありません。しかしメタ ビューポート タグはとても重要です。標準のズーム効果ではなく、モバイルブラウザのウィンドウを100%に設定します。.

    content値でユーザーズームを無効にすることも可能です。 user-scalable = no. しかしこの場合、フルスクリーンの幅をデバイスの幅と同じにしたいだけです。アップルのWebアプリタグを使用すると、WebサイトをホームスクリーンのアイコンとしてiPhoneまたはiPod Touchに保存できます。必ずしも必要ではありませんが、確かに持つ価値があります.

    内部の内容

    bodyタグの内側にIDを持つラッパーdivを設定しました #w. 内部私はIDを使用してレイアウトをさらに2つのdivに分割しました #pagebody そして #navmenu. レイアウト全体が厳密な数になるように、ページ全体の幅は選択によって640ピクセルに制限されています。.

    香港モバイル

    携帯サイトへようこそ!

    ナビゲーションメニューには低いZインデックス値が与えられているので #pagebody 常に一番上です。 JavaScriptコードがページ本体上を一定のピクセル数スライドしてその下のナビゲーションを表示するため、これは非常に重要です。.

    各.htmlページの前にハッシュ記号(#)を使用して、Mobile Safariでの悪い動作を防ぎました。リンクをクリックするたびにURLバーが表示され、コンテンツがプッシュダウンされます。しかし、IDを参照するときは、JavaScript呼び出し以外では何もリロードされません。.

    CSSポジショニング

    CSSコードの中には、混乱を招くような内容はそれほど多くありません。位置決めのほとんどは手動で行われ、その後jQueryを介して操作されます。しかし、私たちの文書にはいくつか興味深い部分があります。.

    / ** @groupコアボディ** / #w #pagebody position:relative;左:0;最大幅:640ピクセル。最小幅:320ピクセル。 z-index:99999。 #w#ナビゲーションメニュー背景:#475566;身長:100%。表示ブロック;ポジション:固定。幅:300ピクセル。左:0px。トップ:0px。 zインデックス:0。 

    この上部セグメントは、ページの両方のセクションのスタイルを定義します。ナビゲーションメニューの幅はわずか300ピクセルなので、ページコンテンツを表示するためのスペースが少し残っています。開閉メニューボタンも左側にあり、いつでもアクセスできます。ここで重要なのは、z-indexプロパティ値と ポジション:固定。 私たちのnavmenuに.

    上部のツールバーヘッダーも興味深いセクションです。これは固定位置に設定されているので、ページの内容とともにスクロールします。これは、iOSアプリのタイトルバーに見られるのと同じ効果を再現しています。.

    / ** @groupヘッダー** / #w #pagebodyヘッダー#toolbarnav display:block;;ポジション:固定。左:0px。トップ:0px。 z指数:9999。背景:#0b1851 url( 'img / tabbar-solid-bg.png')左上には繰り返しがありません。 border-radius:5ピクセル。 -moz-border-radius:5ピクセル。 -webkit-border-radius:5ピクセル。 -o-border-radius:5ピクセル。 border-bottom-right-radius:0。 -moz-border-radius-bottomright:0; -webkit-border-bottom-right-radius:0;ボーダー左下半径:0。 -moz-border-radius-bottomleft:0; -webkit-border-bottom-left-radius:0。高さ:44ピクセル。幅:100%。最大幅:640ピクセル。 #w #pagebodyヘッダー#toolbarnav h1 text-align:center;パディングトップ:10px。右詰め:40ピクセル。色:#e6e8f2;フォントの太さ:太字。フォントサイズ:2.1em。 text-shadow:1ピクセル1ピクセル0ピクセル#313131。 

    モバイルルール

    青いヘッダーバーのテクスチャに背景画像も使用していることに気付くのは簡単です。これは、一貫したレイアウト構造を維持するために640×44ピクセルのサイズです。しかし、私はiPhone / iPadの網膜ディスプレイ用に@ 2xの画像も開発しました。あなたは下の画像の両方を見るか、または私のデモのソースコードからそれらをつかむことができます.

    この機能のためにモバイルCSSを別のファイルに設定します。 respond.css. 網膜デバイスのタイトルバーbgとメニューボタンアイコンを置き換える2つのメディアクエリが含まれています.

    / **網膜ディスプレイ** / @mediaのみスクリーンと(-webkit-min-device-pixel-ratio:2)、スクリーンだけと(min  -  moz-device-pixel-ratio:1.5)、スクリーンだけと( min-device-pixel-ratio:1.5)#w #pagebodyヘッダー背景:#0b1851 url('img/[email protected] ')左上の繰り返しなし。背景サイズ:640ピクセル44ピクセル。 #w #pagebodyヘッダー#menu-btn background:url( 'img / nav-btn @ 2x.png')背景サイズ:53px 30px。 

    メニュー矢印の設計

    ナビゲーション領域には、各メニューリンクの右側に小さな矢印アイコンもあります。これは簡単に任意のクリエイティブコモンズアートワークからの画像と置き換えることができます。しかし、ほとんどすべてのCSS3愛好家はこの方法を試してみるのが好きでしょう。.

    #w#ナビゲーションメニュー:: after content: ";表示:block;幅:6px;高さ:6px;ボーダーライト:3px solid#d0d0d8;ボーダートップ:3px solid#d0d0d8;位置:絶対;右:30px; top:45%; -webkit-transform:rotate(45deg); -moz-transform:rotate(45deg); -o-transform:rotate(45deg); transform:rotate(45deg); #w #navmenu ul li a:hover :: after border-color:#cad0e6;

    私たちは使っています 変形する コンテンツの後に小さな枠線を作成するためのプロパティ。私もセットアップ 位置:絶対 そのため、内側のリンク項目の周囲でこれらの枠線を自由に移動できます。ホバー状態で境界色を変更するのは非常に簡単です。これにより、より動的な感覚が得られます。 HTML5とCSS3の基本的な規則を使用するだけで達成できることは、非常に信じられないほどです。.

    それでは、JavaScriptコードについて説明しましょう。これを実行するには、コードにjQueryライブラリへのインクルードが必要であることを忘れないでください。.

    アニメーションjQuery

    これらのカスタムコードを書く際に、私は新しいドキュメントを作成しました。 script.js. これらを直接書いてお気軽に > タグ、またはデモのソースコードから私の例をダウンロード.

    $(document).ready(function()var pagebody = $( "#pagebody"); var themenu = $( "#navmenu"); var topbar = $( "#toolbarnav"); var content = $( " #content "); var viewport = width:$(window).width()、height:$(window).height(); //変数を// viewport.width / viewport.heightとして取得します。 

    はじめに、文書内の要素をより早く参照できるページ変数をいくつか設定しました。ビューポートの値は使用されませんが、アニメーションの段階を調整したい場合に便利です。たとえば、現在のブラウザの幅を確認して、それに応じてメニューを小さくしたり広くしたりできます。.

    function openme()$(function()topbar.animate(left: "290px"、duration:300、queue:false); pagebody.animate(left: "290px"、duration:300キュー:false);); 関数closeme()var closeme = $(関数()topbar.animate(left: "0px"、duration:180、queue:false); pagebody.animate(left: "0px"、 duration:180、queue:false);); 

    次に、メニューを開閉するための2つの重要な機能を定義しました。これらは、単一の関数とコールバックトグルで実行できます。ただし、実際には2つの異なる要素を同時にアニメートする必要があります。残念ながら、これはjQueryのデフォルトの振る舞いではないので、代替構文に頼る必要があります。.

    ターゲットにしている2つの要素は、 トップバー そして ページボディ. 背景が白の内部コンテンツ領域は、ページ本体全体です。ただし、タイトルバーの位置はページの上部に固定されています。これは、ページで自然にアニメートされないことを意味しており、私たちは別の呼び出しを使用する必要があります。開口部は290px左(ほぼ300pxナビゲーション幅全体)を押すように設定されていて、閉じる機能はそれを後退させる.

    動的コンテンツのロード

    上記のコードは、アニメーションの面倒を見るのに十分簡単です。そして理論的には、このような単純なモバイルWebサイトに必要なのはこれだけです - しかし、もう少し追加したいと思います。.

    ユーザーがメニューリンクをクリックするたびに、現在のナビゲーションを閉じて、ページのコンテンツを探している間に読み込みGIFを表示します。その後、完成したら、GIF画像を削除して内部に読み込みます。コンテンツに静的な.htmlページを使用することもできるので、これは素晴らしいことです。混乱させるためのPHP、Ruby、Perl、またはバックエンドの言語は不要.

    クリックを管理する

    まず、ユーザーがナビゲーションボタンをクリックしたときにテストします。これにより、通常のhref値がロードされなくなり、代わりに独自の関数を使用して外部コンテンツを表示できます。.

    //ナビゲーション用のページコンテンツの読み込み$( "a.navlink")。live( "click"、function(e)e.preventDefault(); var linkurl = $(this).attr( "href"); var linkhtmlurl = linkurl.substring(1、linkurl.length); var imgloader = '
    ';

    今度は、クラスを持つアンカーのセレクターを開きます。 ナビリンク. ユーザーがこれらのリンクの1つをクリックするたびに、私たちはそれをロードするのを止めて、完全なURLのための変数を設定します。私はまた、標準の画像ローダーを含むようにコンテンツHTMLの変数を設定しました。自分でカスタマイズしたい場合は、Ajaxloadを強くお勧めします。.

    Ajax .load()

    この効果には2つの異なる部分がありますが、これらはうまく分割されています。以下のコードは、ナビゲーションメニューを閉じてドキュメントウィンドウ全体を一番上までスライドさせる最初のビットです。内部のコンテンツを小さいローダーアニメーションに置き換えたいのですが、ページの下部を見ているとユーザーはこれを見ることができません。.

    closeme(); $(function()topbar.css( "top"、 "0px"); window.scrollTo(0、1););

    最後に、内部のコンテンツを画像に置き換え、外部ページを読み込んでロードします。通常、これは数百ミリ秒かそれ以上速くかかるだけなので、タイムアウト機能を設定しました。.

    content.html(imgloader); setTimeout(function()content.load(linkhtmlurl、function()/ * no callback * /)、1200);

    これは新しいコンテンツをロードする前に1200ミリ秒休止します。私のデモでは、これはずっと良く見え、遅いインターネット接続でアプリケーションがどのように振る舞うかについての考えをあなたに与えます.

    結論

    私はすべてのWeb開発者がチュートリアルのソースコードをダウンロードして自分で遊ぶことをお勧めします。これはHTML / CSS3とJavaScriptの効果のタッチで達成できることのそのような基本的な例です。メディアクエリとより拡張可能なWebブラウザを使用すると、モバイル画面用の構築はこれまでになく簡単になります。.

    将来のWebプロジェクトでこのコードを適用できるかどうかを確認してください。モバイルアプリケーションを構築することは、Webデザインによく似たアートであり、多くの献身と実践を必要とします。このチュートリアルが、数人の熱心な開発者にとって良い出発点になることを願っています。コードについて質問や意見がある場合は、投稿ディスカッションエリアで気軽に共有してください。.