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 相关文章推荐
js自动生成对象的属性示例代码
Oct 28 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
AngularJS Bootstrap详细介绍及实例代码
Jul 28 Javascript
详解webpack3如何正确引用并使用jQuery库
Aug 26 jQuery
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
vue页面加载闪烁问题的解决方法
Mar 28 Javascript
Vue2.0 实现移动端图片上传功能
May 30 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
Aug 01 Javascript
js实现带积分弹球小游戏
Jul 21 Javascript
JS pushlet XMLAdapter适配器用法案例解析
Oct 16 Javascript
Javascript之datagrid查询详解
Sep 15 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
一段防盗连的PHP代码
2006/12/06 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
vue3中轻松实现switch功能组件的全过程
2021/01/07 Vue.js
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python文件去除注释的方法
2015/05/25 Python
Python学习入门之区块链详解
2017/07/25 Python
Python语言描述最大连续子序列和
2017/12/05 Python
Python实现的三层BP神经网络算法示例
2018/02/07 Python
python实现多线程网页下载器
2018/04/15 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
Python遍历字典方式就实例详解
2019/12/28 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
详解python polyscope库的安装和例程
2020/11/13 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
基于Python实现粒子滤波效果
2020/12/01 Python
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
日本订房网站,预订日本星级酒店/温泉旅馆:Relux(支持中文)
2020/01/03 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
前台接待的工作职责
2013/11/21 职场文书
多人股份制合作协议书
2016/03/19 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python