一. 侧边栏菜单 : ion-side-menus

侧边栏菜单是一个最多包含三个子容器的元素:

默认情况下,侧边栏菜单将只显示ion-side-menu-content容器的内容。

向左滑动时,将显示右边栏ion-side-menu容器的内容,向右滑动时,将显示左边栏 ion-side-menu容器的内容。

在ionic中,使用ion-side-menus指令定义侧边栏菜单:

  1. <ion-side-menus>
  2. <!-- 中间内容 -->
  3. <ion-side-menu-content ng-controller="ContentController"> </ion-side-menu-content>
  4. <!-- 左侧菜单 -->
  5. <ion-side-menu side="left"> </ion-side-menu>
  6. <!-- 右侧菜单 -->
  7. <ion-side-menu side="right"> </ion-side-menu>
  8. </ion-side-menus>

  

  

  1. <!--切换左侧栏显示状态-->
  2. <any menu-toggle="left"></any>
  3. <!--切换右侧栏显示状态-->
  4. <any menu-toggle="right"></any>

  menu-close指令用来给元素增加关闭侧栏内容的功能:

  1. <any menu-close=""></any>

  与menu-toggle指令不同,menu-close不需要指定要关闭的侧栏是哪一边,它直接将当前打开的侧栏关闭。

  1. <!DOCTYPE html>
  2. <html ng-app="ionic">
  3. <head>
  4. <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height">
  5. <script src="../../lib/js/ionic.bundle.min.js"></script>
  6. <link rel="stylesheet" type="text/css" href="../../lib/css/ionic.min.css">
  7. </head>
  8. <body>
  9. <ion-side-menus>
  10. <ion-side-menu-content>
  11. <ion-header-bar class="bar-dark">
  12. <a menu-toggle="left" class="button icon ion-navicon"></a>
  13. <h1 class="title">ion-side-menu-content</h1>
  14. </ion-header-bar>
  15. <ion-content class="positive-bg">
  16.  
  17. <a menu-close="" class="button icon ion-navicon"></a>
  18. </ion-content>
  19. </ion-side-menu-content>
  20.  
  21. <ion-side-menu side="left" width="150">
  22. <ion-content class="balanced-bg">
  23. </ion-content>
  24. </ion-side-menu>
  25.  
  26. </ion-side-menus>
  27. </body>
  28. </html>

  三. ion-side-menu-content 属性设置

使用指令ion-side-menu-content声明侧边栏菜单的主显示区域容器:

  1. <ion-side-menu-content>...</ion-side-menu-content>

  ion-side-menu-content指令有以下可选属性:

  • drag-content - 是否允许拖动内容打开侧栏菜单,默认为true。

允许值:true | false。当设置为false时,将禁止通过拖动内容打开侧栏菜单。

  • edge-drag-threshold - 是否启用边距检测。默认为false。
   允许值:number | true | false。
   如果设置为一个正数,那么只有当拖动发生在距离边界小于这个数值的情况下,才触发侧栏显示。
   当设置为true时,使用默认的25px作为边距阈值。 
   如果设置为false或0,则意味着禁止边距检测,可以在内容区域的任何地方 拖动来打开侧栏。
