前言

先来介绍一下history.pushState()和window.onpopstate

history.pushState(),改变当前地址栏的路径,并不会更新页面内容

用法:history.pushState(Object, title, url);

  1. 第一个参数:是一个对象,通过pushState方法可以将该对象内容传递到新页面中。
  2. 第二个参数,指标题,几乎没有浏览器支持该参数,传一个空字符串比较安全。
  3. 第三个参数,是新的路径地址,不指定的话则为当前的路径。

window.onpopstate,该事件可以监听,点击浏览器的前进按钮/后退按钮

调用history.pushState()或history.replaceState()不会触发popstate事件。该popstate事件仅通过执行浏览器操作触发,如单击“后退”按钮(或JavaScript中调用history.back()),在同一文档的两个历史记录项之间进行导航。

window.addEventListener('popstate', function (e) {});

history.pushState()案例:

来看一下我们要实现的tab切换的最终效果:
当点击水果、蔬菜、零食、饮料菜单时,下方会出现对应的内容

布局代码:

<ul id="menu"><li>水果</li><li>蔬菜</li><li>零食</li><li>饮料</li>
</ul>
<ul id="list1"><li>猕猴桃</li><li>苹果</li><li>梨</li>
</ul>
<ul id="list2"><li>白菜</li><li>土豆</li><li>地瓜</li>
</ul>
<ul id="list3"><li>辣条</li><li>牛肉干</li><li>薯片</li>
</ul>
<ul id="list4"><li>可乐</li><li>雪碧</li><li>果汁</li>
</ul>

样式代码:

#menu {list-style: none;margin: 0;padding: 0;position: relative;height: 200px;
}#menu>li {float: left;margin-left: 20px;padding: 10px 30px;border: 1px solid #000000;
}ul:not(#menu) {position: absolute;display: none;
}

js代码:

var menu = document.getElementById("menu");
//将获取到的htmlCollection列表转成数组
var lis = Array.from(menu.getElementsByTagName("li"));
var uls = Array.from(document.getElementsByTagName("ul")).slice(1);
//监听浏览器的前进、回退按钮
window.onpopstate = function () {changeList();
}
//给上面每个li添加点击事件
for (var i = 0; i < lis.length; i++) {lis[i].onclick = clickHandler
}function clickHandler() {var index = lis.indexOf(this);//将id数据传到新的页面,同时给当前的链接添加锚点标记history.pushState({ id: "list" + (index + 1) }, "", "#list" + (index + 1));changeList();
}function changeList() {for (var i = 0; i < uls.length; i++) {//如果ul列表的id等于history中传过来的数据,则让对应的ul显示,否则让它隐藏if (uls[i].id === history.state.id) {uls[i].style.display = "block";} else {uls[i].style.display = "none";}}
}

这个案例中,给当前浏览器的路径添加锚点,只是为了更清楚地看到页面路径的改变,如果不修改当前的页面路径,也不会影响tab功能的实现。

history`pushState和window`onpopstate实现tab切换效果相关推荐

  1. Vue.js实现tab切换效果

    tab切换第一步先要把HTML写好,这个第一步很关键,主要分为两块结构 <div id="app"><ul class="tab-tilte" ...

  2. css实现tab切换效果

    <div class="match-instruction"><div id="tab2" class="mi-cont" ...

  3. navtab触底 小程序_微信小程序TAB切换效果

    微信小程序tab切换效果 话不多说,先上效果图 主要是让在一个WXML上面显示2个页面,用来分页展示东西. 直接上代码了: 首先是wxml {{item}} A页 B页 然后是wxcss样式代码 .t ...

  4. Axure的动态面板制作tab切换效果

    最近进行机房合作画原型图的时候用到了Axure画图软件,画出来的图感觉棒棒哒!在画结账窗体的时候确实遇到了一些问题,因为有动态效果图,点击不同的Tab时要有不同的界面显示,所以学习了一下! 结合注册窗 ...

  5. js第三章简答题5(制作如图所示的Tab切换效果)

    ps:代码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...

  6. vue使用动态组件实现TAB切换效果

    目录 一.方法1:使用Vant组件库的tab组件 二. 方法2:手动创建tab切换效果 2.在components文件夹下创建切换的.vue页面.引入使用 3.布局:上面放tab点击的标签,下面放组件 ...

  7. html 天猫上拉切换,jquery实现的仿天猫侧导航tab切换效果

    本文实例讲述了jquery实现的仿天猫侧导航tab切换效果.分享给大家供大家参考.具体如下: 这里演示jquery实现仿天猫侧导航tab切换效果,引入外部JS,若初次运行有错误请刷新一页面即可.本菜单 ...

  8. 操纵浏览器历史记录 : popstate() 、 history.pushState() 、 window.history.pushState()

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 一.历史记录前进与后退 1.后退: window.history.back() -- 相当于用户在浏 ...

  9. window.history.pushState()和window.history.replaceState()

    今天在项目中遇到 要实现修改地址栏但是页面不可以刷新的需求 查阅资料发现可以用window.history.pushState(state, title, url)和window.history.re ...

最新文章

  1. java conf_JAVA 解析、编辑nginx.conf
  2. python闯关_Day012
  3. JavaWeb入门之简单分页查询功能实现
  4. 局域网制作ftp服务器,如何架设内网ftp服务器 搭建ftp yum源
  5. SQL Server 2014新功能 -- 内存中OLTP(In-Memory OLTP)
  6. Java字符串格式化记录
  7. 搜索指定期刊下的领域相关文章
  8. 局域网传文件_超好用的文件传输工具!
  9. CRM客户关系管理系统HR人事OA系统APP源码
  10. Exception:must implement OnFragmentInteractionListener
  11. 中兴盒子第三方软件通用教程安装教程
  12. 稀土铕配合物掺杂聚苯乙烯荧光微球/含铕配合物聚苯乙烯荧光微球/稀土磁性荧光微球制备
  13. CRLF、CR、LF详解
  14. CheckException和UnCheckException的区别
  15. mac升级编译器gcc方法
  16. VPLS原理+两个实验
  17. ios系统越狱才可以享受的100项操作
  18. 苹果发布蓝牙耳机新固件,耳机Find My功能越发普及
  19. Q390GJE低合金高强度钢简介
  20. 展示 用户画像_案例分析:如何建立一个产品的用户画像?

热门文章

  1. Cadence 17.2 软件使用(1)— 软件安装
  2. 【MySQL】mysql区分大小写问题
  3. 头文件和源文件不在同一个目录时头文件路径
  4. java setscale_java BigDecimal.setScale()的一些问题
  5. 学习数码相框1.1.0.0数码相框之系统框架
  6. 计算机计有符号数计算,有符号数处理
  7. JS中onfocus()事件,onblur()事件,onload()事件
  8. 【数学转编程】求出最大公约数的实现即思路分析====>最大公约数
  9. CFF刷题-202012-1期末预测之安全指数
  10. jiavascript 精华收集