AngularJS实现tab选项卡的方法详解


Posted in Javascript onJuly 05, 2017

本文实例讲述了AngularJS实现tab选项卡的方法。分享给大家供大家参考,具体如下:

一、代码实现

<!DOCTYPE html>
<html ng-app='app'>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style>
      *{
        list-style: none;
        margin: 0;
        padding: 0;
      }
      .TabNav{
        height: 131px;
        width: 450px;
        position: relative;
        margin-left: auto;
        margin-right: auto;
        margin-top: 100px;
      }
      .TabNav ul li{
        float: left;
        background: -webkit-gradient(linear,left top,left bottom, from(#fefefe), to(#ededed));
        border: 1px solid #ccc;
        padding: 5px 0;
        width: 100px;
        text-align: center;
        margin-left: -1px;
        position: relative;
        cursor: pointer;
      }
      .TabCon{
        position: absolute;
        left: -1px;
        top: 30px;
        border: 1px solid #ccc;
        border-top: none;
        width: 403px;
        height: 100px;
      }
      .TabNav ul li.active{
        background: #FFFFFF;
        border-bottom: none;
      }
    </style>
    <script src="js/angular.min.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>
    <div class="TabNav">
      <ul ng-init='activeTab=1'>
        <li ng-class='{active:activeTab==1}' ng-click='activeTab=1'>许嵩</li>
        <li ng-class='{active:activeTab==2}' ng-click='activeTab=2'>周杰伦</li>
        <li ng-class='{active:activeTab==3}' ng-click='activeTab=3'>林俊杰</li>
        <li ng-class='{active:activeTab==4}' ng-click='activeTab=4'>陈奕迅</li>
      </ul>
      <div class="TabCon">
        <div ng-show='activeTab==1'>断桥残雪、千百度、幻听、想象之中</div>
        <div ng-show='activeTab==2'>红尘客栈、牛仔很忙、给我一首歌的时间、听妈妈的话</div>
        <div ng-show='activeTab==3'>被风吹过的夏天、江南、一千年以后</div>
        <div ng-show='activeTab==4'>十年、K歌之王、浮夸</div>
      </div>
    </div>
  </body>
  <script type="text/javascript">
    var app=angular.module('app',[]);
    app.controller('tabcontroller',function($scope){
      var vm=$scope.vm;
    });
  </script>
</html>

二、效果预览

AngularJS实现tab选项卡的方法详解

三、实现原理

选项卡的内容是显示还是隐藏是由activeTab的值决定的,而这个值是通过选项卡上面的ng-click指令设置的,当对应选项卡的内容显示的时候,给点击的按钮添加样式,这样做虽然也能实现选项卡的内容,但是这样做的的弊端是,选项卡的内容是固定的,不好去改变,所以接下来我们将上面的代码改成下面这种形式

四、改版

<!DOCTYPE html>
<html ng-app='app'>
  <head>
    <meta charset="UTF-8">
    <title></title>
    <style>
      *{
        list-style: none;
        margin: 0;
        padding: 0;
      }
      .TabNav{
        height: 131px;
        position: relative;
        margin-left: 100px;
        margin-top: 100px;
      }
      .TabNav ul li{
        float: left;
        background: -webkit-gradient(linear,left top,left bottom, from(#fefefe), to(#ededed));
        border: 1px solid #ccc;
        padding: 5px 0;
        width: 100px;
        text-align: center;
        margin-left: -1px;
        position: relative;
        cursor: pointer;
      }
      .TabCon{
        position: absolute;
        left: -1px;
        top: 30px;
        border: 1px solid #ccc;
        border-top: none;
        width: 403px;
        height: 100px;
      }
      .TabNav ul li.active{
        background: #FFFFFF;
        border-bottom: none;
      }
    </style>
    <script src="js/angular.min.js" type="text/javascript" charset="utf-8"></script>
  </head>
  <body>
    <div class="TabNav" ng-controller='tabcontroller'>
      <ul ng-init='selected=0'>
        <li ng-class='{active:selected==$index}' ng-click='show($index)' ng-repeat='item in vm'>{{item.list}}</li>
      </ul>
      <div class="TabCon">
        <div ng-show='selected==$index' ng-repeat='item in vm'>{{item.con}}</div>
      </div>
    </div>
  </body>
  <script type="text/javascript">
    var app=angular.module('app',[]);
    app.controller('tabcontroller',function($scope){
      $scope.vm=[
        {"list":"许嵩","con":"断桥残雪、千百度、幻听、想象之中"},
        {"list":"周杰伦","con":"红尘客栈、牛仔很忙、给我一首歌的时间、听妈妈的话"},
        {"list":"林俊杰","con":"被风吹过的夏天、江南、一千年以后"},
        {"list":"陈奕迅","con":"十年、K歌之王、浮夸"}
      ];
      var selected=$scope.selected;
      $scope.show=function(index){
        $scope.selected=index;
      };
    });
  </script>
</html>

说明:vm这个数组里面是我们自己定义的一些假数据(这个数据实际上是可以从后台获取的),然后我们通过ng-repeat指令循环遍历出vm里面的数据,插入到页面中,$index是每个内容对象的索引值

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
动态刷新 dorado树的js代码
Jun 12 Javascript
Javascript 面向对象编程(coolshell)
Mar 18 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
Oct 09 Javascript
实例分析js事件循环机制
Dec 13 Javascript
vue-cli配置环境变量的方法
Jul 09 Javascript
ajax与jsonp的区别及用法
Oct 16 Javascript
vue登录以及权限验证相关的实现
Oct 25 Javascript
vue下载二进制流图片操作
Oct 26 Javascript
关于React Native使用axios进行网络请求的方法
Aug 02 Javascript
angularjs2中父子组件的数据传递的实例代码
Jul 05 #Javascript
jQuery制作input提示内容(兼容IE8以上)
Jul 05 #jQuery
jQuery常见面试题之DOM操作详析
Jul 05 #jQuery
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 #Javascript
微信小程序学习之数据处理详解
Jul 05 #Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 #Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
Jul 05 #Javascript
You might like
用mysql内存表来代替php session的类
2009/02/01 PHP
php的大小写敏感问题整理
2011/12/29 PHP
屏蔽机器人从你的网站搜取email地址的php代码
2012/11/14 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
js 数组克隆方法 小结
2010/03/20 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
jQuery模拟实现天猫购物车动画效果实例代码
2017/05/25 jQuery
Angularjs实现下拉框联动的示例代码
2017/08/22 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
javascript实现评分功能
2020/06/24 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[02:41]辉夜杯现场一家三口 “我爸玩风行 我玩血魔”
2015/12/27 DOTA
django使用admin站点上传图片的实例
2019/07/28 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
基于python3生成标签云代码解析
2020/02/18 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
应届生妇产科护士求职信
2013/10/27 职场文书
小学数学国培感言
2014/03/10 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
入伍通知书
2015/04/23 职场文书
公司职员入党自传书
2015/06/26 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书