四.侧边栏区域容器 : ion-side-menu 属性
   使用指令ion-side-menu声明侧边栏区域容器:
  1. <ion-side-menu>...</ion-side-menu>

  

 ion-side-menu指令有以下属性:
  • side - 位于内容区的左边或右边。side属性是必须的。允许值:left | right。默认值为left。
  • width - 侧边栏的宽度 width属性是可选的,表示以像素为单位的侧栏菜单宽度。默认为275px。
  • is-enabled - 是否可用。is-enabled属性是可选的,声明该侧边栏是否可用,允许值为:true | false ,默认为true。 当侧边栏不可用时,拖拽内容或使用切换按钮都无法打开侧栏菜单。
  • expose-aside-when - 侧边栏自动显示条件表达式。默认情况下,侧边栏是隐藏的,需要用户向左或向右拖动内容,或者通过一个切换按钮来打开。 但是在有些场景下(比如,横放的平板)屏幕宽度足够大,这时,自动地显示侧边栏内容会更合理。  expose-aside-when属性就是处理这种情况的,和CSS3的@meida类似,expose-aside-when需要 一个CSS表达式,例如:expose-aside-when="(min-width:500px)",这意味着当屏幕宽度大于 500px时将自动显示侧栏菜单。  ionic为expose-aside-when提供了一个快捷选项:large , 这等同于 (min-width:768px)。
  1. <!DOCTYPE html>
  2. <html ng-app="ionic">
  3. <head>
  4. <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height">
  5. <script src="../../lib/js/ionic.bundle.min.js"></script>
  6. <link rel="stylesheet" type="text/css" href="../../lib/css/ionic.min.css">
  7. </head>
  8. <body>
  9. <ion-side-menus>
  10. <ion-side-menu-content drag-content="true" edge-drag-threshold=50>
  11. <ion-header-bar class="bar-positive">
  12. <a menu-toggle="left" class="button icon ion-navicon"></a>
  13. <h1 class="title">ion-side-menu-content</h1>
  14. </ion-header-bar>
  15. <ion-content>
  16. <p>this is main area of side-menus</p>
  17. </ion-content>
  18. <div class="marker energized-bg"></div>
  19. </ion-side-menu-content>
  20. <ion-side-menu side="left" width="150" expose-aside-when="(min-width:500px)">
  21. <ion-content class="balanced-bg">
  22. </ion-content>
  23. </ion-side-menu> </ion-side-menus>
  24. </body>
  25. </html>

  五. 脚本中控制侧边栏菜单接口 : $ionicSideMenuDelegate

  • toggleLeft([isOpen]) - 是否打开左侧栏菜单,参数isOpen是可选的,默认为true ,表示打开左侧栏菜单。
  • toggleRight([isOpen]) - 是否打开右侧栏菜单,参数isOpen是可选的,默认为true ,表示打开右侧栏菜单。
  • getOpenRatio() - 侧栏菜单打开的宽度占其总宽度比例。例如,一个100px宽的侧栏菜单,如果打开50px,那么其比例为50%,getOpenRatio()将返回0.5 。
  • isOpen() - 当前侧栏菜单是否打开。不管是左侧栏菜单,还是右侧栏菜单,只要处于打开状态,isOpen()都返回true。
  • isOpenLeft() - 左侧栏菜单是否打开。当左侧栏菜单处于打开状态时,isOpenLeft()返回true。
  • isOpenRight() - 右侧栏菜单是否打开。当右侧栏菜单处于打开状态时,isOpenRight()返回true。
  • canDragContent([canDrag]) - 是否允许拖拽内容以打开侧栏菜单。canDrag参数是可选的,如果canDrag为true,表示允许通过拖拽内容打开侧栏菜单。
  • edgeDragThreshold(value) - 设置边框距离阈值。当参数value为false或0时,意味着在内容区域任何位置进行拖拽都可以打开侧栏菜单。 如果参数value为一个数值,意味着只有当拖拽发生的位置距边框不大于此数值时,才能打开 侧栏菜单。 参数value为true等同于将value设置为25。
    1. <!DOCTYPE html>
    2. <html ng-app="myApp">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no,width=device-width,height=device-height">
    6. <script src="../../lib/js/ionic.bundle.min.js"></script>
    7.  
    8. <link rel="stylesheet" type="text/css" href="../../lib/css/ionic.min.css">
    9. <script>
    10. angular.module("myApp",["ionic"])
    11. .controller("myCtrl",function($scope,$ionicSideMenuDelegate){
    12. $scope.toggle = function(){
    13. $ionicSideMenuDelegate.toggleLeft();
    14. };
    15. });
    16.  
    17. </script>
    18. </head>
    19. <body ng-controller="myCtrl">
    20. <ion-side-menus>
    21. <ion-side-menu-content>
    22. <ion-header-bar class="bar-positive">
    23. <a class="button" ng-click="toggle();">切换</a>
    24. <h1 class="title">ion-side-menu-content</h1>
    25. </ion-header-bar>
    26. <ion-content class="calm-bg">
    27. </ion-content>
    28. </ion-side-menu-content>
    29. <ion-side-menu side="left" width="120">
    30. <ion-content class="balanced-bg">
    31. </ion-content>
    32. </ion-side-menu>
    33. <ion-side-menu side="right" width="120" >
    34. <ion-content class="energized-bg">
    35. </ion-content>
    36. </ion-side-menu>
    37. </ion-side-menus>
    38. </body>
    39. </html>

      

    六. 脚本ion-tap结合 ion-side-menus一起使用:
        记住要将ion-tap标签置于ion-side-menu-content标签内。

