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 08 Javascript
为Yahoo! UI Extensions Grid增加内置的可编辑器
Mar 10 Javascript
javascript 常用代码技巧大收集
Feb 25 Javascript
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
详解Vue 2.0封装axios笔记
Jun 22 Javascript
微信小程序之多文件下载的简单封装示例
Jan 29 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
解决Vue+Electron下Vuex的Dispatch没有效果问题
May 20 Javascript
VUE+node(express)实现前后端分离
Oct 13 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 Javascript
vue router 动态路由清除方式
May 25 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
PHP类的使用 实例代码讲解
2009/12/28 PHP
浅析PHP递归函数返回值使用方法
2013/02/18 PHP
PHP多线程之内部多线程实例分析
2015/03/09 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
写js时遇到的一些小问题
2010/12/06 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
js动态修改input输入框的type属性(实现方法解析)
2013/11/13 Javascript
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
js实现聊天对话框
2020/02/08 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
Python备份Mysql脚本
2008/08/11 Python
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python简单文本处理的方法
2015/07/10 Python
Django验证码的生成与使用示例
2017/05/20 Python
python进程池实现的多进程文件夹copy器完整示例
2019/11/27 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
Python中logger日志模块详解
2020/08/04 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
如何使用PHP session
2015/04/21 面试题
庆元旦广播稿
2014/02/10 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
解读Vue组件注册方式
2021/05/15 Vue.js
MySQL深度分页(千万级数据量如何快速分页)
2021/07/25 MySQL
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python