【问题标题】:Issues I have with making a navbar in CSS我在 CSS 中制作导航栏时遇到的问题
【发布时间】:2022-02-14 10:50:52
【问题描述】:

我尝试添加一个导航栏,并使用它。

.topnav {
  background-color: rgb(0, 0, 0);
  overflow: hidden;
  width: 1920;
  height: 200px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.topnav a {
  position: relative;
  float: left;
  color: #f2f2f2;
  text-align: center;
  padding: 7px 16px;
  text-decoration: none;
  font-size: 17px;
  transition: .5s;
  border-radius: 30px;
}

.topnav a:hover {
  background-color: #b0fcbd;
  color: black;
  border-radius: 30px;
  padding: 7px 16px;
  opacity: 70%;
}

.topnav a.active {
  background-color: #21ff46;
  color: black;
  border-radius: 30px;
}
<div class="topnav">
  <a class="active" href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
  <a href="#about">About</a>
</div>

然而,导航栏(最黑的部分 - 背景稍微浅一点)从页面开始时的下方和右侧几个像素处开始。此外,链接完全位于中间。我只希望它们在顶部居中。希望有人能帮忙。

【问题讨论】:

  • 您能否编辑您的问题,以便我们使用 HTML 和 CSS 获得有效的 sn-p
  • align-items: start 如果您希望链接位于顶部。需要更多信息来确定保证金存在的原因。可能从父元素填充?
  • 你需要重置你的css css reset
  • 太棒了。感谢您的帮助
  • 作为一名 Web 开发人员,了解并喜欢您选择的 Web 浏览器中的开发人员工具,或者更好的是,所有这些工具。检查元素通常会显示神秘填充和边距的来源。

标签: html css


【解决方案1】:

要解决您的定位问题,只需将margin: 0; 设置为body

要对齐顶部的导航栏项目,您可以在.topnav 上设置align-items: start;

body {
  margin: 0;
}

.topnav {
  background-color: rgb(0, 0, 0);
  overflow: hidden;
  width: 1920;
  height: 200px;
  display: flex;
  align-items: start;
  justify-content: center;
}

.topnav a {
  position: relative;
  float: left;
  color: #f2f2f2;
  text-align: center;
  padding: 7px 16px;
  text-decoration: none;
  font-size: 17px;
  transition: .5s;
  border-radius: 30px;
}

.topnav a:hover {
  background-color: #b0fcbd;
  color: black;
  border-radius: 30px;
  padding: 7px 16px;
  opacity: 70%;
}

.topnav a.active {
  background-color: #21ff46;
  color: black;
  border-radius: 30px;
}
<div class="topnav">
  <a class="active" href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
  <a href="#about">About</a>
</div>

【讨论】:

    【解决方案2】:

    您需要将重置 css 添加到您的页面。很高兴有帮助!

    /* http://meyerweb.com/eric/tools/css/reset/ 
       v2.0 | 20110126
       License: none (public domain)
    */
    
    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td,
    article, aside, canvas, details, embed, 
    figure, figcaption, footer, header, hgroup, 
    menu, nav, output, ruby, section, summary,
    time, mark, audio, video {
        margin: 0;
        padding: 0;
        border: 0;
        font-size: 100%;
        font: inherit;
        vertical-align: baseline;
    }
    /* HTML5 display-role reset for older browsers */
    article, aside, details, figcaption, figure, 
    footer, header, hgroup, menu, nav, section {
        display: block;
    }
    body {
        line-height: 1;
    }
    ol, ul {
        list-style: none;
    }
    blockquote, q {
        quotes: none;
    }
    blockquote:before, blockquote:after,
    q:before, q:after {
        content: '';
        content: none;
    }
    table {
        border-collapse: collapse;
        border-spacing: 0;
    }
    
    #app {
     min-height: 100vh;
     width: 100vw;
     background: #0f1114;
    }
    
    .topnav {
      background-color: rgb(0, 0, 0);
      overflow: hidden;
      width: 1920;
      height: 200px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    
    .topnav a {
      position: relative;
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 7px 16px;
      text-decoration: none;
      font-size: 17px;
      transition: 0.5s;
      border-radius: 30px;
    }
    
    .topnav a:hover {
      background-color: #b0fcbd;
      color: black;
      border-radius: 30px;
      padding: 7px 16px;
      opacity: 70%;
    }
    
    .topnav a.active {
      background-color: #21ff46;
      color: black;
      border-radius: 30px;
    }
    <div id="app">
      <div class="topnav">
        <a class="active" href="#home">Home</a>
        <a href="#news">News</a>
        <a href="#contact">Contact</a>
        <a href="#about">About</a>
      </div>
    </div>

    【讨论】:

      【解决方案3】:

      将宽度和高度设置为 100% 对我有用,而不是手动将它们设置为奇怪的像素状态。 试试这个:

      .topnav {
          background-color: rgb(0, 0, 0);
          overflow: hidden;
          width: 100%;
          height: 100%;
          display: flex;
          align-items: center;
          justify-content: center;
        }
        
        .topnav a {
          position: relative;
          float: left;
          color: #f2f2f2;
          text-align: center;
          padding: 7px 16px;
          text-decoration: none;
          font-size: 17px;
          transition: 0.5s;
          border-radius: 30px;
        }
        
        .topnav a:hover {
          background-color: #b0fcbd;
          color: black;
          border-radius: 30px;
          padding: 7px 16px;
          opacity: 70%;
        }
        
        .topnav a.active {
          background-color: #21ff46;
          color: black;
          border-radius: 30px;
        }
      <html>
      <head>
      <body>
        <div class="topnav">
              <a class="active" href="#home">Home</a>
              <a href="#news">News</a>
              <a href="#contact">Contact</a>
              <a href="#about">About</a>
             </div>
      </body>
      </head>
      </html>

      【讨论】:

        【解决方案4】:

        这就是你要找的吗?

        页面顶部/周围的额外像素是不同浏览器设置的默认 css 的一部分

        您可以在body 上使用margin:0 删除它

        .topnav {
          background-color: rgb(0, 0, 0);
          overflow: hidden;
          height: 200px;
          display: flex;
          align-items: start;
          justify-content: center;
        }
        
        body {
          margin:0;
        }
        
        .topnav a {
          position: relative;
          float: left;
          color: #f2f2f2;
          text-align: center;
          padding: 7px 16px;
          text-decoration: none;
          font-size: 17px;
          transition: .5s;
          border-radius: 30px;
        }
        
        .topnav a:hover {
          background-color: #b0fcbd;
          color: black;
          border-radius: 30px;
          padding: 7px 16px;
          opacity: 70%;
        }
        
        .topnav a.active {
          background-color: #21ff46;
          color: black;
          border-radius: 30px;
        }
        <div class="topnav">
          <a class="active" href="#home">Home</a>
          <a href="#news">News</a>
          <a href="#contact">Contact</a>
          <a href="#about">About</a>
        </div>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-12-16
          • 1970-01-01
          • 2020-08-17
          • 2018-10-05
          • 1970-01-01
          • 2015-09-15
          • 1970-01-01
          相关资源
          最近更新 更多