css 导航栏不会占用移动的上的所有宽度

uurv41yg  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(148)

我有一个导航栏,它占用了桌面上的所有宽度,但在移动的上却没有
超文本标记语言:

<nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">Dev Log</a></li>
      <li><a href="#">Credits</a></li>
      
    </ul>
  </nav>

CSS:

* {
  box-sizing: border-box;
}
  body, html {
  margin: 0 auto;
  padding: 0;
}

body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  background-color: #7AE7C7;
  text-align: center;
}

nav{
  background-color: #0b4e2d;
  font-size:18px;
  padding:6px;
  margin: 0;
  width: 100vw;
}

ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  position: relative;
  color: white;
  margin-left: 15px;
  padding: 0;
  font-family: Arial, Helvetica, sans-serif;
}

ul a {
  color: white;
  text-decoration: none;
}

ul a:hover {
  text-decoration: underline;
}

我尝试使用100%宽度和100%大众的导航和ul,但它没有工作。似乎只有当一个元素在它下面时才会发生

e3bfsja2

e3bfsja21#

我没发现什么问题,但我把它清理了一下。

body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
  background-color: #7AE7C7;
}

nav {
  background-color: #0b4e2d;
  font-size: 18px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  color: white;
  padding: 10px;
}

nav a {
  padding: 10px;
  color: white;
  text-decoration: none;
}

nav a:hover {
  text-decoration: underline;
}
<nav>
  <a href="#">Home</a>
  <a href="#">Dev Log</a>
  <a href="#">Credits</a>
</nav>
nzkunb0c

nzkunb0c2#

好的,在你的代码中,你试图让导航中的元素占据整个宽度。首先,最好使用宽度:100%在你的CSS导航。其次,你应该正确地重新构造你的css代码,position属性应该在最上面,因为css也会按照特定的顺序分配样式,所以最好把一些css属性放在另一个之前,以便正确地添加样式,例如

ul {
    position: relative; /*Position comes first*\
    width: 100%; /* Followed by width and height or one of them */
    display: flex;
    justify-content: space-evenly;
    align-items: center;
    list-style: none;
    color: white
      }
}

/* 这只是一个结构良好的css代码的例子 */
现在主要解决这个问题:如果你的nav元素,也就是父元素,有一个100%的宽度,ul也将被限制到其父元素的宽度,所以如果你的nav元素有一个90%的with,你设置ul的宽度为100%,它将占据其父元素的全部90%,而不是页面的100%,因为在正常情况下它被限制到其父元素,我只是先把这件事说清楚。现在,要设置ul中的元素为全宽,因为display:flex;已经被调用了,你只需要分配justify-content:center;在ul的样式中,在flex-wrap之后:wrap; style,这使得元素在任何设备上移动页面的中心,如果宽度已经设置为100%,然后你会使用gap,padding,margin等给它们间距,你也可以使用justify-content:间隔;以自动地在UL中的元素之间给予给予相等的间隔,而不必真正设置间隙或余量。

CSS
nav{
        background-color: #0b4e2d;
        font-size:18px;
        padding:6px;
        margin: 0;
        width: 100%;
      }
      
      ul {
        position: relative;
        display: flex;
        justify-content: center; /* or space-between */
        align-items: center;
        list-style: none;
        gap: 50px;
        color: white;
        /*margin-left: 15px;*/
        padding: 0;
        font-family: Arial, Helvetica, sans-serif;
      }
.../* remaining code remains the same*/

相关问题