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定义回车事件(实现代码)
Jul 08 Javascript
jquery 设置style:display的方法
Jan 29 Javascript
通过JS判断联网类型和连接状态的实现代码
Apr 01 Javascript
JS日期格式化之javascript Date format
Oct 01 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
Aug 25 Javascript
用js制作淘宝放大镜效果
Oct 28 Javascript
vue之数据交互实例代码
Jun 16 Javascript
js实现省市级联效果分享
Aug 10 Javascript
vue 指定组件缓存实例详解
Apr 01 Javascript
javascript面向对象程序设计实践常用知识点总结
Jul 29 Javascript
vue.config.js常用配置详解
Nov 14 Javascript
浅谈vue的第一个commit分析
Jun 08 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&amp;&amp;mysql)三
2006/10/09 PHP
解析PHP计算页面执行时间的实现代码
2013/06/18 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
PHP操作Redis常用命令的实例详解
2020/12/23 PHP
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
vue实现文件上传功能
2018/08/13 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
Python中endswith()函数的基本使用
2015/04/07 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
python实现发送邮件功能
2017/07/22 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
python处理RSTP视频流过程解析
2020/01/11 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
会计电算化专业应届大学生求职信
2013/10/22 职场文书
办公文员的工作岗位职责
2013/11/12 职场文书
后勤人员岗位职责
2013/12/17 职场文书
抗震救灾标语
2014/06/26 职场文书
网络营销计划
2015/01/17 职场文书
地道战观后感2000字
2015/06/04 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)
2021/04/12 Python
JavaScript原始值与包装对象的详细介绍
2021/05/11 Javascript
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers