使用ionic中ion-slide-box实现移动app轮播特效

H5混合式移动开发框架ionic,是使用angularJS的语法,加上大名鼎鼎的移动应用开发框架cordova的核心。它的特点是跨平台、入门简单、可以减少开发周期。实质上,ionic就是用制作网页的技术来开发移动app

下面使用ionicion-slide-box实现移动app轮播特效。

一、基本结构

其基本结构就是用ion-slide-box标签包含若干个<ion-slide>标签:

<ion-slide-box>

<ion-slide>

第一张图片

</ion-slide>

<ion-slide>

  第二张图片

</ion-slide>

<ion-slide>

第三张图片

</ion-slide>

  ……

</ion-slide-box>

二、ion-slide-boxAPI

属性

类型

详情

does-continue (可选)

布尔值

是否循环切换:幻灯页默认只能向左滑动,最后的幻灯页只能向右滑动。将does-continue属性值设为true,就可以让幻灯页组首尾连接起来,循环切换。

slide-interval (可选)

数字

自动播放的间隔时间,默认为4000毫秒。

show-pager (可选)

布尔值

否显示分页器分页器用来指示幻灯页的选中状态,位于幻灯片的底部,默认为黑色的实心小圆

pager-click (可选)

表达式

如果shou-pagertrue,当点击页面分页器时,触发该表达式,传递一个'索引'变量。

on-slide-changed (可选)

表达式

当幻灯页滑动时,触发该表达式。传递一个'索引'变量。

active-slide (可选)

表达式

根据下标值,指定选中的幻灯页。

auto-play(可选)

布尔值

是否自动播放幻灯页

三、$ionicSlideBoxDelegate介绍

可以使用$ionicSlideBoxDelegate控制所有的滑动框,常见方法如下:

方法名

参数/参数类型

详情

slide(to, [speed])

number

to:滑上指定的幻灯片的下标值

speed:滑动锁花费的时间,单位为毫秒

previous([speed])

number

speed:返回前一个幻灯片所花的时间,单位为毫秒。

next([speed])

number

speed:跳到下一个幻灯片所花的时间,单位为毫秒。

stop()

停止滑动

start()

开始滑动

currentIndex()

返回当前播放幻灯页的下标值。

slidesCount()

 

返回幻灯片总的片数

四、源码

<!DOCTYPE html>

<html ng-app="myApp">

    <head>

       <meta charset="UTF-8">

       <title>使用ionicion-slide-box实现移动app轮播特效</title>

       <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0,user-scalable=no,width=device-width" />

       <link rel="stylesheet" href="css/ionic.css" />

       <script type="text/javascript"src="js/ionic.bundle.min.js"></script>

       <style>

           img{

              max-width:100%;

           }

       </style>

    </head>

    <body ng-controller="myController">

       <ion-header-bar class="bar-positive">

           <ion-title>

              <h3>移动app轮播特效的制作</h3>

           </ion-title>

       </ion-header-bar>

       <ion-content>

           <ion-slide-box active-slide="model.activeIndex" does-continue="true" slide-interval="1000" auto-play="true" show-pager="true" pager-click="toSlideIndex(index)" on-tap="stopOrStart()">

              <ion-slide>         

                 <img src="img/1a.jpg" />       

              </ion-slide>

              <ion-slide>

                  <img src="img/2a.jpg" />

              </ion-slide>

              <ion-slide>

                  <img src="img/3a.jpg" />

              </ion-slide>

              <ion-slide>

                  <img src="img/4a.jpg" />

              </ion-slide>

              <ion-slide>

                  <img src="img/5a.jpg" />

              </ion-slide>

           </ion-slide-box>

       </ion-content>

       <ion-footer-bar class="bar-positive"></ion-footer-bar>

       <script>

           angular.module("myApp", ['ionic'])

                .controller("myController", function($scope, $ionicSlideBoxDelegate) {

                  $scope.model = {

                     activeIndex: "2",

                  };

                  /**

                   * 单击分页器,跳到指定的幻灯片

                   */

                  $scope.toSlideIndex = function(index) {

                     $scope.model.activeIndex = index;

                  };

                  /**

                   * 第一次轻击幻灯片,停止轮播

                   * 第二次轻击幻灯片,开始轮播

                   * 依次循环

                   */

                  $scope.even = 0;

                  $scope.stopOrStart = function() {

                     if($scope.even == 0) {

                         $ionicSlideBoxDelegate.stop();

                         $scope.even=1;

                     } else {

                         $ionicSlideBoxDelegate.start();

                         $scope.even=0;

                     }

 

                  }

              });

       </script>

    </body>

</html>

五、提升

  1、修改样式

