【发布时间】:2021-08-25 09:11:01
【问题描述】:
我正在尝试创建一个针对移动设备显示的菜单。目标是单击“菜单”按钮来切换菜单。菜单应覆盖整个屏幕,您应该能够通过其链接和按钮(NuxtLink 标记)在应用程序中导航。
我成功地显示了菜单及其链接,但是当我单击它们时,它们并没有将我带到正确的位置,菜单只是关闭了。
代码如下。
// HTML
<template>
<!-- Small screen view -->
<div class="mobile-view">
<NuxtLink class="navbar-img" tag="img" src="" alt="HästBild" to="/">
</NuxtLink>
<button class="btn-menu">Meny</button>
<!-- This is opened when pressing the menu button -->
<div class="mobile-menu">
<div class="top-section">
<NuxtLink class="navbar-img" tag="img" src="" alt="HästBild" to="/">
</NuxtLink>
<a class="close-icon">
<img src="@/assets/close-icon.png" alt="Closing symbol" />
</a>
</div>
<div class="content">
<div v-for="header in listHeaders" :key="header.name">
<NuxtLink :to="header.page" class="list-item">{{
header.name
}}</NuxtLink>
</div>
<div class="content-buttons">
<NuxtLink to="/createaccount" class="btn text--white"
>Skapa konto</NuxtLink
>
<NuxtLink to="/#" class="btn white text--black">Logga in</NuxtLink>
</div>
</div>
</div>
</div>
</template>
// CSS
<style>
.btn-menu:focus + .mobile-menu {
visibility: visible;
}
.mobile-menu {
margin: 0;
padding: 15px;
position: fixed;
top: 0;
left: 0;
z-index: 99 !important;
height: 100vh;
width: 100vw;
background: #333361;
visibility: hidden;
}
.close-icon:focus-within img + .mobile-menu {
visibility: hidden;
}
.content {
font-size: 1.5em;
font-weight: 600;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
</style>
// JS
<script>
export default {
name: "NavBar",
data: () => {
return {
listHeaders: [
{ name: "page 1", page: "#" },
{ name: "page 2", page: "#" },
{ name: "page 3", page: "#" },
{ name: "page 4", page: "FAQ" },
],
};
},
methods: {},
};
</script>
【问题讨论】:
-
即使点击最后一个?
-
正确,菜单只是关闭而不注册任何点击或导航到按下的链接
-
我还注意到,如果我设置可见性:可见;链接工作得很好,但是当我保持它就像在点击注册之前可见性变为隐藏之前一样......
-
您可以使用数据属性来触发可见性,而不是使用 :focus 伪元素
-
哈哈,我都没想到。但是,是的,这行得通,我将采用该解决方案。谢谢!!
标签: javascript html css vue.js nuxt.js