ionic的侧滑和下拉刷新效果

一,侧滑效果

主要涉及到三个地方

1,菜单页面

主要分为主页面和侧滑页面两部分,又分别都包含顶部bar和主要内容部分

注意:主页面内容部分,关键的菜单内容name要对应到是菜单内容的页面(在app.js中,下面会贴出)

item href的构成:1,#本页面  2,app本页面链接   3,todolist/{{menu.groupId}}列表页面链接(没有冒号)

<ion-side-menus>
  <!--主页面-->
  <ion-side-menu-content class="bar-positive">
    <!--主页面顶部bar-->
    <ion-nav-bar class="bar-positive">
      <ion-nav-back-button class="button-clear"><i class="icon ion-chevron-left"></i></ion-nav-back-button>
    </ion-nav-bar>
    <!--主页面内容 关键的菜单内容name要对应到是菜单内容的页面-->
    <ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view>
  </ion-side-menu-content>
  <!--侧滑页面-->
  <ion-side-menu side="left">
    <!--侧滑页面顶部bar-->
    <ion-header-bar align-title="center" class="bar-dark">
      <h1 class="title">需求</h1>
      <div class="buttons pull-right" nav-clear menu-close ng-click="settings()">
        <button class="button button-icon icon ion-gear-b"></button>
      </div>
    </ion-header-bar>
    <!--侧滑页面主要内容-->
    <ion-content class="has-header">
      <ion-list>
        <!--item href的构成:1,#本页面  2,app本页面链接   3,todolist/{{menu.groupId}}列表页面链接(没有冒号)-->
        <ion-item nav-clear menu-close ng-repeat="menu in menus" href="#/app/todolist/{{menu.groupId}}">

          <i class="icon ion-android-clock"></i>  {{menu.title}} <span class="badge" ng-if="menu.badge>0">{{menu.badge}}</span>
        </ion-item>
      </ion-list>
    </ion-content>

  </ion-side-menu>
</ion-side-menus>

2,app.js

在配置页面记得,通过菜单内容页面的name,把菜单和菜单内容页关联起来

angular.module('todo.io', ['ionic', 'todo.io.directives', 'todo.io.filters', 'todo.io.services', 'todo.io.controllers', 'nsPopover','LocalStorageModule','ngCordova'])

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    if(window.cordova && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
    }
    if(window.StatusBar) {
      StatusBar.styleDefault();
    }
  });
})

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

     .state('tutorial', {
        url: '/',
        templateUrl: 'templates/tutorial.html',
        controller: 'TutorialCtrl'
     })

     .state('sign', {
        url: '/sign',
        templateUrl: 'templates/sign.html',
        controller: 'SignCtrl'
     })

    .state('app', {
      url: "/app",
      abstract: true,
      templateUrl: "templates/menu.html",
      controller: 'AppCtrl'
    })

    //通过菜单内容页面的name,把菜单和菜单内容页关联起来
    .state('app.todolist', {
      url: "/todolist/:groupId",
      views: {
        'menuContent' :{
          templateUrl: "templates/todo_list.html",
          controller: 'TodolistsCtrl'
        }
      }
    })

    .state('app.todolistedit', {
      url: "/todolist/edit/:groupId",
      views: {
        'menuContent' :{
          templateUrl: "templates/todo_list_edit.html",
          controller: 'TodolistsEditCtrl'
        }
      }
    })

    .state('app.todoinfo', {
      url: "/todo/:todoId",
      views: {
        'menuContent' :{
          templateUrl: "templates/todo_info.html",
          controller: 'TodoCtrl'
        }
      }
    })

    .state('app.grouplist', {
      url: "/group",
      views: {
        'menuContent' :{
          templateUrl: "templates/group_list.html",
          controller: 'GrouplistCtrl'
        }
      }
    })

    .state('app.groupinfo', {
      url: "/group/:groupId",
      views: {
        'menuContent' :{
          templateUrl: "templates/group_info.html",
          controller: 'GroupCtrl'
        }
      }
    })

    .state('app.search', {
      url: "/search",
      views: {
        'menuContent' :{
          templateUrl: "templates/search.html",
          controller: 'SearchCtrl'
        }
      }
    })

    .state('app.settings', {
      url: "/settings",
      views: {
        'menuContent' :{
          templateUrl: "templates/settings.html",
          controller: 'SettingsCtrl'
        }
      }
    });

  $urlRouterProvider.otherwise('/');
});

