基於jquery的插件turn.js學習筆記

来源:https://www.cnblogs.com/yuxi-G/archive/2019/02/22/yuxig.html
-Advertisement-
Play Games

基於 jquery 的插件 turn.js 學習筆記 簡介 turn.js是一個可以實現3d書籍展示效果的jq插件,使用html5和css3來執行效果。可以很好的適應於ios和安卓等觸摸設備。 ___ How it works? 下麵是官網展示的最簡單的一個應用實例 1.編寫html部分 2.編寫j ...


基於jquery的插件turn.js學習筆記

簡介

turn.js是一個可以實現3d書籍展示效果的jq插件,使用html5和css3來執行效果。可以很好的適應於ios和安卓等觸摸設備。


How it works?

下麵是官網展示的最簡單的一個應用實例

1.編寫html部分

<div id="flipbook">
  <div class="hard"> Turn.js </div> 
  <div class="hard"></div>
  <div> Page 1 </div>
  <div> Page 2 </div>
  <div> Page 3 </div>
  <div> Page 4 </div>
  <div class="hard"></div>
  <div class="hard"></div>
</div>

2.編寫js部分

$("#flipbook").turn({
  width: 400,
  height: 300,
  autoCenter: true
});

API參考

構造函數

這個構造函數定義了filpbook和zoom在哪裡創建,因此這個構造函數只能被調用一次並且不能被省略。flipbook和zoom都有單獨的構造函數

  • turn的構造函數

    語法
$("#flipbook").turn([options]);
事例
$("#flipbook").turn({page: 1, acceleration: true, gradients: true});
  • zoom的構造函數

    ##### 語法
$("#zoom-viewport").zoom(options);

OPTIONS

Turn Options

  • acceleration:boolean 預設值true

    使用觸摸時設備時值必須為true

  • autoCenter:boolean 預設值false

    是否居中

  • direction:string預設值ltr

    指定翻頁的方向,ltr:從左到右;rtl:從右到左

示例

在options中配置屬性

$("#flipbook").turn({direction:"rtl"});

在標簽中直接設置屬性

<div id="flipbook" dir="rtl">
  <!--Pages-->
</div>

在css中設置屬性

#flipbook {
  direction:rtl;
}
  • display:string 預設值double

    設置書籍的顯示樣式,double顯示雙面,single顯示單面

  • duration:number 預設值:600

    設置翻頁動畫的快慢,設置為0時,不會有翻頁動畫

  • gradient:boolean 預設值:true

    設置動畫過渡效果時的陰影效果

  • height:number 預設值:$("flipbook").height()

    設置flipbook的高度

  • elevation:number 預設值:0

    設置動畫時的高度(elevation)

  • page:number 預設值:1

    設置初始化flipbook時的頁面數

  • pages:number 預設值:$("#flipbook").children().length

    為書籍添加任意的頁數,預設值為當前書籍的頁數。如果設置的頁數大於當前fliplook中已存在的頁面數,會使用addPage方法動態的添加這些頁面

  • turnCorners:string 預設值:bl,br

    設置翻頁時可使用的頁角,像使用page,next,previous等方法時
    樣式:{left-corner},{right-corner}
    可能的值:bl,br or tl,tr or bl,tr

示例

//自動翻頁
var way = 1;

setInterval(function() {
  //當前頁面為第一頁,只能向後翻頁
  if (way==1) {
    $("#flipbook").turn("next");
    //當翻到最後一頁時,只能向前翻
    if ($("#flipbook").turn("page")== $("#flipbook").turn("pages")) {
      way = 2;
      $("#flipbook").turn("options", {turnCorners: "tl,tr"});
    }
  } else {
    $("#flipbook").turn("previous");
    
    if ($("#flipbook").turn("page")==1) {
       way = 1;
       $("#flipbook").turn("options", {turnCorners: "bl,br"});
    }
  }
}, 1000);
  • when:{} 預設值:空對象

    設置事件監聽

$("#flipbook").turn({when: {
    turning: function(event, page, pageObject) {
        // Implementation
    }
}
});
  • width:number 預設值:$("#flipbook").width()

    設置頁面寬度

Zoom Options

  • easeFunction:string 預設值:ease-in-out

    定義過渡動畫中加速度曲線模式

