使用HTML5开发App(五)

Tab切换

咱们还是继续接着上篇文章去写,今天要写的是下面Table的切换,在这里面,为了让大家看起来更清晰,我单独写一个demo去讲Table切换,让大家看下今天学完之后能做出来的效果:

tab切换

开始我们第一个小demo,先来分析一下Table切换,应用中的五个页面其实是5个div组成,而非是5个html文件,大家都只知道,如果用5个html文件来进行切换的话,它会存在很大的卡顿,闪屏,甚至白屏,为了让它看起来更像是一个原生的App这里面用的是div进行切换。
原理:创建5个div,给在第一个页面显示的div改成display:block,其余div添加一个隐藏的属性display:none,,当触发Table的点击事件的时候,点击Table的下标与div的下标进行匹配,如果相同让其div的属性改为display:block进行显示。听起来比较复杂,那我们来进行拆解,一步一步来。

第一步:创建5个div

在MUI中除了固定栏,其余的标签都写在<div class="mui-content">

<div class="mui-content">
  <!--第一个页面-->
     <div class="alldiv div1">我是第一个页面</div>
     <!--第二个页面-->
     <div class="alldiv div2">我是第二个页面</div>
     <!--第三个页面-->
     <div class="alldiv div3">我是第三个页面</div>
     <!--第四个页面-->
     <div class="alldiv div4">我是第四个页面</div>
     <!--第五个页面-->
     <div class="alldiv div4">我是第五个页面</div>
 </div>

第二步:给div添加样式

给第一个要显示的div添加display: block;其它div添加display: none;为了方便大家观看,每一个div都给一个颜色,

.alldiv{
    height: 200px;
    width: 100%;
    display: none;
    font-size: 50px;
    line-height: 200px;
   }
   .div1{
  display: block;
    background-color: red;
   }
   .div2{
    background-color: green;
   }
   .div3{
    background-color: salmon;
   }
   .div4{
    background-color: darkturquoise;
   }
   .div5{
    background-color: bisque;
   }

第三步:创建TableBar

<nav class="mui-bar mui-bar-tab">
    <a class="mui-tab-item mui-active">
        <span class="mui-icon mui-icon-home"></span>
        <span class="mui-tab-label">首页</span>
    </a>
    <a class="mui-tab-item" >
        <span class="mui-icon mui-icon-phone"></span>
        <span class="mui-tab-label">电话</span>
    </a>
    <a class="mui-tab-item" >
        <span class="mui-icon mui-icon-email"></span>
        <span class="mui-tab-label">邮件</span>
    </a>
    <a class="mui-tab-item" >
        <span class="mui-icon mui-icon-gear"></span>
        <span class="mui-tab-label">设置</span>
    </a>
     <a class="mui-tab-item" >
        <span class="mui-icon mui-icon-help"></span>
        <span class="mui-tab-label">帮助</span>
    </a>
</nav>

第四步:监听Table点击事件

在点击tabBar的时候,要对所有div进行隐藏,并判断点击tabBar的下标跟div的下标是否匹配,如果匹配就修改样式进行显示
JQ写法:

<script type="text/javascript" charset="utf-8">
       mui.init();
       mui.plusReady(function(){
       mui(".mui-bar-tab").on('tap','.mui-tab-item',function(){
          //点击tabBar的时候找到所有的div进行隐藏
          $('.alldiv').css({"display":"none"});
          //匹配div的下标跟点击的下表相同就进行显示
          $('.alldiv').eq($(this).index()).css({"display":"block"});

       })
 })
    </script>

【注意】使用原生写法的时候需要手动给所有div添加下标

 <a class="mui-tab-item mui-active" id="index1">//添加下标
         <span class="mui-icon mui-icon-home"></span>
         <span class="mui-tab-label">首页</span>
     </a>

原生JS写法:

 var arrDiv = document.getElementsByClassName("container-div");
   var index = this.getAttribute('index');
   for(var i = 0; i<arrDiv.length;i++){
    arrDiv[i].style.display = "none";
    arrDiv[i].index = i;
    if(arrDiv[i].index == index){
     arrDiv[i].style.display = "block";
    }
   }

到这里我们就写完了Table切换,效果如下:

Table切换

接下来要做的就是把Tab切换的技术运行到咱们网易新闻项目里面,我们接着上篇文章中的网易新闻继续来写

第一步:首先在content里面把咱们之前写的代码进行剪切

