
- Ionic基礎教程
- Ionic - 首頁
- Ionic - 概述
- Ionic - 環境搭建
- Ionic CSS元件
- Ionic - 顏色
- Ionic - 內容
- Ionic - 頁首
- Ionic - 頁尾
- Ionic - 按鈕
- Ionic - 列表
- Ionic - 卡片
- Ionic - 表單
- Ionic - 開關
- Ionic - 複選框
- Ionic - 單選按鈕
- Ionic - 滑塊
- Ionic - 選擇框
- Ionic - 標籤頁
- Ionic - 網格
- Ionic - 圖示
- Ionic - 內邊距
- Ionic JavaScript元件
- Ionic - JS 動作面板
- Ionic - JS 背景
- Ionic - JS 內容
- Ionic - JS 表單
- Ionic - JS 事件
- Ionic - JS 頁首
- Ionic - JS 頁尾
- Ionic - JS 鍵盤
- Ionic - JS 列表
- Ionic - JS 載入
- Ionic - JS 模態框
- Ionic - JS 導航
- Ionic - JS 彈出框
- Ionic - JS 彈出視窗
- Ionic - JS 滾動
- Ionic - JS 側邊選單
- Ionic - JS 滑塊
- Ionic - JS 標籤頁
- Ionic 高階概念
- Ionic - Cordova整合
- Ionic - AdMob
- Ionic - 相機
- Ionic - Facebook
- Ionic - 應用內瀏覽器
- Ionic - 原生音訊
- Ionic - 地理位置
- Ionic - 媒體
- Ionic - 閃屏
- Ionic 有用資源
- Ionic - 快速指南
- Ionic - 有用資源
- Ionic - 討論
Ionic - JavaScript滾動
Ionic應用中用於滾動操作的元素稱為ion-scroll。
使用滾動
下面的程式碼片段將建立可滾動的容器並調整滾動模式。首先,我們將建立HTML元素並向其新增屬性。我們將新增→direction = "xy"以允許向各個方向滾動。我們還將設定滾動元素的寬度和高度。
HTML程式碼
<ion-scroll zooming = "true" direction = "xy" style = "width: 320px; height: 500px"> <div class = "scroll-container"></div> </ion-scroll>
接下來,我們將世界地圖的影像新增到我們在ion-scroll內部建立的div元素中,並設定其寬度和高度。
CSS程式碼
.scroll-container { width: 2600px; height: 1000px; background: url('../img/world-map.png') no-repeat }
執行應用程式後,我們可以向各個方向滾動地圖。以下示例顯示了地圖的北美部分。

我們可以將此地圖滾動到任何我們想要的部分。讓我們滾動它以顯示亞洲。

