Ionic基础——幻灯指令 ion-slide-box

一.幻灯片 : ion-slide-box指令介绍

ion-slide-box可以做什么
   1. 可以做启动切换页面
   2. 可以做首页幻灯
   3. 可以做页面左右滑动切换

Ionic放在哪个指令使用

   主要放在ion-view中使用

   幻灯片也是一种常见的UI表现方式,它从一组元素中选择一个投射到屏幕可视区域,用户 可以通过滑动方式(向左或向右)进行切换。

   在ionic中,使用ion-slide-box指令声明幻灯片元素,使用ion-slide 指令声明幻灯页元素:

<ion-slide-box> 
   <ion-slide>...</ion-slide> 
   <ion-slide>...</ion-slide>
 ... 
</ion-slide-box>
示例:

<!DOCTYPE html>
<html ng-app="ionic">
<head>
	<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height">
    <script src="../lib/js/ionic.bundle.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../lib/css/ionic.min.css">
    <style type="text/css">
        ion-slide div{
            width:100%;
            height:600px;
            text-align:center;

        }

        ion-slide img{
            height:500px;
        }

    </style>
</head>
<body>

	<ion-slide-box>
		<ion-slide>
			<div class="box positive-bg">first</div>
		</ion-slide>
		<ion-slide>
			<div class="box energized-bg">second</div>
		</ion-slide>
		<ion-slide>
			<div class="box balanced-bg">thread</div>
		</ion-slide>
	</ion-slide-box>
</body>
</html>
二.ion-slide-box : 属性设置定制播放行为

指令ion-slide-box有一些可选的属性可以定制其播放行为: 

  • does-continue - 是否循环切换 你可能注意到,刚才的示例中,开头的幻灯页只能向左滑动,最后的幻灯页只能向右滑动。 将does-continue属性值设为true,就可以让幻灯页组首尾连接起来,循环切换。 
  • auto-play - 是否自动播放 通过将auto-play属性设置为true,可以让幻灯页自动切换。切换的间隔默认是4000ms,可以 通过属性slide-interval进行调整。 
  • slide-interval - 自动播放的间隔时间,默认为4000ms。
  • show-pager - 是否显示分页器 分页器用来指示幻灯页的选中状态,位于幻灯片的底部。 允许值为:true | false
<!DOCTYPE html>
<html ng-app="ionic">
<head>
	<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height">
    <script src="../lib/js/ionic.bundle.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../lib/css/ionic.min.css">
    <style type="text/css">
        ion-slide{
            text-align:center;
        }

        ion-slide img{
            width: 100%;
        }

    </style>
</head>
<body>
	<ion-slide-box does-continue="true" auto-play="true" slide-interval="1000" show-pager="true" >
        <ion-slide>
            <img src="img/01.png">
        </ion-slide>
        <ion-slide>
            <img src="img/02.png">
        </ion-slide>
        <ion-slide>
            <img src="img/03.png">
        </ion-slide>
        <ion-slide>
            <img src="img/04.png">
        </ion-slide>
	</ion-slide-box>
</body>
</html>

三. ion-slide-box : 事件及变量
    指令ion-slide-box提供了可选的用于事件监听的属性: 
  • pager-click - 分页器点击事件 pager-click属性应当设置为一个当前作用域上的函数调用表达式,这个函数将被 传入被点击的分页按钮对应的幻灯页序号:index 
  • on-slide-changed - 幻灯页切换事件 on-slide-changed属性应当设置为一个当前作用域上的函数调用表达式,这个函数 将被传入当前幻灯页的序号:$index active-slide - 当前幻灯页索引 
  • active-slide属性应当设置为一个当前作用域上的变量,当幻灯片切换时,这个变 量同步的反应当前的幻灯页索引号
四.脚本接口: $ionicSlideBoxDelegate
   可以使用服务$ionicSlideBoxDelegate在脚本中操作幻灯片对象: 
  • update() - 重绘幻灯片 有时,比如当容器尺寸发生变化时,需要调用update()方法重绘幻灯片。 
  • slide(to[,speed]) - 切换到指定幻灯页 参数to表示切换的目标幻灯页序号,参数speed是可选的,表示以毫秒 为单位的切换时间 
  • enableSlide([shouldEnable]) - 幻灯片使能 参数shouldEnable的允许值为:true | false 。 
  • previous() - 切换到前一张幻灯页 
  • next() - 切换到后一张幻灯页 
  • currentIndex() - 获得当前幻灯页的序号
  • slideCount() - 获得全部幻灯页的数量
<!DOCTYPE html>
<html ng-app="myApp">
<head>
	<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height">
    <script src="../lib/js/ionic.bundle.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../lib/css/ionic.min.css">
    <style type="text/css">
        ion-slide{
            height:600px;
            text-align:center;
        }

        ion-slide img{
            height:500px;
        }

    </style>
</head>
<body ng-controller="myCtrl">
	<ion-header-bar class="bar-positive">
		<h1 class="title">active : {{index}}</h1>
	</ion-header-bar>
	<ion-slide-box does-continue="true" show-pager="true" auto-play="true" on-slide-changed="go_changed(index)"  active-slide="index" pager-click="go(index)">
        <ion-slide>
            <img src="img/01.png">
        </ion-slide>
        <ion-slide>
            <img src="img/02.png">
        </ion-slide>
        <ion-slide>
            <img src="img/03.png">
        </ion-slide>
        <ion-slide>
            <img src="img/04.png">
        </ion-slide>
	</ion-slide-box>
