- 离子基础教程
- 离子 - 主页
- 离子 - 概述
- Ionic - 环境设置
- Ionic CSS 组件
- 离子 - 颜色
- 离子 - 内容
- 离子 - 标头
- 离子 - 页脚
- 离子 - 按钮
- 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 - Cordova 集成
- 离子 - AdMob
- 离子 - 相机
- 离子 - Facebook
- 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。您可以在下表中查看它们。
滚动属性
属性 | 类型 | 细节 |
---|---|---|
方向 | 细绳 | 滚动的可能方向。默认值为y |
委托句柄 | 细绳 | 用于$ionicScrollDelegate的滚动识别。 |
锁定 | 布尔值 | 用于一次锁定一个方向的滚动。默认值为 true。 |
寻呼 | 布尔值 | 用于确定分页是否与滚动一起使用。 |
刷新时 | 表达 | 调用拉动刷新。 |
滚动 | 表达 | 滚动时调用。 |
滚动条-x | 布尔值 | 是否应该显示水平滚动条。默认值为 true。 |
滚动条-y | 细绳 | 是否应该显示垂直滚动条。默认值为 true。 |
缩放 | 布尔值 | 用于应用捏合缩放。 |
最小缩放 | 整数 | 最小缩放值。 |
最大缩放 | 整数 | 最大缩放值。 |
滚动条-x | 布尔值 | 用于启用弹跳。iOS 上的默认值为 true,Android 上的默认值为 false。 |
无限滚动
无限滚动用于在滚动经过页面底部时触发某些Behave。以下示例展示了其工作原理。在我们的控制器中,我们创建了一个用于将项目添加到列表的函数。当滚动经过最后加载的元素的 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” |
滚动委托
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方法。
委托方法
方法 | 参数 | 类型 | 细节 |
---|---|---|---|
滚动顶部(参数) | 应该动画 | 布尔值 | 滚动应该是动画的。 |
滚动底部(参数) | 应该动画 | 布尔值 | 滚动应该是动画的。 |
滚动到(参数1,参数2,参数3) | 左、上、shouldAnimate | 数字,数字,整数 | 前两个参数确定 x 轴和 y 轴偏移的值。 |
滚动(参数1,参数2,参数3) | 左、上、shouldAnimate | 数字,数字,整数 | 前两个参数确定 x 轴和 y 轴偏移的值。 |
ZoomTo(参数1,参数2,参数3,参数4) | 水平、动画、originLeft、originTop | 数字、布尔值、数字、数字 | level用于确定缩放到的级别。originLeft和originRight坐标应发生缩放的位置。 |
ZoomBy(参数1, 参数2, 参数3, 参数4) | 因素、动画、originLeft、originTop | 数字、布尔值、数字、数字 | 因子用于确定缩放的因子。originLeft和originRight坐标应发生缩放的位置。 |
获取滚动位置() | / | / | 返回具有两个数字作为属性的对象:left和right。这些数字分别表示用户从左侧和顶部滚动的距离。 |
锚点滚动(参数1) | 应该动画 | 布尔值 | 它将滚动到与 window.loaction.hash 具有相同 id 的元素。如果该元素不存在,则会滚动到顶部。 |
冻结滚动(参数1) | 应该冻结 | 布尔值 | 用于禁用特定滚动的滚动。 |
freezeAllScrolls(参数1) | 应该冻结 | 布尔值 | 用于禁用应用程序中所有卷轴的滚动。 |
getScrollViews() | / | 目的 | 返回滚动视图对象。 |
$getByHandle(参数1) | 处理 | 细绳 | 用于将方法连接到具有相同句柄的特定滚动视图。 $ionicScrollDelegate。$getByHandle('my-handle').scrollTop(); |