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 相关文章推荐
javascript判断用户浏览器插件安装情况的代码
Jan 01 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
学习Bootstrap滚动监听 附调用方法
Jul 02 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
js以及jquery实现手风琴效果
Apr 17 Javascript
socket io与vue-cli的结合使用的示例代码
Nov 01 Javascript
微信小程序实现动态获取元素宽高的方法分析
Dec 10 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
Apr 16 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
PHP实现文件安全下载
2006/10/09 PHP
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
PHP正则表达式之定界符和原子介绍
2012/10/05 PHP
PHP与javascript实现变量交互的示例代码
2013/07/23 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
Bootstrap Validator 表单验证
2016/07/25 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
使用 Vue.js 仿百度搜索框的实例代码
2017/05/09 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
使用python实现ANN
2017/12/20 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
TensorFlow利用saver保存和提取参数的实例
2018/07/26 Python
PYQT5设置textEdit自动滚屏的方法
2019/06/14 Python
pytorch 预训练层的使用方法
2019/08/20 Python
详解Django ORM引发的数据库N+1性能问题
2020/10/12 Python
详解rem 适配布局
2018/10/31 HTML / CSS
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
邓小平理论心得体会
2014/09/09 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
质量负责人岗位职责
2015/02/15 职场文书
护士岗位竞聘书
2015/09/15 职场文书
志愿者工作心得体会
2016/01/15 职场文书
Python还能这么玩之用Python做个小游戏的外挂
2021/06/04 Python
详解Python中的for循环
2022/04/30 Python
nginx之queue的具体使用
2022/06/28 Servers