2015-06-27 266 views
4

好吧,我正在设计我的网站的移动版本,并卡在我的菜单上。后退按钮和菜单导航

现在基本上我已经有一个简单的onClick在页面上运行,所以如果用户决定他们不想查看点击菜单上的什么,那么他们可以点击页面,菜单消失。

但我真正想要的是一种使用浏览器上的返回按钮从菜单返回的方式。我猜这需要某种事件或设置一些东西,但是我们很遗憾。

我是一个新手,所以要温柔,我希望社区可以帮助我一点,从哪里开始。

我的主要问题是如何使用我的HTML或JavaScript中的浏览器后退按钮,任何想法如何进行将不胜感激。

+0

打开菜单时,你可以改变页面的散列/片段。这是浏览器的历史事件,无需编写页面。你可以使用'onhashchange'来检测BACK,它不会改变页面本身。 – Rudie

+0

谢谢你真的很有帮助。 –

+0

或者您可以在打开菜单时使用history.pushState(...)。 –

回答

4

更新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; 
} 
+1

我也正在阅读本文。不知道海报会不会使用这个,但是谢谢你,先生,这有助于很多事情。这是否适用于移动设备? – MrEhawk82

+0

http://caniuse.com/#search=target所以是的 –

+0

它工作得很好,它只是不适用于IE11,这往往是我使用的。我将不得不检查移动版本。但应该没问题,谢谢。 –