css 如何将导航栏标题置于其他元素之上

wtzytmuj  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(125)

我用html和css创建了这个简单的导航栏,但是当屏幕小于850 px时,我想把“Valhalla”文本移到其他列表元素的顶部。
网址:

<nav>
  <ul>
    <li><a href = "#">
      <h1>
        <span><i class="fa-solid fa-dumbbell"></i></span>
        <span>Valhalla</span>
        
        </a>
      </h1>
      </li>
    <li><a href = "#">The Gym</a></li>
    <li><a href = "#">Workouts</a></li>
    <li><a href = "#">Coaches</a></li>
    <li><a href = "#">Supplements</a></li>
  </ul>
</nav>

CSS:

nav {
  font-family: var(--mono);
  font-size: 1rem;
  padding: 1rem;
  background-color: black;
  }
nav a {
  text-decoration: none;
  color: var(--white);
}
nav a:hover{
  color: var(--green);
}
nav ul{
  list-style-type: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  flex-flow: row-wrap;
  align-items: center;
  gap: 1.5rem;
  
}
nav li:first-child {
  margin-right:auto;
}
.menu-btn {
  display: none;
}

@media (max-width: 850px){
}

我试过使用max-width和flex-basis来移动它:100%,所以它会占用上面的空间,但它只是移动到导航栏左侧的中心,而不是列表的其他元素上方。

@media (max-width: 850px){
  nav{
  max-width: 1200px;
  margin: 0 auto;
  }
  nav li:first-child {
  text-align: center;
  flex-basis: 100%;
}
zzlelutf

zzlelutf1#

如果我理解正确的话,那么您所需要做的就是向元素标记添加一个id,您希望它位于其他元素标记之上:

<nav>
  <ul>
    <li><a href = "#">
      <h1>
        <span><i class="fa-solid fa-dumbbell"></i></span>
        <span id="name">Valhalla</span>
        
        </a>
      </h1>
      </li>
    <li><a href = "#">The Gym</a></li>
    <li><a href = "#">Workouts</a></li>
    <li><a href = "#">Coaches</a></li>
    <li><a href = "#">Supplements</a></li>
  </ul>
</nav>

然后您可以使用'z-index'并在css中将其设置为1:

#name {
    z-index: 1;
}

这应该行得通。

3htmauhk

3htmauhk2#

您可以将flex-wrap添加到nav ul

@media (max-width: 850px){
  nav{
  max-width: 1200px;
  margin: 0 auto;
  }
  nav ul{
    flex-wrap: wrap;
  }
  nav li:first-child {
  text-align: center;
  flex-basis: 100%;
  }
}

或将flex-flow: row-wrap;更改为flex-flow: row wrap;
弯曲流动=〈'弯曲方向'〉||〈'柔性 Package '〉
more info about flex-flow

相关问题