html - 汉堡菜单下方几行的链接文本未显示为链接,但在更下方显示良好

标签 html css

汉堡包菜单下方区域中的某些链接未显示为已链接,但页面下方的链接显示为已链接。我认为这是由于意外的不透明度设置造成的,但经过试验后我仍然无法确定问题所在。我只使用 HTML 和 CSS,不使用 Javascript。

“lorem ipsum”段落中的“amet”一词在所有情况下都是链接的,悬停时它应该从蓝色变为红色。但是,例如当视口(viewport)宽度为 900px 时,前两个实例不会显示为已链接。在 320 像素处,它只是第一个显示为未链接的,因此看起来覆盖固定高度的东西正在阻止链接正常显示。它是什么以及如何解决这个问题?

HTML

    <body>
    <nav role="navigation">
      <div id="menuToggle">
        <input type="checkbox" />
        <span></span>
        <span></span>
        <span></span>
        <ul id="menu">
          <a href="#"><li>One</li></a>
          <a href="#"><li>Two</li></a>
          <a href="#"><li>Three</li></a>
          <a href="#"><li>Four</li></a>
         </ul>
      </div>
    </nav>
    <h2>Title</h2>
    <p>"Lorem ipsum dolor sit <a href="#">amet</a>, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p>
<p>"Lorem ipsum dolor sit <a href="#">amet</a>, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p>
<p>"Lorem ipsum dolor sit <a href="#">amet</a>, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p>
<p>"Lorem ipsum dolor sit <a href="#">amet</a>, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p>
    </div>
    </body>

CSS

   body
{
  margin: 0;
  padding: 0;
    background: #ffffff;
  color: #000000;
  font-family: Arial, sans-serif;
}
a
{
  text-decoration: none;
  color: #000000;
  transition: color 0.1s ease;
}
a:link {color: blue}
a:hover, a:active {color: red;}
a:visited {color: purple;}
#menuToggle
{
  display: block;
  position: relative;
  top: 10px;
  left: 50px;
  z-index: 1;
  -webkit-user-select: none;
  user-select: none;
}
#menuToggle input
{
  display: block;
  width: 40px;
  height: 32px;
  position: absolute;
  top: -7px;
  left: -5px; 
  cursor: pointer;
  opacity: 0;
  z-index: 2;
  -webkit-touch-callout: none;
}
#menuToggle span
{
  display: block;
  width: 33px;
  height: 4px;
  margin-bottom: 5px;
  position: relative;
  background: #000000;
  border-radius: 3px;
  z-index: 1;
  transform-origin: 4px 0px;
  transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
              background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
              opacity 0.55s ease;
}
#menuToggle span:first-child
{
  transform-origin: 0% 0%; 
}
#menuToggle span:nth-last-child(2)
{
  transform-origin: 0% 100%;
}
#menuToggle span:nth-last-child(3)
{
  transform-origin: 0% 100%; background: #000000;
}
#menuToggle input:checked ~ span
{
  opacity: 1;
  transform: rotate(45deg) translate(-2px, -1px);
}
#menuToggle input:checked ~ span:nth-last-child(3)
{
  opacity: 0;
  transform: rotate(0deg) scale(0.2, 0.2);
}
#menuToggle input:checked ~ span:nth-last-child(2)
{
  opacity: 1; background: #000000;
  transform: rotate(-45deg) translate(0, -1px);
}
#menu
{
  width: 200px;
  margin: 30px 0 -180px -50px;
  padding: 0 px;
  padding-top: -10px;
  background: #cccccc;
  list-style-type: none;
  -webkit-font-smoothing: antialiased;
  transform-origin: 0% 0%;
  transform: translate(-100%, 0); 
  transition: transform 0.2s cubic-bezier(0.77,0.2,0.05,1.0);
}
#menu li
{
  padding: 10px 0;
  font-size: 18px;
}
#menuToggle input:checked ~ ul
{
  transform: scale(1.0, 1.0);
  opacity: 1;
}

最佳答案

主要问题是“nav”标签覆盖了整个内容。

nav {display: inline-block;}

这应该有助于开始。

现在是关于语义的。

按钮应该是您代码的一部分,而不是与列表(“UL”)一起。

<a href="#"><li>One</li></a>

这是无效的。 <li><a href="#">One</a></li>是正确的。 “LI”总是应该是“UL”的第一个 child 。

这是您应该遵守的重要原则的链接:) - Best Principles

因此,您需要重新组织您的 html 代码。

干杯

关于html - 汉堡菜单下方几行的链接文本未显示为链接,但在更下方显示良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129295/

相关文章:

html - TinyMCE 辅助功能 : Label For

php - 在 wordpress 的 CSS 中更改选定页面的最有效方法是什么?

javascript - 轻按一下操作 Google map 标记的 CSS

css - 使用 float DIV创建两列窗体布局,无法清除:right in IE8

html - 垂直对齐 :baseline is affected by rowspan in Chrome

html - 仅在移动设备上显示图像

javascript - 如何创建 Windows 资源管理器大缩略图样式列表?

javascript - 字母环绕一个圆圈

html - 如何将列表项定位到其父级无序列表/div 的右侧?

javascript - 无法计算元素的大小