【问题标题】:Clicking on links in a fixed menu, covering the whole screen does not work单击固定菜单中的链接,覆盖整个屏幕不起作用
【发布时间】: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


【解决方案1】:

Charles Lavalard 在 cmets 中写道:

"您可以使用数据属性来触发可见性,而不是使用 :focus 伪元素"

对于这个项目,这实际上是一个顺利的解决方案。

代码:

<div @click="mobileView = true"></div>

<div v-if="mobileView>
...
</div>

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    相关资源
    最近更新 更多