也就是剪切以下内容:

   <div>
    <div class="tab_title">
     <a>头条</a>
     <a >热点</a>
     <a >娱乐</a>
     <a >财经</a>
     <a >体育</a>
     <a ><img src="imgs/comment_arrow_down@2x.png"/></a>
    </div>
   </div>
   
   <div class="mui-slider ">
             <div class="mui-slider-group" id="slider-img">
               <!--图片、标题-->
             </div>
             <!--注意这里面是图片滚动的标记,div的数量要和上面的匹配-->
             <div class="mui-slider-indicator" id="slider-indicator">
               <!--图片滚动标记-->
             </div>
         </div>
  
   <ul class="mui-table-view" id="tableView-List"></ul>

第二步:创建5个div

创建5个div当做5个页面

<div class="mui-content">
        <!--第一个页面-->
        <div class="container-div" style="display: block;"></div>

        <!--第二个页面-->
        <div class="container-div"></div>

        <!--第三个页面-->
        <div class="container-div" ></div>

        <!--第四个页面-->
        <div class="container-div"></div>

        <!--第五个页面-->
        <div class="container-div"></div>   
</div>

第三步:把剪切的内容放到第一个页面中

<div class="mui-content">
        <!--第一个页面-->
<div class="container-div" style="display: block;">
<div>
    <div class="tab_title">
     <a>头条</a>
     <a >热点</a>
     <a >娱乐</a>
     <a >财经</a>
     <a >体育</a>
     <a ><img src="imgs/comment_arrow_down@2x.png"/></a>
    </div>
   </div>
   
   <div class="mui-slider ">
             <div class="mui-slider-group" id="slider-img">
               <!--图片、标题-->
             </div>
             <!--注意这里面是图片滚动的标记,div的数量要和上面的匹配-->
             <div class="mui-slider-indicator" id="slider-indicator">
               <!--图片滚动标记-->
             </div>
         </div>
  
   <ul class="mui-table-view" id="tableView-List"></ul>
</div>

        <!--第二个页面-->
        <div class="container-div"></div>

        <!--第三个页面-->
        <div class="container-div" ></div>

        <!--第四个页面-->
        <div class="container-div"></div>

        <!--第五个页面-->
        <div class="container-div"></div>   
</div>

按照上面的tab切换进行样式改变和事件绑定


//Tab切换,找到容器组件
  mui(".mui-bar-tab").on('tap','.mui-tab-item',function(e){
   $('.container-div').css({"display":"none"});
   $('.container-div').eq($(this).index()).css({"display":"block"});
  })

第四步:进行其它页面的完善

会了tab切换,也会之前网络请求和解析,其它的页面都不是什么问题,接下来对第三个页面‘视听’进行请求与解析
HTML代码:


<!--第三个页面-->
  <div class="container-div" id="container-div-index3">
  
  </div>

网络请求

//视听请求
  mui.ajax('http://c.3g.163.com/nc/video/home/10-10.html',{
   dataType:'josn',
   type:'get',
   timeout:10000,
   success:function(data){
    var jsonData = $.parseJSON(data);
    viedioData(jsonData);
   },
   error:function(){
    alert("网络无连接");
   }
  })

网络解析并赋值

//用来处理视听页面数据
    function viedioData(data){
     var finalist = null;
     var arr = data.videoList;
     for(var i = 0;i<arr.length;i++){
    finalist = '<div class="viedio-container"><strong class="viedio_title">'+data.videoList[i].title+'</strong><span class="viedio_subtitle">'+data.videoList[i].description+'</span><video class="play-video"controls poster='+arr[i].cover+' ><source src='+data.videoList[i].mp4_url+'></source><source src="myvideo.ogv" type="video/ogg"></source><source src="myvideo.webm" type="video/webm"></source><object width="" height="" type="application/x-shockwave-flash" data="myvideo.swf"><param name="movie" value="myvideo.swf" /><param name="flashvars" value="autostart=true&file=myvideo.swf" /></object>当前浏览器不支持 video直接播放,点击这里下载视频: <a href="myvideo.webm">下载视频</a></video></div>';
    $('#container-div-index3').append(finalist);
     }
    }

运行效果

视听页面

未完待续。。。
下集预告,下拉刷新,上拉加载,等。。。

今天先写在这里吧,在写文章的时候我发现一个问题,就是在写整个项目文章的时候,知识点都在做项目中才体现出来了,东西太多串起来很麻烦,对于读者学的时候还得从头去看才能把整个知识点串起来,那我在接下来的文章中会对单独的知识点罗列出来进行讲解,然后再串起来结合项目进行展示。最后感谢那些支持我的朋友们,一起加油。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容