加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
30-简单实现hash路由.html 1.51 KB
一键复制 编辑 原始数据 按行查看 历史
wangcai 提交于 2023-04-04 16:49 . xx‘
<html>
<style>
html,
body {
margin: 0;
height: 100%;
}
ul {
list-style: none;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
}
.box {
width: 100%;
height: 100%;
background-color: red;
}
</style>
<body>
<ul>
<li>
<a href="#red">红色</a>
</li>
&nbsp;&nbsp;&nbsp;
<li>
<a href="#green">绿色</a>
</li>
&nbsp;&nbsp;&nbsp;
<li>
<a href="#purple">紫色</a>
</li>
</ul>
<div class="box"></div>
<!-- <script>
let box = document.getElementsByClassName("box")[0];
window.onhashchange = function () {
let color = location.hash.slice(1);
box.style.background = color
}
</script> -->
<script>
// 封装成一个类
let box = document.getElementsByClassName("box")[0];
class HashRouter {
constructor(hashStr, cb) {
this.hashStr = hashStr;
this.cb = cb;
this.watchHash()
window.addEventListener("hashchange", this.watchHash.bind(this))
}
watchHash() {
let hash = location.hash.slice(1)
this.hashStr = hash;
this.cb(this.hashStr)
}
}
new HashRouter("red", (color) => {
box.style.background = color;
});
</script>
</body>
</html>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化