gpt4 book ai didi

html - CSS flex 属性不允许隐藏和堆叠链接。这是否也不允许我的汉堡菜单正常运行?

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:56 26 4
gpt4 key购买 nike

在我的导航栏中,是我的链接。我正在尝试设置一个媒体查询,在单击我的带有 primely CSS flex-box 的汉堡菜单后,链接堆叠并居中。我需要对我的代码进行哪些更改才能实现此目的?

我首先使用 float 、绝对和相对定位。此时我的导航栏几乎完美地工作。但是,我必须将我的链接与它的 href="home"放在类为“options”的 div 之外,以便在我的屏幕尺寸接近我的媒体查询时它仍然可见。之后我的链接定位变得很尴尬所以我转向了 CSS flex-box。

   <html>
<div>
<nav class="navbar">
<label class="menu" for="toggle">&#9776</label>
<input type="checkbox" id="toggle"/>
<div class="main"><li class="home"><a href="home">TechReality</a></li></div>
<div class="options">
<li class="news"><a href="news"></a></li>
<li class="products"><a href="productstats">Categories</a></li>
<li class="trends"><a href="trending">Trending</a></li>
<li class="forum"><a href="reading">Customer Forum</a></li>
<li class="about"><a href="aboutus"></a>About Us</li>
</div>
</div>
</nav>

@media only screen and (max-width: 1135px) {
.navbar .options .home{
visibility: visible;
}

.menu {
display: block;
cursor: pointer;
}

.navbar.options{
text-align: center;
visibility: hidden;
flex-basis: 100%;
flex-wrap: wrap;
}

.news, .products, .trends, .forum, .about {
border-top: 1px solid rgba(255,255,255,0.3);
border-bottom: 1px solid rgba(0,0,0,0.1);
margin: 0;
}

ul:last-of-type a {
border-bottom: none;
}

#toggle:checked + .options {
visibility: visible;
}
}

我的完整代码可以在代码笔片段中看到 https://codepen.io/ashu121805/full/XvgRqP .

最佳答案

这里有很多要讨论的内容,但我想指出三个主要问题,这将使您完成 90% 的工作,然后您可以根据需要调整样式。

1。修复无效的 HTML

你有一个无关的收尾div <nav class="navbar"> 内的标签应该删除。你还有li div 内的标签,这是不正确的;一个li应该始终是 ol 的 child 或 ul .修复这些,并删除多余的 html从上面代码段的开头开始标记,我们得到这个:

<div>
<nav class="navbar">
<label class="menu" for="toggle">&#9776</label>
<input type="checkbox" id="toggle"/>
<ul class="main">
<li class="home"><a href="home">TechReality</a></li>
</ul>
<ul class="options">
<li class="news"><a href="news"></a></li>
<li class="products"><a href="productstats">Categories</a></li>
<li class="trends"><a href="trending">Trending</a></li>
<li class="forum"><a href="reading">Customer Forum</a></li>
<li class="about"><a href="aboutus"></a>About Us</li>
</ul>
</nav>
</div>

(另外,请注意:在 CodePen 中,您不需要包含 htmlbody 标签,也不需要包含 head 部分。您也可以删除您拥有的 script 标签,只需在编辑器 View 中使用 JS 面板。)

2。让汉堡菜单发挥作用

这个很容易修复。现在您正在使用此规则切换菜单的可见性:

#toggle:checked + .options {
visibility: visible;
}

问题是,+选择器仅选择元素的紧接下一个 的同级元素。自 .options不在 #toggle 之后, 选择器不起作用。

相反,您可以使用 ~选择器,它将选择匹配选择器的元素之后的所有 sibling :

#toggle:checked ~ .options {
visibility: visible;
}

3。基本 CSS 清理

一旦你做到这一点,你就会有一个菜单,当你点击汉堡包时,它会切换,但它看起来很不稳定。我们需要做几件主要的事情:

  1. 让我们的列表 (ul) 实际上看起来不像列表。
  2. 使链接垂直堆叠。
  3. 将链接放在合理的位置,例如屏幕左侧导航栏的正下方。

#1 可以简单地完成:

ul {
list-style: none;
padding-left: 0;
}

#2 可以通过添加这些额外的样式来完成:

.navbar .options {
flex-wrap: wrap;
}
.news, .products, .trends, .forum, .about {
width: 100%;
}

另请注意,您目前的媒体查询样式中有错字——.navbar .options 中应该有一个空格。你目前没有的地方。

#3 有点复杂,但一个好的开始是将这些样式添加到您的媒体查询中:

/* force .options to wrap below since it has flex-basis: 100% */
.navbar {
flex-wrap: wrap;
}
/* remove the default margin-bottom on lists – or you could do this in your main styles above your media query */
.navbar .options,
.main {
margin-bottom: 0;
}

从那里您可以根据需要进行调整。

关于html - CSS flex 属性不允许隐藏和堆叠链接。这是否也不允许我的汉堡菜单正常运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57300669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com