更新JS唯一版本:http://jsfiddle.net/0uk0g0qq/4/(作品无处不在) :target
实现在IE马车。所以以前的一个不工作。哈希值的变化只会影响CSS当用户直接就网页上的东西,点击按钮,改变散,不幸的后退按钮不被认为是页
的所有你需要的JavaScript的部分是这样的:
var menu = document.getElementById('menu');
window.addEventListener('hashchange', function(e) {
if (location.hash != "#menu") {
menu.style.display = "none";
} else if (location.hash == "#menu") {
menu.style.display = "block";
}
});
Css Only版本:::
你只能用css来做。现在您了解了:target
选择器。
它可以让您将样式应用于URL散列片段,并且是页面上元素的ID。
演示:http://jsfiddle.net/0uk0g0qq/1
所以我默认隐藏菜单,但如果它匹配i显示了菜单。由于URL中的hastags会影响浏览器历史记录,因此它会完成您所要求的操作。
这是非常棒的第一次,我了解到它。
#menu:target {
display: block;
}
整个代码:
body {
background-color: cornsilk;
}
.cont {
width: 500px;
margin: auto;
}
#menu {
display: none;
position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
height: 100%;
background-color: rgba(0,0,0,.3);
margin: auto;
}
#menu > ul {
width: 200px;
list-style-type: none;
background-color: #fff;
margin: auto;
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
}
#menu > ul li {
padding: 20px 10px;
}
#menu:target {
display: block;
}
打开菜单时,你可以改变页面的散列/片段。这是浏览器的历史事件,无需编写页面。你可以使用'onhashchange'来检测BACK,它不会改变页面本身。 – Rudie
谢谢你真的很有帮助。 –
或者您可以在打开菜单时使用history.pushState(...)。 –