可選的值有:

  • default
  • linear
  • ease-in
  • ease-out
  • ease-in-out
  • cubic bezier (require points)
  • duration:number 預設值:600

    定義了過渡動畫的快慢,設置為0時沒有過渡效果

  • max:number or function 預設值:必須手動設置值

    設置縮放因數的最大值,值為縮放時的最大比例繫數

示例

  • 參數值為number
// This will increase three times the size of the flipbook
//縮放的時候繫數為3倍
$("#zoom-viewport").zoom({
    flipbook: $("#flipbook"),
    max: 3
});
  • 參數值為function
// If we want to make the flipbook 3000 width when zoomed in.
//縮放到指定寬度3000
$("#zoom-viewport").zoom({
    flipbook: $("#flipbook"),
    max: function() {
        return 3000/$('.magazine').width();
    }
});
  • flipbook:jquery element 預設值:必須手動設置

    指向zoom作用的內容

示例

$("#flipbook").turn();
$("#zoom-viewport").zoom({
    flipbook: $("#flipbook"),
    max: 3
});
  • when:object 預設值:{}

    設置事件監聽

示例

$("#zoom-viewport").turn({when: {
    doubleTap: function(event) {
        // Implementation
    }
}
});

Properties

flipbook的Properties

語法
$("#flipbook").turn("propertyName");
  • animating

    當前頁面如果有動畫效果(翻頁的時候)返回true

示例

function isAnimating() {
  if ($("#flipbook").turn("animating")) {
    alert('Animating a page!');
  }
}
  • direction

    返回當前書籍的翻頁方向,返回值為ltr或rtl

示例

$("#flipbook").turn("direction");
  • display

    返回當前書籍的顯示方式,返回值為double或single

示例

alert("The current display is: " + $("#flipbook").turn("display"));
  • disabled

    是否禁用,禁用返回true

  • page

    獲取當前的頁面值

示例

alert("The current page is: "+$("#flipbook").turn("page"));
  • pages

    獲取當前書的總頁面數

示例

alert("#flipbook has " + $("#flipbook").turn("pages") + " pages");
  • pages

    獲取當前書的尺寸,返回值為一個對象,包括兩個內容:width和height

示例

var size = $("#flipbook").turn("size");
alert("Width: "+size.width + ", Height:"+size.height);
  • options

    獲取初始化書籍時設置的options

示例

var duration = $("#flipbook").turn("options").duration;
alert("The duration of the transition is "+duration);
  • view

    獲取當前的view

示例

var view = $("#flipbook").turn("view").join(" and ");
alert("Current view: "+view);
  • zoom

    獲取flipbook的縮放繫數因數。預設值為1,代表當使用尺寸相關方法時flipbook會使用與原始尺寸相同的尺寸(不會改變尺寸)

示例

var zoom = $("#flipbook").turn("zoom");
alert("Current zoom: "+zoom);

zoom的Properties

  • value

    返回當前的zoom值

示例

function zoomedIn() {
    //值為1代表沒有進行縮放
    if ($("#zoom-viewport").turn("value")==1)
        alert("No zoom");
    //值大於1代表當前有縮放效果
    else if ($("#zoom-viewport").turn("value")>1)
        alert("Zoomed In");
}

Methods

Turn Methods

方法用於執行諸如翻頁或者更改屬性狀態等操作

語法

$("#flipbook").turn('method name'[, argument1, argument2]); 

當方法沒有返回值時,可以與另一個方法連接

$("#flipbook").turn("method1").turn("method2");
  • addPage

    向flipbook中添加新的頁面

參數 數據類型 描述 預設值
element jquery元素 想要添加的dom元素 $("<div />")
pageNumber number 想要往對應頁面添加的頁碼數 $("#flipbook").turn("pages")+1 預設添加到最後一頁

示例 如果要向第十頁添加新頁面,可以這樣

element = $("<div />").html("Loading...");
$("#flipbook").turn("addPage", element, 10);

或者 設置新頁面元素的class值為"p10"也可以指明要插入的頁面為第十頁

element = $("<div />", {"class": "p10"}).html("Loading...");
$("#flipbook").turn("addPage", element);
  • center

    根據可見的頁面數量來決定flipbook的center。這個方法修改flipbook的css屬性margin-left 以至於將flipbook放置於中心。因此如果需要修改margin-left,最好需要將flipbook放置到一個容器div中來方便修改其margin屬性
    如果flipbookoptionautoCenter設置為了true,則不需要使用這個方法
    這個方法沒有參數

