pageSwitch-支持121種過渡效果的JavaScript頁面切換插件

jopen 8年前發布 | 17K 次閱讀 JavaScript

pageSwitch.js是一款支持121種頁面切換效果的javascript頁面切換插件。pageSwitch插件適用場景為全屏切換,即一切一屏。它支持桌面和移動手機,支持多達121種切頁效果,還支持自定義切頁動畫。

pageSwitch-支持121種過渡效果的JavaScript頁面切換插件

查看演示      下載插件

使用方法

使用該頁面切換插件需要引入pageSwitch.js文件。

<script type="text/javascript" src="src/pageSwitch.js"></script>

HTML結構

pageSwitch頁面切換插件的基本HTML結構采用嵌套<div>的HTML結構。

<div id="imgs">
  <div><img src="images/1.jpg" /></div>
  <div><img src="images/2.jpg" /></div>
  <div><img src="images/3.jpg" /></div>
  <div><img src="images/4.jpg" /></div>
  <div><img src="images/5.jpg" /></div>
  <div><img src="images/6.jpg" /></div>
  <div><img src="images/7.jpg" /></div>
  <div><img src="images/8.jpg" /></div>
  <div><img src="images/9.png" /></div>
</div>
<!--導航-->
<div id="navs">
  <a href="javascript:;" class="active"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
  <a href="javascript:;"></a>
</div>

初始化插件

可以通過下面的方法來初始化一個pageSwitch對象。

var pw=new pageSwitch('container id',{
    duration:600,           //int 頁面過渡時間
    direction:1,            //int 頁面切換方向,0橫向,1縱向
    start:0,                //int 默認顯示頁面
    loop:false,             //bool 是否循環切換
    ease:'ease',            //string|function 過渡曲線動畫,詳見下方說明
    transition:'slide',     //string|function轉場方式,詳見下方說明
    freeze:false,           //bool 是否凍結頁面(凍結后不可響應用戶操作,可以通過 `.freeze(false)` 方法來解凍)
    mouse:true,             //bool 是否啟用鼠標拖拽
    mousewheel:false,       //bool 是否啟用鼠標滾輪切換
    arrowkey:false,         //bool 是否啟用鍵盤方向切換
    autoplay:false,         //bool 是否自動播放幻燈 新增
    interval:int            //bool 幻燈播放時間間隔 新增
});

方法

pageSwitch插件的可用方法有:

pw.prev();                  //上一張
pw.next();                  //下一張
pw.slide(n);                //第n張
pw.setEase();               //重新設定過渡曲線
pw.setTransition();         //重新設定轉場方式
pw.freeze(true|false);      //凍結頁面轉換,凍結后不可響應用戶操作(調用slide prev next方法還可以進行)

pw.play(); //播放幻燈 pw.pause(); //暫停幻燈

pw.prepend(DOM_NODE); //前增頁面 pw.append(DOM_NODE); //后增頁面 pw.insertBefore(DOM_NODE,index); //在index前添加 pw.insertAfter(DOM_NODE,index); //在index后添加 pw.remove(index); //刪除第index頁面 pw.isStatic(); //是否靜止狀態

pw.destroy(); //銷毀pageSwitch效果對象</pre>

事件

可以通過.on()為pageSwitch對象綁定事件。

/* 事件綁定

  • event可選值:
  • before 頁面切換前
  • after 頁面切換后
  • update 頁面切換中
  • dragStart 開始拖拽
  • dragMove 拖拽中
  • dragEnd 結束拖拽 */ pw.on(event,callback);</pre>

    應用舉例

    設置easing效果

    pageSwitch插件支持內置的linear、ease、ease-in、ease-out、ease-in-out、bounce等easing動畫效果。

    //注:此處傳值也可直接在new pageSwitch對象時經ease參數傳入
    //設置勻速linear過渡示例:
    pw.setEase('linear'); //由于內置了linear支持,所以可以直接使用

//假如沒有內置linear,則使用自定義過渡曲線函數如下 pw.setEase(function(t,b,c,d){ return c*t/d + b; });</pre>

更多曲線函數參見: https://github.com/zhangxinxu/Tween/blob/master/tween.js

設置Transition過渡動畫