3,菜单内容页面

主要就是关联菜单的button,设置此属性就行menu-toggle

<ion-nav-buttons side="left">
    <button menu-toggle="left" class="button button-icon icon ion-navicon-round"></button>
    <button class="button button-icon icon ion-refresh" ng-show="groupId==1" ng-click="refresh()"></button>
  </ion-nav-buttons>

效果图(电脑浏览器的,手机也一样)

二,下拉刷新

主要两部分控制部分和页面部分

1,页面部分

ion-refresher刷新控件,on-refresh设置刷新方法,还有下拉文字,刷新文字,下拉效果图

<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 Pull to Refresh</title>

		<link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
		<script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>
		<script type="text/javascript" src="js/new_file2.js"></script>
		<link rel="stylesheet" type="text/css" href="css/new_file.css" />

	</head>

	<body ng-controller="MyCtrl">

		<ion-header-bar class="bar-positive">
			<h1 class="title">Pull To Refresh</h1>
		</ion-header-bar>
        <!--ion-loading abcd四种效果-->
		<ion-content>
			<ion-refresher on-refresh="doRefresh()"
			               pulling-text="Pull to refresh..."
			               refreshing-text="Refreshing!"
			               refreshing-icon="ion-loading-b">

			</ion-refresher>
			<ion-list>
				<ion-item ng-repeat="item in items">{{item}}</ion-item>
			</ion-list>
		</ion-content>

	</body>

</html>

2,控制部分

主要就是控制完成刷新后,通知关闭刷新效果

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

.controller('MyCtrl', function($scope, $timeout) {
  $scope.items = ['Item 1', 'Item 2', 'Item 3'];

  $scope.doRefresh = function() {

    console.log('Refreshing!');
    $timeout( function() {
      //simulate async response
      $scope.items.push('New Item ' + Math.floor(Math.random() * 1000) + 4);

      //Stop the ion-refresher from spinning
      $scope.$broadcast('scroll.refreshComplete');

    }, 1000);

  };

});

另外找到ionic的svg动画效果图,可是不知道怎么加入

代码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 Pull to Refresh</title>

    <link href="//code.ionicframework.com/nightly/css/ionic.css" rel="stylesheet">
    <script src="//code.ionicframework.com/nightly/js/ionic.bundle.js"></script>

    <link rel="stylesheet" type="text/css" href="css/new_file.css"/>
    <script type="text/javascript" src="js/new_file.js"></script>
  </head>
  <body ng-controller="MyCtrl">

    <ion-header-bar class="bar-positive">
      <h1 class="title">Animated SVGs</h1>
    </ion-header-bar>

    <ion-content>
      <p>
        <ion-spinner icon="android" ></ion-spinner>
        <ion-spinner icon="ios"></ion-spinner>
        <ion-spinner icon="ios-small"></ion-spinner>
        <ion-spinner icon="bubbles" class="spinner-balanced"></ion-spinner>
        <ion-spinner icon="circles" class="spinner-energized"></ion-spinner>
      </p>

      <p>
        <ion-spinner icon="crescent" class="spinner-royal"></ion-spinner>

        <ion-spinner icon="dots" class="spinner-dark"></ion-spinner>
        <ion-spinner icon="lines" class="spinner-calm"></ion-spinner>
        <ion-spinner icon="ripple" class="spinner-assertive"></ion-spinner>
        <ion-spinner icon="spiral"></ion-spinner>
      </p>

    </ion-content>

  </body>
</html>

css

body {
  cursor: url('http://ionicframework.com/img/finger.png'), auto;
}
p {
   text-align: center;
   margin-bottom: 40px !important;
}
.spinner svg {
  width: 19% !important;
  height: 85px !important;
}

例1代码下载 http://download.csdn.net/detail/superjunjin/8562153

例2代码下载 http://download.csdn.net/detail/superjunjin/8562139

时间: 2024-10-22 23:33:49

ionic的侧滑和下拉刷新效果的相关文章

Ionic Js三:下拉刷新

在加载新数据的时候,我们需要实现下拉刷新效果,代码如下: HTML 代码 <body ng-app="starter" ng-controller="actionsheetCtl" > <ion-pane> <ion-content > <ion-refresher pulling-text="下拉刷新" on-refresh="doRefresh()"></ion-ref