示例

$("#flipbook").turn("center");

使用這個方法時,其實是為flipbook設置瞭如下css樣式

#flipbook{
    transition:margin-left 1s;
    -webkit-transition:margin-left 1s;
    -moz-transition:margin-left 1s;
    -o-transition:margin-left 1s;
    -ms-transition:margin-left 1s;
    transition:margin-left 1s;
}
  • destory

    消除flipbook。從dom樹,記憶體和事件監聽器中刪除所有頁面
    刪除flipbook的同時也會自動刪除zoom(如果定義了的話)
    該方法沒有參數

示例

$("#flipbook").turn("destroy");

也可以刪除這些頁面的容器#flipbook,如下

$("#flipbook").turn("destroy").remove();

  • direction

    設置flipbook的翻頁方向(ltr,rtl)

參數 數據類型 描述 預設值
direction string ltr or rtl 必須手動設定參數

示例

$("#flipbook").turn("direction", "rtl");
  • display

    設置顯示方式,一個視圖中只顯示一頁(single)或者一個視圖中顯示兩頁(double
    如果使用single的顯示方式,則會給flipbook添加overflow:hidden樣式

參數 數據類型 描述 預設值
displayMode string 設置顯示方式 必須手動設定參數

示例

$("#flipbook").turn("display", "single");
  • disable

    禁用或啟用效果。如果禁用,則用戶不能修改該頁面

參數 數據類型 描述 預設值
disable boolean 禁用或啟用效果 必須手動設定參數

示例

$("#flipbook").turn("disable", true);
  • hasPage

    如果flipbook中存在相應頁面則返回true

參數 數據類型 描述 預設值
pageNumber number 要查看是否存在頁面的頁碼 必須手動設定參數

示例

function checkPage(page)  {
  if ($("#flipbook").turn("hasPage", page)) {
    alert("Page "+page+" is already in the flipbook");
  }
}

// Check if page 1 is in the flipbook
checkPage(1);
  • previous

    轉向上一頁的視圖
    該方法沒有參數

示例

$("#flipbook").turn("previous");

也可以轉換兩個視圖

$("#flipbook").turn("previous").turn("previous");
  • next

    轉向下一頁的視圖
    該方法沒有參數

示例

$("#flipbook").turn("next");

也可以轉換兩個視圖

$("#flipbook").turn("next").turn("next");
  • is

    檢測jq選擇器中是否創建了turn.js的實例

示例

if (!$("#flipbook").turn("is")) {
    // Create a new flipbook 
    $("#flipbook").turn();
}
  • page

    將視圖轉換到指定的頁面

參數 數據類型 描述 預設值
page number 要跳轉到的頁面的頁碼 必須手動設定參數

示例

// 跳轉到第10頁
$("#flipbook").turn("page", 10);
  • pages

    設置pages屬性值。如果當前的pages值大於設置的pages值,則會移出flipbook中多出去的這一部分頁面

參數 數據類型 描述 預設值
pages number 值為當前flipbook中頁面的總數 必須手動設定參數

示例

$("#flipbook").turn("pages", 5);
$("#flipbook").turn("hasPage", 10); // It’s true. 
$("#flipbook").turn("pages", 5); // Sets 5 pages
$("#flipbook").turn("hasPage", 10); // Returns false
  • peel

    在指定的頁面角顯示翻起頁面的動畫效果

參數 數據類型 描述 預設值
corner string 設置指定的角 必須手動設定參數
animate boolean true animation

示例

// Shows a peeling page at the bottom right corner
$("#flipbook").turn("peel", "br");
  • range

    返回包含兩個值得數組,第一個數值的含義是==下一個包含在dom樹中頁面的頁碼==,第二個數值的含義是在範圍中的最後一個頁碼。這個範圍一般滿足如下關係:range[0] <= $("#flipbook").turn("page") <= range[1]

參數 數據類型 描述 預設值
pageNumber number 在範圍內的頁碼 $("#flipbook").turn("page")

示例 為了能夠動態的添加頁面,可以使用range方法

var range = $("#flipbook").turn("range", 10);

for (var page = range[0]; page<=range[1]; page++){
    if (!$("#flipbook").turn("hasPage", page)) {
        $("#flipbook").turn("addPage", $("<div />"), page); 
    }
}
  • removePage

    移除指定頁面

參數 數據類型 描述 預設值
pageNumber number 需要移出的頁面 必須手動指定值

示例

// Delete the page 10
$("#flipbook").turn("removePage", 10);
  • resize

    重新計算所有頁面的尺寸和位置
    該方法沒有參數

示例

$("#flipbook").turn("resize");
  • size

    設置flipbook的width和height

參數 數據類型 描述 預設值
width number flipbook的寬 必須手動指定值
height number flipbook的高 必須手動指定值

示例

// Resize the flipbook to 1000x600 
$("#flipbook").turn("size", 1000, 600);
  • stop

    停止當前的過渡動畫
    該方法沒有參數

示例

// 轉到第十頁並且取消過渡動畫
$("#flipbook").turn("page", 10).turn(‘stop’);
  • version

    獲得當前的發行版本信息

示例

$("#flipbook").turn("version");
// Output is 4.0.6
  • zoom

    放大或縮小flipbook的尺寸,根據放大繫數更改flipbook的寬和高。如果放大繫數為1,則保持原尺寸不進行縮放

參數 數據類型 描述 預設值
factor number 放大或縮小的比例繫數 必須手動指定值

示例

// Reduce the size in half of the flipbook
$("#flipbook").turn("zoom", 0.5);

Zoom Methods

  • destory

    銷毀zoom viewport
    如果flipbook被其destory方法銷毀,那麼zoom viewport會自動的銷毀
    該方法沒有參數

示例

$("#zoom-viewport").turn("destroy");
  • zoomIn

    放大flipbook
    該方法沒有參數

示例

$("#zoom-viewport").turn("zoomIn");
  • zoomOut

    還原flipbook
    該方法沒有參數

示例

$("#zoom-viewport").turn("zoomOut");

Events

Turn Events

事件可以支持定義在特殊時刻的行為。有兩種不同的方法可以定義

1.在options中使用

當添加事件監聽器時,會需要構造函數在創建flipbook前添加監聽器(when),例如

$("#flipbook").turn({when: {
    turning: function(event, page, pageObject) {
        // Implementation
    }
}
});
2. 用bind方法

jquery提供了一個bind方法來給元素綁定監聽器。可以為一個事件使用bind去添加你需要的任意多的監聽器,例如

$("#flipbook").bind("turning", function(event, page, pageObject) {
    // Implementation
});

如果option 的 prefix的值為true,那麼需要加一個首碼turn,如下

$("#flipbook").bind("turn.turning", function(event, page, pageObject) {
    // Implementation
});
使用事件對象

第一個所有監聽函數共用的參數是事件對象,允許你操縱擴展和預設的事件,一些時間的後面可以跟隨一個動作,例如可以轉動頁面。因此,可以通過event.preventDefault()來阻止預設操作。在事件函數中,沒必要再返回false去阻止預設行為

事件
  • end

    當頁面過渡動畫結束時觸發事件

參數 數據類型 描述
event object 事件對象
pageObject object 頁面對象
pageTurned boolean 如果轉到的是這個頁面,返回true

示例

$("#flipbook").bind("end", function(event, pageObject, turned){
  alert("turn.end:" +pageObject.page);
});
  • first

    當前頁碼為1時觸發該事件

參數 數據類型 描述
event object 事件對象

示例

$("#flipbook").bind("first", function(event) {
    alert("You are at the beginning of the flipbook");
});
  • last

    在當前頁碼為最後一頁的時候觸發該事件

參數 數據類型 描述
event object 事件對象

示例

$("#flipbook").bind("last", function(event) {
    alert("You are at the end of the flipbook");
});
  • missing

    在某些處於當前頁面範圍內的頁面被請求時觸發該事件

參數 數據類型 描述
event object 事件對象
pages array 需要被添加頁面的頁碼的數組

示例

$("#flipbook").bind("missing", function(event, pages) {
  for (var i = 0; i < pages.length; i++) {
    $(this).turn("addPage", $("<div />"), pages[i]);
  }
});
  • start

    在頁面的摺疊動畫效果開始時觸發該動畫。換句話說,在顯示摺疊起來的頁面之前觸發該動畫

參數 數據類型 描述
event object 事件對象
pageobject object 頁面對象
corner string 頁腳類型

預設行為 |
---|
顯示頁腳摺疊起來的效果 |

示例 如果你想阻止當使用頁腳tl和tr時的動畫效果,可以使用start時間並且阻止其預設行為

$("#flipbook").bind("start", function(event, pageObject, corner) {
  if (corner=="tl" || corner=="tr") {
    event.preventDefault();
  }
});
  • turning

    當跳轉頁面之前觸發該事件

參數 數據類型 描述
event object 事件對象
page number 頁碼
view array 新的view

預設行為 |
---|
跳轉頁面 |

示例

$("#flipbook").bind("turning", function(event, page, view) {
  alert("Turning the page to: "+page);
});

可以阻止頁面跳轉到第一頁

$("#flipbook").bind("turning", function(event, page, view) {
  if (page==1) {
    event.preventDefault();
  }
});
  • turned

    在頁面跳轉之後觸發該事件

參數 數據類型 描述
event object 事件對象
page number 新的頁碼
view array 新的view

示例

$("#flipbook").bind("turned", function(event, page, view) {
  alert("Page: "+page);
});
  • zooming

    當頁面的縮放尺寸發生改變的時候觸發該事件

參數 數據類型 描述
event object 事件對象
newZoomValue number 新的縮放比例繫數
currentZoomvalue number 當前的縮放比例繫數

預設行為 |
---|
更改縮放比例繫數 |

示例

$("#flipbook").bind("zooming", function(event,  newZoomValue, currentZoomValue) {
  alert("New zoom: "+currentZoomValue);
});

Zoom Events

  • doubleTap

    當雙擊或雙點視圖元素時觸發該事件

參數 數據類型 描述
event object 事件對象

示例

$("#zoom-view").bind("zoom.doubleTap", function(event) {
    if ($(this).zoom("value")==1) {
        $(this).zoom("zoomIn", event);
    } else {
        $(this).zoom("zoomOut");
    }
});

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近同事發現Azure上一臺虛擬機的費用環比增加了一部分。後面仔細檢查發現費用來自數據傳輸, 因為這是早期部署的一臺Azure虛擬機(Iaas),我們在本地生成備份,然後通過AzCopy到存儲賬號的Blob裡面。但是Azure的虛擬機位於中國東部數據中心,而存儲賬號位於中國北部數據中心。以前由於數據... ...
  • 高效的選擇和使用索引有很多方式,有的是針對特殊案例的優化方法,有的則是針對特定行為的優化,使用哪個索引,以及如何評估選擇不同索引的性能影響的技巧,則需要持續不斷地學習。(本文章需要一定索引基礎) 1.索引要是獨立的列 “獨立的列”是指索引列不能是表達式的一部分,也不能是函數的參數。例如,下麵這個查詢 ...
  • 前言: 在iOS開發中,或多或少的會嵌入一些H5頁面,有時候需要原生代碼和H5頁面進行交互。iOS8開始蘋果推出性能更強大的WKWebView,所以一下方法是關於WKWebView與JS的交互。 創建WKWebView: 遵守協議 <WKNavigationDelegate, WKUIDelegat ...
  • Tablayout的使用 屬性 |屬性名 | 說明| | | | |app:tabMod |設置Tab模式 | |app:tabTextColor |設置文本顏色 | |app:tabSelectedTextColor |設置選中文本顏色 | |app:tabIndicatorColor |設置下滑 ...
  • 資料參考: 組合測試設計PK正交設計總結:https://www.testwo.com/blog/6376 組合測試工具集:http://www.pairwise.org/tools.asp 組合測試方法-配對測試實踐:https://www.cnblogs.com/leeboke/p/503589 ...
  • 關於使用SQLiteOpenHelper的使用,對於小白的我,百度啦相當多的大神的介紹,均未能讓我這新手(零基礎)成功學會,參考了http://www.cnblogs.com/yaozhenfa/p/xamarin_android_sqliteopenhelper.html,我成功實驗出我的第一個登 ...
  • 在本節中,註意到三維底圖既加入了行政邊界的矢量要素圖層,也加入了場景要素 var countries = new FeatureLayer({ //各國矢量邊界 url:"https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/service ...
  • Web前端JQuery面試題(三) 1.怎麼阻止冒泡過程? 2. 方法和 方法的區別? 方法要等頁面中全部元素載入到瀏覽器中才執行,如果頁面中存在大量圖片,要等這些內容載入完畢。 方法只要頁面的 模型載入完畢即可,就會觸發 。 3.請寫出 相同方法? 4. 方法綁定事件有瞭解嗎? 5.寫出一個映射方 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...