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 相关文章推荐
如何取得中文输入的真实长度?
Jun 24 Javascript
json对象转字符串如何实现
Dec 02 Javascript
js中的屏蔽的使用示例
Jul 30 Javascript
angularJS 入门基础
Feb 09 Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 Javascript
JS+CSS实现滑动切换tab菜单效果
Aug 25 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
jQuery仿写百度百科的目录树
Jan 03 Javascript
js匿名函数使用&amp;传参(实例)
Sep 08 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
Apr 18 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
在Iframe中获取父窗口中表单的值(示例代码)
2013/11/22 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
移动端js图片查看器
2016/11/17 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
pycharm 解除默认unittest模式的方法
2018/11/30 Python
python批量创建指定名称的文件夹
2019/03/21 Python
python字典排序的方法
2019/10/12 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
python实现数据结构中双向循环链表操作的示例
2020/10/09 Python
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
2016/12/20 HTML / CSS
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
3个CCIE对一个工程师的面试题
2012/05/06 面试题
Servlet方面面试题
2016/09/28 面试题
化工工艺专业求职信
2013/09/22 职场文书
公务员职务工作的自我评价
2013/11/01 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
学生检讨书
2015/01/27 职场文书
工作时间证明
2015/06/15 职场文书
Android Studio 计算器开发
2022/05/20 Java/Android