手机端轻应用模拟原生的下拉刷新效果(JavaScript)

方案一:使用iscoll等有下拉功能的框架. 分析:因为项目的结构已经基本完成,再使用框架,会与原来的结构互相影响: 方案二:用JavaScript.Jquery写. 分析:可能没有直接使用框架的效果好,但可以尽量使效果贴近原生. 综合考虑,采用方案二. ///////////////////////////////////////////////////////////////////////////////////////////////// 参考博客:http://www.cnblogs.

关于h5手机端上拉加载和下拉刷新效果-1

1.手机端目前很火的效果,上拉加载,和下拉刷新.目前主要使用 iscroll 框架来实现.先推荐一个iscroll中文学习的网站,不要感谢,我是雷锋. 2.https://iiunknown.gitbooks.io/iscroll-5-api-cn/content/ 3.今天在上班,等晚上我再详细介绍一下,么么哒..

仿今日头条下拉出现SearchBar,再下拉刷新效果,SearchListView实现以及原理讲解

先看效果 分别是我的效果和今日头条的效果: 以上效果包括: 1.如果下拉的高度超过search view的高度的3/4,但是小于head view高度,则松开手时search view自动出现 2.如果下拉的高度小于search view的高度的1/4,则松开手时search view自动回弹消失 3.如果下拉的高度超过head view的总高度,则松手进行刷新 4.刷新完成自动隐藏search view 实现原理讲解 参考了 github开源项目:[https://github.com/viv

代码实现Android5.0的下拉刷新效果

如图所示,实现类似与gmail的下拉刷新. 项目地址:https://github.com/stormzhang/SwipeRefreshLayoutDemo 一.在xml文件中定义 这个控件在supportV4就提供了,叫做SwipeRefreshLayout.这个view其实就是一个父控件,我们可以如下定义. <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/a

ionic 下拉刷新 — ion-refresher

在做项目的时候一般会遇到下拉刷新的功能,我不知道大家平时是怎么实现的.因为我们现阶段使用的是 ionic,所以我就学习了一下利于框架去实现下拉刷新的功能.下面给家说一下怎么用ionic实现页面的下拉刷新吧. 具体的实现请看下面的源码: HTML 代码 ion-refresher : 即为下拉刷新的图标: pulling-text="下拉刷新" 这里的问题可以随意更换,喜欢就好: on-refresh="doRefresh()" 这个便是当下拉的时候我们要执行的方法,

使用 CSS overscroll-behavior 控制滚动行为:自定义下拉刷新和溢出效果

CSS 的新属性 overscroll-behavior 允许开发者覆盖默认的浏览器滚动行为,一般用在滚动到顶部或者底部. 背景 滚动边界和滚动链接(boundary & chaining) 在 APP 中经常使用的抽屉导航(drawer)中,我们期望的效果是:滚动到底部时,滚动停止,因为我们到达了"滚动边界". 但是在 Web 页面中滚动并不会停止,而是继续滚动抽屉后面的内容.效果如下: 我们称这种行为叫滚动链接(scroll chaining). 下拉刷新 pull-to-

&lt;第三方&gt;TGRefreshO按照QQ的刷新方式下拉刷新

一 .使用方法: 刷新机制,类似QQ一样的刷新机制,弹簧.橡皮筋下拉刷新控件,类似QQ下拉刷新效果,同时支持其他样式: 首先写上这一句(必须的) #import <TGRefresh.h> 如果需要,在你的控制器中加上一句 self.automaticallyAdjustsScrollViewInsets=NO; QQ效果 self.tableview.tg_header = [TGRefreshOC  refreshWithTarget:self action:@selector(doRef

Android打造通用的下拉刷新组件

还记得上一篇 blog 的内容吗?如果不记得建议先去了解一下,Android 事件处理全面剖析 ,因为下拉刷新需要用到手势的处理,而上一篇文章中,对事件处理做了很详细的说明,了解了事件的处理机制,对理解本篇文章有很大的帮助.好了,这里就当大家都已经对事件处理有了一定的了解,开始我们的下拉刷新征程. 还是老规矩,先上效果图,再根据效果图来分析实现的原理: 一 .分析原理 我们都知道,listView 控件为我们提供了 addHeaderView.和 addFootView 的方法,我们通过此方法可