使用HTML5開(kāi)發(fā)App(五)

Tab切換

咱們還是繼續(xù)接著上篇文章去寫(xiě),今天要寫(xiě)的是下面Table的切換妒穴,在這里面览祖,為了讓大家看起來(lái)更清晰,我單獨(dú)寫(xiě)一個(gè)demo去講Table切換扭仁,讓大家看下今天學(xué)完之后能做出來(lái)的效果:

tab切換

開(kāi)始我們第一個(gè)小demo垮衷,先來(lái)分析一下Table切換,應(yīng)用中的五個(gè)頁(yè)面其實(shí)是5個(gè)div組成乖坠,而非是5個(gè)html文件搀突,大家都只知道,如果用5個(gè)html文件來(lái)進(jìn)行切換的話熊泵,它會(huì)存在很大的卡頓仰迁,閃屏,甚至白屏顽分,為了讓它看起來(lái)更像是一個(gè)原生的App這里面用的是div進(jìn)行切換徐许。
原理:創(chuàng)建5個(gè)div,給在第一個(gè)頁(yè)面顯示的div改成display:block卒蘸,其余div添加一個(gè)隱藏的屬性display:none雌隅,,當(dāng)觸發(fā)Table的點(diǎn)擊事件的時(shí)候,點(diǎn)擊Table的下標(biāo)與div的下標(biāo)進(jìn)行匹配缸沃,如果相同讓其div的屬性改為display:block進(jìn)行顯示恰起。聽(tīng)起來(lái)比較復(fù)雜,那我們來(lái)進(jìn)行拆解趾牧,一步一步來(lái)检盼。

第一步:創(chuàng)建5個(gè)div

在MUI中除了固定欄,其余的標(biāo)簽都寫(xiě)在<div class="mui-content">

<div class="mui-content">
  <!--第一個(gè)頁(yè)面-->
     <div class="alldiv div1">我是第一個(gè)頁(yè)面</div>
     <!--第二個(gè)頁(yè)面-->
     <div class="alldiv div2">我是第二個(gè)頁(yè)面</div>
     <!--第三個(gè)頁(yè)面-->
     <div class="alldiv div3">我是第三個(gè)頁(yè)面</div>
     <!--第四個(gè)頁(yè)面-->
     <div class="alldiv div4">我是第四個(gè)頁(yè)面</div>
     <!--第五個(gè)頁(yè)面-->
     <div class="alldiv div4">我是第五個(gè)頁(yè)面</div>
 </div>

第二步:給div添加樣式

給第一個(gè)要顯示的div添加display: block;其它div添加display: none武氓;為了方便大家觀看梯皿,每一個(gè)div都給一個(gè)顏色仇箱,

.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;
   }

第三步:創(chuàng)建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">首頁(yè)</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">設(shè)置</span>
    </a>
     <a class="mui-tab-item" >
        <span class="mui-icon mui-icon-help"></span>
        <span class="mui-tab-label">幫助</span>
    </a>
</nav>

第四步:監(jiān)聽(tīng)Table點(diǎn)擊事件

在點(diǎn)擊tabBar的時(shí)候,要對(duì)所有div進(jìn)行隱藏东羹,并判斷點(diǎn)擊tabBar的下標(biāo)跟div的下標(biāo)是否匹配剂桥,如果匹配就修改樣式進(jìn)行顯示
JQ寫(xiě)法:

<script type="text/javascript" charset="utf-8">
       mui.init();
       mui.plusReady(function(){
       mui(".mui-bar-tab").on('tap','.mui-tab-item',function(){
          //點(diǎn)擊tabBar的時(shí)候找到所有的div進(jìn)行隱藏
          $('.alldiv').css({"display":"none"});
          //匹配div的下標(biāo)跟點(diǎn)擊的下表相同就進(jìn)行顯示
          $('.alldiv').eq($(this).index()).css({"display":"block"});

       })
 })
    </script>

【注意】使用原生寫(xiě)法的時(shí)候需要手動(dòng)給所有div添加下標(biāo)

 <a class="mui-tab-item mui-active" id="index1">//添加下標(biāo)
         <span class="mui-icon mui-icon-home"></span>
         <span class="mui-tab-label">首頁(yè)</span>
     </a>

原生JS寫(xiě)法:

 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";
    }
   }

到這里我們就寫(xiě)完了Table切換,效果如下:

Table切換

接下來(lái)要做的就是把Tab切換的技術(shù)運(yùn)行到咱們網(wǎng)易新聞項(xiàng)目里面属提,我們接著上篇文章中的網(wǎng)易新聞繼續(xù)來(lái)寫(xiě)

第一步:首先在content里面把咱們之前寫(xiě)的代碼進(jìn)行剪切

也就是剪切以下內(nèi)容:

   <div>
    <div class="tab_title">
     <a>頭條</a>
     <a >熱點(diǎn)</a>
     <a >娛樂(lè)</a>
     <a >財(cái)經(jīng)</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">
               <!--圖片权逗、標(biāo)題-->
             </div>
             <!--注意這里面是圖片滾動(dòng)的標(biāo)記,div的數(shù)量要和上面的匹配-->
             <div class="mui-slider-indicator" id="slider-indicator">
               <!--圖片滾動(dòng)標(biāo)記-->
             </div>
         </div>
  
   <ul class="mui-table-view" id="tableView-List"></ul>

第二步:創(chuàng)建5個(gè)div

創(chuàng)建5個(gè)div當(dāng)做5個(gè)頁(yè)面

<div class="mui-content">
        <!--第一個(gè)頁(yè)面-->
        <div class="container-div" style="display: block;"></div>

        <!--第二個(gè)頁(yè)面-->
        <div class="container-div"></div>

        <!--第三個(gè)頁(yè)面-->
        <div class="container-div" ></div>

        <!--第四個(gè)頁(yè)面-->
        <div class="container-div"></div>

        <!--第五個(gè)頁(yè)面-->
        <div class="container-div"></div>   
</div>

第三步:把剪切的內(nèi)容放到第一個(gè)頁(yè)面中

<div class="mui-content">
        <!--第一個(gè)頁(yè)面-->
<div class="container-div" style="display: block;">
<div>
    <div class="tab_title">
     <a>頭條</a>
     <a >熱點(diǎn)</a>
     <a >娛樂(lè)</a>
     <a >財(cái)經(jīng)</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">
               <!--圖片冤议、標(biāo)題-->
             </div>
             <!--注意這里面是圖片滾動(dòng)的標(biāo)記斟薇,div的數(shù)量要和上面的匹配-->
             <div class="mui-slider-indicator" id="slider-indicator">
               <!--圖片滾動(dòng)標(biāo)記-->
             </div>
         </div>
  
   <ul class="mui-table-view" id="tableView-List"></ul>
</div>

        <!--第二個(gè)頁(yè)面-->
        <div class="container-div"></div>

        <!--第三個(gè)頁(yè)面-->
        <div class="container-div" ></div>

        <!--第四個(gè)頁(yè)面-->
        <div class="container-div"></div>

        <!--第五個(gè)頁(yè)面-->
        <div class="container-div"></div>   
</div>

按照上面的tab切換進(jìn)行樣式改變和事件綁定


//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"});
  })

第四步:進(jìn)行其它頁(yè)面的完善

會(huì)了tab切換,也會(huì)之前網(wǎng)絡(luò)請(qǐng)求和解析恕酸,其它的頁(yè)面都不是什么問(wèn)題堪滨,接下來(lái)對(duì)第三個(gè)頁(yè)面‘視聽(tīng)’進(jìn)行請(qǐng)求與解析
HTML代碼:


<!--第三個(gè)頁(yè)面-->
  <div class="container-div" id="container-div-index3">
  
  </div>

網(wǎng)絡(luò)請(qǐng)求

//視聽(tīng)請(qǐng)求
  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("網(wǎng)絡(luò)無(wú)連接");
   }
  })

網(wǎng)絡(luò)解析并賦值

//用來(lái)處理視聽(tīng)頁(yè)面數(shù)據(jù)
    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>當(dāng)前瀏覽器不支持 video直接播放,點(diǎn)擊這里下載視頻: <a href="myvideo.webm">下載視頻</a></video></div>';
    $('#container-div-index3').append(finalist);
     }
    }

運(yùn)行效果

視聽(tīng)頁(yè)面

未完待續(xù)蕊温。袱箱。。
下集預(yù)告义矛,下拉刷新发笔,上拉加載,等凉翻。了讨。。

今天先寫(xiě)在這里吧制轰,在寫(xiě)文章的時(shí)候我發(fā)現(xiàn)一個(gè)問(wèn)題前计,就是在寫(xiě)整個(gè)項(xiàng)目文章的時(shí)候,知識(shí)點(diǎn)都在做項(xiàng)目中才體現(xiàn)出來(lái)了艇挨,東西太多串起來(lái)很麻煩残炮,對(duì)于讀者學(xué)的時(shí)候還得從頭去看才能把整個(gè)知識(shí)點(diǎn)串起來(lái),那我在接下來(lái)的文章中會(huì)對(duì)單獨(dú)的知識(shí)點(diǎn)羅列出來(lái)進(jìn)行講解缩滨,然后再串起來(lái)結(jié)合項(xiàng)目進(jìn)行展示势就。最后感謝那些支持我的朋友們,一起加油脉漏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末苞冯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侧巨,更是在濱河造成了極大的恐慌舅锄,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件司忱,死亡現(xiàn)場(chǎng)離奇詭異皇忿,居然都是意外死亡畴蹭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門鳍烁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)叨襟,“玉大人,你說(shuō)我怎么就攤上這事幔荒『觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵爹梁,是天一觀的道長(zhǎng)右犹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)姚垃,這世上最難降的妖魔是什么念链? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮莉炉,結(jié)果婚禮上钓账,老公的妹妹穿的比我還像新娘碴犬。我一直安慰自己絮宁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布服协。 她就那樣靜靜地躺著绍昂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偿荷。 梳的紋絲不亂的頭發(fā)上窘游,一...
    開(kāi)封第一講書(shū)人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音跳纳,去河邊找鬼忍饰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛寺庄,可吹牛的內(nèi)容都是我干的艾蓝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼斗塘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赢织!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起馍盟,我...
    開(kāi)封第一講書(shū)人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤于置,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后贞岭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體八毯,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搓侄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了话速。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休讳。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尿孔,靈堂內(nèi)的尸體忽然破棺而出俊柔,到底是詐尸還是另有隱情,我是刑警寧澤活合,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布雏婶,位于F島的核電站,受9級(jí)特大地震影響白指,放射性物質(zhì)發(fā)生泄漏留晚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一告嘲、第九天 我趴在偏房一處隱蔽的房頂上張望错维。 院中可真熱鬧,春花似錦橄唬、人聲如沸赋焕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隆判。三九已至,卻和暖如春僧界,著一層夾襖步出監(jiān)牢的瞬間侨嘀,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工捂襟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咬腕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓葬荷,卻偏偏與公主長(zhǎng)得像涨共,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子闯狱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容