更新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(...)。 –