Ionic基础——侧边栏ion-side-menus 以及ion-tap结合侧边栏详解的更多相关文章

  1. Vue基础语法-数据绑定、事件处理和扩展组件等知识详解(案例分析,简单易懂,附源码)

    前言: 本篇文章主要讲解了Vue实例对象的创建.常用内置指令的使用.自定义组件的创建.生命周期(钩子函数)等.以及个人的心得体会,汇集成本篇文章,作为自己对Vue基础知识入门级的总结与笔记. 其中介绍 ...

  2. Spring Boot 2.x基础教程:Swagger接口分类与各元素排序问题详解

    之前通过Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档一文,我们学习了如何使用Swagger为Spring Boot项目自动生成API文档,有不少用户留言问了关于文档 ...

  3. MySQL基础篇(06):事务管理,锁机制案例详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.锁概念简介 1.基础描述 锁机制核心功能是用来协调多个会话中多线程并发访问相同资源时,资源的占用问题.锁机制是一个非常大的模块,贯彻MyS ...

  4. 基础知识复习(一)——C语言位运算符详解

    常用的位运算符:与(&),取反(~),或(|),异或(^),左移(«),右移(») 1. 与(&)操作符,按位与,全为1 时,结果取1 11001 &10011 结果:1000 ...

  5. 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解

    本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...

  6. Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。

    Python urllib模块urlopen()与urlretrieve()的使用方法详解   1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) ...

  7. Python学习入门基础教程(learning Python)--2.3.3Python函数型参详解

    本节讨论Python下函数型参的预设值问题. Python在设计函数时,可以给型参预设缺省值,当用户调用函数时可以不输入实参.如果用户不想使用缺省预设值则需要给型参一一赋值,可以给某些型参赋值或不按型 ...

  8. MYSQL—— 基础入门,select 查询涉及到的关键字组合详解(进阶篇)

    SELECT查询组合使用的关键字很多,首先将最简单常用的关键字进行区分及使用,后续再继续补充............ 以下所有的关键字组合使用,主要以两个表students与students_scor ...

  9. Nginx基础篇(2)- Nginx基本配置文件和变量详解

    Nginx基本配置文件和变量详解 1. 基本配置文件 /etc/nginx/nginx.conf # nginx运行的用户 user nginx; # nginx进程数,建议设置为等于CPU总核心数. ...

  10. Java基础学习总结(24)——Java单元测试之JUnit4详解

    Java单元测试之JUnit4详解 与JUnit3不同,JUnit4通过注解的方式来识别测试方法.目前支持的主要注解有: @BeforeClass 全局只会执行一次,而且是第一个运行 @Before  ...

随机推荐

  1. 封装自己的JS库

    一.基础知识 1.点击计数 第一种: var aBtn=document.getElementsByTagName('input'); var i=0; for(i=0;i<aBtn.lengt ...

  2. Codeforces Round #257 (Div. 1) (Codeforces 449D)

    思路:定义f(x)为 Ai & x==x  的个数,g(x)为x表示为二进制时1的个数,最后答案为    .为什么会等于这个呢:运用容斥的思想,如果 我们假设 ai&x==x 有f(x ...

  3. iOS解决两个静态库的冲突 duplicate symbol

    http://blog.163.com/023_dns/blog/static/118727366201391544630380/ 场景: 解决TencentOpenAPI.framework与Zba ...

  4. web安全 -- 常见攻击方法及预防措施

    一.sql注入 sql注入,是指攻击者在猜测出服务器上要执行sql后:通过输入数据,拼接原来要执行的sql而形成新的sql:从而到达改变原来查询的意义的目的. -- 原来sql select xxx ...

  5. fragment 添加menu

    http://bbs.51cto.com/thread-1091458-1-1.html 有详解 @Override public void onCreate(Bundle savedInstance ...

  6. Python单元测试——unittest

    unittest是python自带的一个模块 python344\Lib\unittest 官方参考文档: http://docs.python.org/2.7/library/unittest.ht ...

  7. (转)深入浅出 iOS 之生命周期

    原文:http://www.cocoachina.com/applenews/devnews/2011/0817/3129.html 深入浅出 iOS 之生命周期 发布于:2011-08-17 10: ...

  8. a various of context

    ContextWrapper.getApplicationContext():Return the context of the single, global Application object o ...

  9. 12-26 tableView的学习心得

    一:基础部分 UITableView的两种样式: 注意是只读的 1.UITableViewStytlePlain(不分组的) n 2.UITableViewStyleGrouped(分组的) 二:如何 ...

  10. Osmocom-BB多信道修改代码相关

    修改bb\src\target\firmware\layer1\prim_rx_nb.c 文件 这个nb表示normalburst,指的是ccch的数据,用专业的术语,应该是,一个ccch的burst ...