2013年12月15日星期日

使用Eclipse編譯PhoneGap/Cordova 3.3.0

PhoneGap/Cordova推出了3.3.0的更新,但更新後Eclipse需要作額外的設定才可以正常編譯。

更新流程:
  1. 更新PhoneGap
    • Mac and Linux:
      $ sudo npm install -g phonegap
    • Windows:
      C:\> npm install -g phonegap
  2. 更新App
    $ cd path/to/my-app
    $ phonegap platform update android
  3. 在Android SDK  Manager安裝Android 4.4 (API 19)的SDK Platform
  4. 在platforms/android/CordovaLib/src資料夾按右鍵 -> Build Path -> Use as Source Folder
  5. 重新開啟Eclipse後就能正常編譯
p.s. 你可能需要建立一個新的App來取得最新的phonegap.js / cordova.js / cordova_plugins.js

發行說明: http://phonegap.com/blog/2013/12/13/phonegap-release/

2013年12月13日星期五

Foundation 5 - 固定Off Canvas標題在頁首的方法

Foundation 5新增的Off Canvas可以擬模側滑菜單的效果,但在性能較差的手機上會出現延遲的問題,因為它會將整個頁面以CSS transform的translate3d移動,其實大部分情況只需要顯示菜單,所以可以將Off Canvas和Top Bar整合,請看以下的實例:

CSS transform: http://www.w3schools.com/cssref/css3_pr_transform.asp
Foundation 5 Off Canvas文檔: http://foundation.zurb.com/docs/components/offcanvas.html

Js Fiddle示範: http://jsfiddle.net/indream/hSu4c/

1. 先將div.tab-bar加上top-bar class,並以div.fixed包住。

<div class="fixed">
 <nav class="tab-bar top-bar">
  <section class="left-small"> <a class="left-off-canvas-toggle menu-icon"><span></span></a></section>
  <section class="middle tab-bar-section">
   <h1 class="title">Foundation</h1>
  </section>
  <section class="right-small"></section>
 </nav>
</div>
2. 加入以下的CSS

/* 下移.top-bar擋住的文字 */
body {
  margin-top: 2.8125rem;
}
/* 修正被.exit-off-canvas擋住的菜單 */
.fixed, .left-off-canvas-menu {
    z-index: 1003;
}
.move-right .left-off-canvas-menu {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
}
.left-off-canvas-menu {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: -100%;
    /* 可以在此修改Off Canvas動畫的時間 */
    -webkit-transition: 0.5s;
    transition: 0.5s;
}
.move-right>.inner-wrap {
    -webkit-transform: none;
    transform: none;
}
.move-right a.exit-off-canvas {
    -webkit-transition: none;
    transition: none;
}

3. 頁面載入後執行以下的JS

$(document).foundation();
// 將Off Canvas設為頁面的高度,並在開啟時固定在頁面中央
$(".inner-wrap, .left-off-canvas-menu, .main-section").height($(window).height() - $(".fixed").height());