- 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(); |
广告