JS 特效 词条目录
前端Wiki/JS 特效/滑动与切换/内容切换

滑动切换页面容器

滑动切换的底层原理:一个容器内多个等宽面板横向排列,通过改变容器 transform 展示不同面板——轮播、 Tabs 滑动版、移动端整屏切换(引导页)都是同一套。

Tabs 滑动版:标签栏也跟着 underline 滑动指示(translateX = index × 标签宽);面板区放一个 flex 容器整体平移,体验比直接 display 切换更“流动”。

  • 面板容器 flex 排列,整体 translateX 平移
  • 标签下划线同步平移(定位在同一动画时长内)
  • 切换时 transition 统一 .35s 保证视觉同步
HTML
<style>
#stab { max-width: 420px; margin: 20px auto; overflow: hidden; }
#stab .heads { position: relative; display: flex; }
#stab .heads button { flex: 1; padding: 10px; border: none; background: none;
                      cursor: pointer; font-size: 14px; color: #888; }
#stab .line { position: absolute; bottom: 0; width: 33.33%; height: 3px;
              background: #4a9eff; transition: transform .35s ease; }
#stab .vp { overflow: hidden; }
#stab .track { display: flex; transition: transform .35s ease; }
#stab .panel { min-width: 100%; padding: 20px; box-sizing: border-box;
               background: #f4f8ff; color: #333; font-size: 14px; }
</style>
<div id="stab">
  <div class="heads">
    <button data-i="0">第一页</button><button data-i="1">第二页</button><button data-i="2">第三页</button>
    <span class="line"></span>
  </div>
  <div class="vp"><div class="track">
    <div class="panel">滑动面板 A —— 下划线跟着走</div>
    <div class="panel">滑动面板 B —— 内容区也整体平移</div>
    <div class="panel">滑动面板 C —— 轮播同款结构</div>
  </div></div>
</div>
<script>
var box = document.getElementById('stab');
var line = box.querySelector('.line'), track = box.querySelector('.track');
box.querySelector('.heads').addEventListener('click', function (e) {
  var b = e.target.closest('button'); if (!b) return;
  var i = +b.dataset.i;
  line.style.transform = 'translateX(' + (i * 100) + '%)';
  track.style.transform = 'translateX(' + (-i * 100) + '%)';
});
</script>
本节要点滑动切换 = 容器整体平移;标签下划线与面板共用同一时长,视觉同步。
🔗 相关词条DOMCSS 特效JavaScript