還有其他屬性可以應用於ion-scroll。您可以在下表中檢視它們。
滾動屬性
屬性 | 型別 | 詳情 |
---|---|---|
direction | 字串 | 可能的滾動方向。預設值為y |
delegate-handle | 字串 | 用於使用$ionicScrollDelegate識別滾動。 |
locking | 布林值 | 用於一次鎖定一個方向的滾動。預設值為true。 |
paging | 布林值 | 用於確定是否將分頁與滾動一起使用。 |
on-refresh | 表示式 | 下拉重新整理時呼叫。 |
on-scroll | 表示式 | 滾動時呼叫。 |
scrollbar-x | 布林值 | 是否顯示水平捲軸。預設值為true。 |
scrollbar-y | 字串 | 是否顯示垂直捲軸。預設值為true。 |
zooming | 布林值 | 用於應用捏合縮放。 |
min-zoom | 整數 | 最小縮放值。 |
max-zoom | 整數 | 最大縮放值。 |
scrollbar-x | 布林值 | 用於啟用回彈。iOS上的預設值為true,Android上的預設值為false。 |
無限滾動
無限滾動用於在滾動超過頁面底部時觸發某些行為。以下示例顯示了其工作原理。在我們的控制器中,我們建立了一個函式來向列表新增專案。當滾動超過載入的最後一個元素的10%時,這些專案將被新增。這將持續到我們達到30個載入的元素。每次載入完成後,on-infinite將廣播scroll.infiniteScrollComplete事件。
HTML程式碼
<ion-list> <ion-item ng-repeat = "item in items" item = "item">Item {{ item.id }}</ion-item> </ion-list> <ion-infinite-scroll ng-if = "!noMoreItemsAvailable" on-infinite = "loadMore()" distance = "10%"></ion-infinite-scroll>
控制器程式碼
.controller('MyCtrl', function($scope) { $scope.items = []; $scope.noMoreItemsAvailable = false; $scope.loadMore = function() { $scope.items.push({ id: $scope.items.length}); if ($scope.items.length == 30) { $scope.noMoreItemsAvailable = true; } $scope.$broadcast('scroll.infiniteScrollComplete'); }; })
其他屬性也可以與ion-infinite-scroll一起使用。其中一些列在下表中。
滾動屬性
屬性 | 型別 | 詳情 |
---|---|---|
on-infinite | 表示式 | 滾動到底部時應呼叫的內容。 |
distance | 字串 | 觸發on-infinite表示式所需的底部距離。 |
spinner | 字串 | 載入時應顯示哪個載入指示器 |
immediate-check | 布林值 | 螢幕載入時是否應呼叫“on-infinite” |
滾動委託
Ionic 提供委託以完全控制滾動元素。可以透過將$ionicScrollDelegate服務注入控制器來使用它,然後使用它提供的 方法。
以下示例顯示了一個包含20個物件的可滾動列表。
HTML程式碼
<div class = "list"> <div class = "item">Item 1</div> <div class = "item">Item 2</div> <div class = "item">Item 3</div> <div class = "item">Item 4</div> <div class = "item">Item 5</div> <div class = "item">Item 6</div> <div class = "item">Item 7</div> <div class = "item">Item 8</div> <div class = "item">Item 9</div> <div class = "item">Item 10</div> <div class = "item">Item 11</div> <div class = "item">Item 12</div> <div class = "item">Item 13</div> <div class = "item">Item 14</div> <div class = "item">Item 15</div> <div class = "item">Item 16</div> <div class = "item">Item 17</div> <div class = "item">Item 18</div> <div class = "item">Item 19</div> <div class = "item">Item 20</div> </div> <button class = "button" ng-click = "scrollTop()">Scroll to Top!</button>
控制器程式碼
.controller('DashCtrl', function($scope, $ionicScrollDelegate) { $scope.scrollTop = function() { $ionicScrollDelegate.scrollTop(); }; })
以上程式碼將生成以下螢幕:

點選按鈕時,滾動將移動到頂部。

現在,我們將遍歷所有$ionicScrollDelegate方法。
委託方法
方法 | 引數 | 型別 | 詳情 |
---|---|---|---|
scrollTop(引數) | shouldAnimate | 布林值 | 滾動是否應具有動畫效果。 |
scrollBottom(引數) | shouldAnimate | 布林值 | 滾動是否應具有動畫效果。 |
scrollTo(引數1, 引數2, 引數3) | left, top, shouldAnimate | 數字, 數字, 整數 | 前兩個引數確定x和y軸偏移的值。 |
scrollBy(引數1, 引數2, 引數3) | left, top, shouldAnimate | 數字, 數字, 整數 | 前兩個引數確定x和y軸偏移的值。 |
zoomTo(引數1, 引數2, 引數3, 引數4) | level, animate, originLeft, originTop | 數字, 布林值, 數字, 數字 | level用於確定要縮放到的級別。originLeft和originRight是縮放應該發生的位置座標。 |
zoomBy(引數1, 引數2, 引數3, 引數4) | factor, animate, originLeft, originTop | 數字, 布林值, 數字, 數字 | factor用於確定要縮放的倍數。originLeft和originRight是縮放應該發生的位置座標。 |
getScrollPosition() | / | / | 返回一個具有兩個數字屬性的物件:left和right。這些數字分別表示使用者從左側和頂部滾動的距離。 |
anchorScroll(引數1) | shouldAnimate | 布林值 | 它將滾動到與window.loaction.hash相同的id的元素。如果此元素不存在,它將滾動到頂部。 |
freezeScroll(引數1) | shouldFreeze | 布林值 | 用於停用特定滾動的滾動。 |
freezeAllScrolls(引數1) | shouldFreeze | 布林值 | 用於停用應用程式中所有滾動的滾動。 |
getScrollViews() | / | 物件 | 返回scrollView物件。 |
$getByHandle(引數1) | handle | 字串 | 用於將方法連線到具有相同控制代碼的特定滾動檢視。$ionicScrollDelegate. $getByHandle('my-handle').scrollTop(); |
廣告