【问题标题】:Why does position: fixed; not work with justify-content: space-between;?为什么位置:固定;不适用于 justify-content: space-between;?
【发布时间】:2021-07-30 19:42:01
【问题描述】:

我想创建一个基本的导航栏,它始终位于页面顶部,即使在您滚动时也是如此。此外,导航栏的宽度应与其显示的屏幕宽度一样宽。

我目前的尝试是这样的:

CSS:

#header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: fixed;
    background-color:white;
}


#nav-list li {
    list-style: none;
    display: inline-block;
}

#header-img {
    width: 20vw;
}

HTML:

<header id="header">
    <img id="header-img" src="https://cdn.freecodecamp.org/testable-projects-fcc/images/product-landing-page-logo.png" alt="Logo">
    <nav id="navbar">
        <ul id="nav-list">
            <li><a class="nav-link" href="#function">Function</a></li>
            <li><a class="nav-link" href="#terms">Terms</a></li>
            <li><a class="nav-link" href="#privacy">Privacy</a></li>
        </ul>
    </nav>
</header>

我的尝试得出了这样的结果:

但是,如您所见,导航栏并没有填满整个屏幕。三个链接应该推到一边。

我是 HTML/CSS 新手,我目前知道的唯一可能的解决方法是:

width: 100%;

但我很确定我不应该那样做。谢谢你的回答! :)

【问题讨论】:

  • 您是否在标题中添加了宽度? width: 100vw;
  • 我认为将 width:100% 添加到#header 可以很好地使其适合页面的整个宽度,即使在滚动后也能保持原位,请将 top:0 添加到相同的#header ,我在 JSFIDDLE 中发布了您的代码,我提出的所有这些建议都很好。

标签: html css flexbox css-position


【解决方案1】:

如果你想使用 position: fixed with justify-content: space-between 你需要定义 left:0 和 right:0

所以你可以这样写 css 类:

 .header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    justify-content: space-between;
    display: flex;
    align-items: center;
    background-color:white;
    }

这个属性也可以帮助你

z-index: 150;在上层设置导航栏

宽度:90%;定义项目的宽度

边距:自动;让浏览器在项目之间设置合适的空格

【讨论】:

    【解决方案2】:

    我不是 100% 确定我理解您的问题,但要获得全宽标题,我将使用网格并将您的两列 1fr auto 设置为宽视图宽度 95vw; 以避免右侧滚动条;

    这里我有一个典型的粘性页眉示例,一个占据大部分空间的主页,然后是一个位于底部的粘性页脚。 - 所以我可以显示您的标题确实卡在顶部但不会滚动。

    .container {
      min-height: 100vh;
      display: grid;
      grid-template-rows: 1fr auto;
    }
    
    #header {
      position: fixed;
      min-width: 95vw;
      display: grid;
      grid-template-columns: 1fr auto;
      justify-content: space-between;
      align-items: center;
      background-color: white;
    }
    
    #nav-list li {
      list-style: none;
      display: inline-block;
    }
    
    #header-img {
      width: 20vw;
    }
    
    .main{
      background-color: #DDDDFF;
      padding: 1em;
      margin-top: 3rem;
    }
    
    .footer {
      background-color: #FFDDDD;
      padding: 1em;
    }
    <header id="header">
      <img id="header-img" src="https://cdn.freecodecamp.org/testable-projects-fcc/images/product-landing-page-logo.png" alt="Logo">
      <nav id="navbar">
        <ul id="nav-list">
          <li><a class="nav-link" href="#function">Function</a></li>
          <li><a class="nav-link" href="#terms">Terms</a></li>
          <li><a class="nav-link" href="#privacy">Privacy</a></li>
        </ul>
      </nav>
    </header>
    <div class="container">
      <div class="main">
        I am body full
      </div>
      <div class="footer">footer we have
      </div>
    </div>

    【讨论】:

      【解决方案3】:

      添加它会使其成为页面的全宽并使其适合页面。

      #header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        position: fixed;
        background-color: white;
        width: 100%;
        margin: 0 auto;
        top: 0;
        left: 0;
        }
      

      【讨论】:

      • 添加宽度:100vw;顶部:0;左:0;为我解决了。
      猜你喜欢
      • 2016-04-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 2021-12-15
      • 1970-01-01
      相关资源
      最近更新 更多