</body>
</html>
<script type="text/javascript">
angular.module("myApp",["ionic"])
.controller("myCtrl",function($scope,$ionicSlideBoxDelegate){
	$scope.index = 0;
	$scope.go = function(index){
		$ionicSlideBoxDelegate.slide(index);
	}
    $scope.go_changed=function(index){
        console.log(index)
    }
});

</script>



一个完整示例:
<!DOCTYPE html>
<html ng-app="ionicApp">
<head>

  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">

  <title>Ionic App</title>

  <link href="http://code.ionicframework.com/nightly/css/ionic.min.css" rel="stylesheet">
  <link href="style.css" rel="stylesheet">

  <script src="http://code.ionicframework.com/nightly/js/ionic.bundle.min.js"></script>
  <script src="script.js"></script>

</head>

<body animation="slide-left-right-ios7">

  <ion-nav-bar class="nav-title-slide-ios7 bar-light">
    <ion-nav-back-button class="button-icon ion-arrow-left-c">
    </ion-nav-back-button>
  </ion-nav-bar>

  <ion-nav-view></ion-nav-view>

  <script id="intro.html" type="text/ng-template">
    <ion-view>

      <ion-nav-buttons side="left">
        <button class="button button-positive button-clear no-animation"
                ng-click="startApp()" ng-if="!slideIndex">
          Skip Intro
        </button>
        <button class="button button-positive button-clear no-animation"
                ng-click="previous()" ng-if="slideIndex > 0">
          Previous Slide
        </button>
      </ion-nav-buttons>

      <ion-nav-buttons side="right">
        <button class="button button-positive button-clear no-animation"
                ng-click="next()" ng-if="slideIndex != 2">
          Next
        </button>
        <button class="button button-positive button-clear no-animation"
                ng-click="startApp()" ng-if="slideIndex == 2">
          Start using MyApp
        </button>
      </ion-nav-buttons>




      <ion-slide-box on-slide-changed="slideChanged(index)">
        <ion-slide>
          <h3>Thank you for choosing the Awesome App!</h3>
          <div id="logo">
            <img src="http://code.ionicframework.com/assets/img/app_icon.png">
          </div>
          <p>
            We've worked super hard to make you happy.
          </p>
          <p>
            But if you are angry, too bad.
          </p>
        </ion-slide>
        <ion-slide>
          <h3>Using Awesome</h3>

          <div id="list">
            <h5>Just three steps:</h5>
            <ol>
              <li>Be awesome</li>
              <li>Stay awesome</li>
              <li>There is no step 3</li>
            </ol>
          </div>
        </ion-slide>
        <ion-slide>
          <h3>Any questions?</h3>
          <p>
            Too bad!
          </p>
        </ion-slide>

		<ion-slide>
          <h3>Any questions?</h3>
          <p>
            这是第四个
          </p>
        </ion-slide>

      </ion-slide-box>



    </ion-view>
  </script>

  <script id="main.html" type="text/ng-template">
    <ion-view hide-back-button="true" title="Awesome">
      <ion-content padding="true">
        <h1>Main app here</h1>
        <button class="button" ng-click="toIntro()">Do Tutorial Again</button>
      </ion-content>
    </ion-view>
  </script>

</body>
</html>

body {
  cursor: url('http://ionicframework.com/img/finger.png'), auto;
}
.slider {
  height: 100%;
}
.slider-slide {
  padding-top: 80px;
  background-color: #fff;
  color: #000;
  text-align: center;
  font-weight: 300;
  font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
}
#logo {
  margin: 30px 0px;
}
#list {
  margin: 30px auto;
  width: 170px;
  font-size: 20px;
}
#list ol {
  margin-top: 30px;
}
#list ol li {
  margin: 10px 0px;
  list-style: decimal;
  text-align: left;
}

angular.module('ionicApp', ['ionic'])

.config(function ($stateProvider, $urlRouterProvider) {

  $stateProvider
    .state('intro', {
      url: '/',
      templateUrl: 'intro.html',
      controller: 'IntroCtrl'
    })
    .state('main', {
      url: '/main',
      templateUrl: 'main.html',
      controller: 'MainCtrl'
    });

  $urlRouterProvider.otherwise("/");

})

.controller('IntroCtrl', function ($scope, $state, $ionicSlideBoxDelegate) {

  // Called to navigate to the main app
  $scope.startApp = function () {
    $state.go('main');
  };
  $scope.next = function () {
    $ionicSlideBoxDelegate.next();
  };
  $scope.previous = function () {
    $ionicSlideBoxDelegate.previous();
  };

  // Called each time the slide changes
  $scope.slideChanged = function (index) {
    $scope.slideIndex = index;
  };
})

.controller('MainCtrl', function ($scope, $state) {
  console.log('MainCtrl');

  $scope.toIntro = function () {
    $state.go('intro');
  };
});

     







  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值