pageSwitch插件支持的動畫過渡效果有:

  • fade:漸隱漸顯。
  • slice:裁切效果。
  • scroll:頁面滾動。
  • scroll3d:3d頁面滾動。
  • scrollCover:頁面視差滾入滾出(前后頁面速度不一致)。
  • scrollCoverReverse:同上反向。
  • scrollCoverIn:總是下一張頁面視差滾入。
  • scrollCoverOut:總是當前頁面視差滾出。
  • slide:滑動切換,后者頁面有縮放效果。
  • slideCover:頁面滑入滑出。
  • slideCoverReverse:同上反向。
  • slideCoverIn:總是下一張頁面滑入。
  • slideCoverOut:總是當前頁面滑出。
  • flow:封面滑動切換。
  • flowCover:頁面滑入滑出。
  • flowCoverReverse:同上反向。
  • flowCoverIn:總是下一張頁面滑入。
  • flowCoverOut:總是當前頁面滑出。
  • zoom:縮放切換。
  • zoomCover:頁面縮進縮出。
  • zoomCoverReverse:同上反向。
  • zoomCoverIn:總是下一張頁面縮入。
  • zoomCoverOut:總是當前頁面縮出。
  • skew:扭曲切換。
  • skewCover:頁面扭進扭出。
  • skewCoverReverse:同上反向。
  • skewCoverIn:總是下一張頁面扭入。
  • skewCoverOut:總是當前頁面扭出。
  • flip:翻轉切換。
  • flip3d:3d翻轉切換。
  • flipClock:翻頁鐘效果。
  • flipPaper:翻書本效果。
  • flipCover:頁面翻入翻出。
  • flipCoverReverse:同上反向。
  • flipCoverIn:總是下一張頁面翻入。
  • flipCoverOut:總是當前頁面翻出。
  • bomb:放大切換。
  • bombCover:頁面大入大出。
  • bombCoverReverse:同上反向。
  • bombCoverIn:總是下一張頁面大入。
  • bombCoverOut:總是當前頁面大出。

注意:除了fade,所有效果都支持指定X或Y軸方向效果,只要在名字后面加上X或Y即可。 例如:scrollY、flipX、flipCoverX、flipCoverInX等類似。

//注:此處傳值也可直接在new pageSwitch對象時經transition參數傳入
//設置fade效果示例:
pw.setTransition('fade'); //由于內置了fade效果,所以可以直接調用。

//假定沒有內置fade,自定義轉場函數如下 pw.setTransition(function(cpage,cp,tpage,tp){ /* 過渡效果處理函數

 * @param HTMLElement cpage 參與動畫的前序頁面
 * @param Float cp 目標頁面過渡比率,取值范圍-1到1
 * @param HTMLElement tpage 參與動畫的后序頁面;如果非循環loop模式,則在切換到邊緣頁面時可能不存在該參數
 * @param Float tp 目標頁面過渡比率,取值范圍-1到1;如果非循環loop模式,則在切換到邊緣頁面時可能不存在該參數
 */

if('opacity' in cpage.style){
    cpage.style.opacity=1-Math.abs(cp);
    if(tpage){
        tpage.style.opacity=Math.abs(cp);
    }
}else{
    cpage.style.filter='alpha(opacity='+(1-Math.abs(cp))*100+')';
    if(tpage){
        tpage.style.filter='alpha(opacity='+Math.abs(cp)*100+')';
    }
}

});

//如果你有jQuery類似組件,可以更簡單 pw.setTransition(function(cpage,cp,tpage,tp){ $(cpage).css('opacity',1-Math.abs(cp)); $(tpage).css('opacity',Math.abs(cp)); });</pre>

jQuery/Zepto適配器

$.fn.extend({
    pageSwitch:function(cfg){
        this[0].ps=new pageSwitch(this[0],cfg);
        return this;
    },
    ps:function(){
        return this[0].ps;
    }
});

//使用 $(container_id).pageSwitch({ duration:1000, transition:'slide' }); //由于鏈式調用返回依然是jq對象自身,所以如果需要使用pageSwitch對象方法, //需要通過 .ps() 方法獲取對pageSwitch對象的引用。 $(container_id).ps().next();</pre>

pageSwitch頁面切換插件的github地址為: https://github.com/qiqiboy/pageSwitch

來自: http://www.html5cn.org/article-9292-1.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!