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 相关文章推荐
jQuery调取jSon数据并展示的方法
Jan 29 Javascript
如何改进javascript代码的性能
Apr 02 Javascript
Java Mybatis框架入门基础教程
Sep 21 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
Jan 19 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
Jan 21 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
详解Vuex中mapState的具体用法
Sep 28 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
JavaScript分步实现一个出生日期的正则表达式
Mar 22 Javascript
js中复选框的取值及赋值示例详解
Oct 18 Javascript
Vue Element-ui表单校验规则实现
Jul 09 Vue.js
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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
php session安全问题分析
2011/06/24 PHP
PHP编程计算两个时间段是否有交集的实现方法(不算边界重叠)
2017/05/30 PHP
豆瓣网的jquery代码实例
2008/06/15 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
python字符串替换示例
2014/04/24 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python GUI编程完整示例
2019/04/04 Python
python 实现绘制整齐的表格
2019/11/18 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
详解Python的三种拷贝方式
2020/02/11 Python
Python版中国省市经纬度
2020/02/11 Python
Python实现弹球小游戏
2020/08/01 Python
Python实现疫情地图可视化
2021/02/05 Python
美国专注于健康商品的网站:eVitamins
2017/01/23 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
师范生自荐信
2013/10/27 职场文书
触摸春天教学反思
2014/02/03 职场文书
治庸问责心得体会
2014/09/12 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
初中毕业生自我评价
2015/03/02 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL