基于JavaScript实现移动端TAB触屏切换效果

作者:函数茶馆时间:2026-10-29 15:41:07浏览:133

本文介绍如何在移动端Web应用中实现TAB栏目的触屏滑动切换功能。通过结合Zepto.js轻量级库与TouchSlider插件,配置滑动方向、速度及自动播放参数,并绑定导航点击事件,实现内容与导航标签的同步切换,适用于网易新闻等常见APP交互场景。

展示效果图如下所示:

移动端TAB切换原理

效果演示 源码下载

移动端TAB切换原理

在移动端应用中,用户可以通过左右滑动屏幕的手势来切换TAB栏目,例如网易新闻等APP中的栏目切换功能。通常,TAB由导航条和对应的内容区域组成,当切换导航栏上的标签时,对应的内容区域也会同步切换。本文将通过具体实例,详细介绍如何实现移动端的TAB触屏切换效果。

HTML结构搭建

HTML结构

首先构建HTML结构,准备一个TAB导航容器#pagenavi,其中包含四个导航按钮。接着设置切换主体内容区域#slider,内部放置四个li元素,分别与导航按钮一一对应,具体内容可根据需求自定义。


<div class="box-163css"> 
  <ul id="pagenavi" class="page"> 
    <li><a href="#https://www.jb51.net/css.html" class="active">CSS3</a></li> 
     <li><a href="#https://www.jb51.net/jquery.html">JAVASCRIPT</a></li> 
    <li><a href="#https://www.jb51.net/php.html">PHP</a></li> 
    <li><a href="#https://www.jb51.net/web.html">HTML5</a></li> 
  </ul> 
  <div id="slider" class="swipe"> 
   <ul class="box01_list"> 
    <li class="li_list"> 
    ... 
    </li> 
    ...<!--总共4个li--> 
   </ul> 
  </div> 
</div>

同时,需要为HTML添加相应的CSS样式,本例已提供打包好的css文件供下载参考。

JavaScript交互实现

JavaScript实现

由于是移动端应用,需要加载zepto.js,这是一个体积较小的jQuery替代库。此外,还需加载触屏滑动插件touchslider.js以支持手势交互。


<script type="text/javascript" src="js/zepto_min.js"></script> 
<script type="text/javascript" src="js/touchslider.js"></script>

接下来直接调用TouchSlider对象,通过配置绑定tab、滑动方向、速度、时间等参数来实现内容切换,具体代码如下:


<script type="text/javascript"> 
  var page='pagenavi'; 
  var mslide='slider'; 
  var mtitle='emtitle'; 
  arrdiv = 'arrdiv'; 
  var as=document.getElementById(page).getElementsByTagName('a'); 
  var tt=new TouchSlider({id:mslide,'auto':'-1',fx:'ease-out',direction:'left',speed:600,timeout:5000,'before':function(index){ 
    var as=document.getElementById(this.page).getElementsByTagName('a'); 
    as[this.p].className=''; 
    as[index].className='active'; 
    this.p=index; 
    var txt=as[index].innerText; 
    $("#"+this.page).parent().find('.emtitle').text(txt); 
    var txturl=as[index].getAttribute('href');     
    var turl=txturl.split('#'); 
    $("#"+this.page).parent().find('.go_btn').attr('href',turl[1]); 
  }}); 
  tt.page = page; 
  tt.p = 0; 
  for(var i=0;i<as.length;i++){ 
    (function(){ 
      var j=i; 
      as[j].tt = tt; 
      as[j].onclick=function(){ 
        this.tt.slide(j); 
        return false; 
      } 
    })(); 
  } 
</script>

以上内容是本文的全部叙述,希望对大家学习有所帮助。

作者最新文章