运行代码,在浏览器中点击F12,查看具体的样式,找到对应的样式名,重写ionic项目中的css就可以了,比如可以把分页器的小圆心变为白色的。

  2、异步加载

如果网页中的图片地址是从数据库获取的,建议使用ajax,在ionic中,可以使用$http.get()方法异步加载图片,如果存在跨域问题,则可以使用$http.jsonp()方法。然后遍历即可:

<ion-slide ng-repeat="m in imgs">         

                 <img src="img/{{m.imgUrl}}" /> 

              </ion-slide>

有时候会出现图片无法加载出来,可以在在相应的controller文件增加 $ionicSlideBoxDelegate.update()$ionicSlideBoxDelegate.update(); 就是当容器尺寸发生变化时,需要调用update()方法重绘幻灯片,更新滑动框;另外一种解决方案就是用ng-if判断遍历的数组是否为空,不为空时再用repeat遍历该数组即可:

<ion-slide-box active-slide="model.activeIndex" does-continue="true" auto-play="true" ng-if="imgs">

              <ion-slide ng-repeat="m in imgs"

                 <img src="img/{{m.imgUrl}}" /> 

              </ion-slide>

           </ion-slide-box>

如果轮播至最后一个不轮播,可以在相应的controller文件增加 $ionicSlideBoxDelegate.loop(true)

 

  

IONIC 功能全演示 ===================== - 使用Ionic提供的UI 组件。Ionic本身是致力于建立统一的移动混合app构建平台,核心基础是Angular+Cordova。 - 通过Angular指令封装,以及预定义的CSS,提供了开箱即用的HTML5 Mobile组件。 - 构建与开发支持,能够直接运行www目录下的index.html进行开发调试。同时也支持发布人员利用gulp构建输出到dist目录 - 利用gulp,同样演示了单元测试以及场景测试。 - [在线演示,内有地址二维码,可手机浏览](http://1.thm1118.sinaapp.com/static/ionic/www/index.html) ## 预览 ![信息卡片](screenshot/card.png) ![下拉刷新](screenshot/pullrefress.png) ![表单元素](screenshot/form.png) ![菜单](screenshot/menu.png) ![列表左滑按钮](screenshot/option.png) ![弹出层](screenshot/pop.png) ![tab](screenshot/tab.png) ![幻灯](screenshot/slide.png) ![图片水平滚动](screenshot/hscroll.png) ![毛玻璃效果](screenshot/blure.png) ![2000条数据搜索](screenshot/search.png) ![输入自动完成](screenshot/autocomplete.png) ![列表自动分组](screenshot/autogroup.png) ![媒体相册](screenshot/galaxy.png) ![chartjs统计图](screenshot/chartjs.png) ![百度统计图](screenshot/echat.png) ![图片延时加载](screenshot/imageload.png) ## 基础环境 纯webapp运行或演示,只需要一个 web server部署即可。 ## 目录结构说明 - www 目录:源码目录 - dist目录:构建输出目录 ## 利于开发,测试和打包部署的nodejs环境 简单开发可以不依赖nodejs环境。但是有了基于nodejs的javascript完整开发周期环境,会极大提升开发效率,保障质量。 - nodejs 最新版。 - 有些node包的安装需要c++编译,x86版本只需要 x86的C++编译器,windows上的x64 c++编译器需要特别设置。 - npm 会很慢,要么使用代理,要么使用国内镜像,比如 [淘宝镜像](http://npm.taobao.org/) , 使用淘宝镜像后,npm命令需要替换成cnpm命令。 - `npm install -g gulp` - `npm install -g ionic` - 如需编译sass的话,安装 [ruby](https://www.ruby-lang.org/zh_cn/),再执行 `gem install sass`(如遇到ssl错误,修改为http源:gem source -a http://rubygems.org/) - `npm install -g node-gyp` - 有的node包依赖python编译,安装 [python2.7](https://www.python.org/) - c++编译环境[MSVStudio 免费版](https://www.visualstudio.com/downloads/download-visual-studio-vs#d-express-windows-desktop).。注意根据studio不同版本指定 --msvs_version=2013 选项 - 安装项目开发依赖包,在项目根目录下运行 `npm install` ### “所见即所得”式开发 - 在项目根目录下运行 `ionic serve`,即可在www目录下开展“所见即所得”的方式开发 - 另外一种方式,在webstorm里对index.html 按debug运行,同样是“所见即所得”的方式开发 ### CROS支持 - 生产环境的 CROS支持要么使用jsonp技术,要么在服务端设置代理。 -开发环境下要么 基于不安全做法,服务端api 设置头`Access-Control-Allow-Origin:*" `,要么按如下便捷设置: 基于`ionic serve`, 可以在开发使用本地代理。ionic.project 内设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值