我对html和css还是个新手.我不知道如何修复与我的粘性导航栏重叠的网格.我使用以下方法创建了栅格:

        <section id="projects">
            <h2>PROJECTS</h2>
            <div class="grid-container">
                <div class="grid-item">
                    <p><b>Project 1</b></p>
                    <img src="image1.png" alt="image1" class="image1>
                    <div class="overlay">
                        <div class="projects-text">
                            Placeholder
                            <br><a class="repo-text" href="">Repo Link</a> 
                        </div>
                    </div>
                </div>
                <div class="grid-item">
                    <p><b>Project 2</b></p>
                    <img src="image2.jpg" alt="image2" class="image2">
                    <div class="overlay">
                        <div class="projects-text">
                            Placeholder
                            <br><a class="repo-text" href="">Repo Link</a>
                        </div>
                    </div>
                </div>
                <div class="grid-item">
                    <p><b>Project 3</b></p>
                    <img src="image3.jpg" alt="image3" class="image3">
                    <div class="overlay">
                        <div class="projects-text">
                            Placeholder
                            <br><a class="repo-text" href="">Repo Link</a>
                        </div>
                    </div>
                </div>
            </div>
        </section>

并使用此css:

.grid-container {
    display: grid;
    grid-template-columns: auto auto auto;
    padding: 10px;
    grid-column-gap: 20px;
    grid-row-gap: 20px;
}

.grid-item {
    background-color: white;
    border: 5px solid lavender;
    border-radius: 15px;
    padding: 20px;
    font-size: 30px;
    text-align: center;
    justify-content: center;
    height: 350px;
    position: relative;
}

.overlay {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    height: 100%;
    width: 100%;
    opacity: 0;
    transition: .5s ease;
    background-color: lavender;
}

.grid-item:hover .overlay{
    opacity: 1;
}

这是我的导航栏:

        <nav>
            <ul>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
                <li><a href=""></a></li>
            </ul>
        </nav>
nav {
    overflow: hidden;
    width: 100%;
}

nav ul {
    list-style-type: none;
    margin: 0;
    padding: 0;
    overflow: hidden;
    top: 0;
    width: 100%;
    position: fixed;
}

nav li {
    font-family: "";
    float: left;
}

nav a {
    display: block;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    position: relative;
}

nav a::after {
    content: "";
    display: block;
    position: absolute;
    left: 0;
    bottom: 0;
    width: 0;
    height: 5px;
    transition: width 0.3s ease;
}

nav a:hover::after {
    width: 100%;
}

在注释掉代码行之后,我意识到问题出在position:relativein.grid-Item上,但是如果我删除它或更改属性,覆盖效果就不再起作用了.我如何解决这个问题,或者有没有更好的方法来实现这个问题?

推荐答案

position: fixed使ul元素脱离正常流,使标题折叠到0高度,并可能将其完全隐藏.

相反,使用FlexBox容器可以将页面的高度拆分为静态页眉和填充剩余空间的正文.

.layout {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: stretch;
}

nav {
  flex: none;
  overflow: hidden;
  border-bottom: 1px solid #0002;
}
nav ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  width: 100%;
}
nav li {
  float: left;
}
nav a {
  display: block;
  padding: 14px 16px;
  text-decoration: none;
}

main {
  flex: 1 1 auto;
  height: 0;
  contain: content;
  overflow-y: auto;
  padding: 10px;
}
<div class="layout">
  <nav>
      <ul>
          <li><a href="">Home</a></li>
          <li><a href="">Something</a></li>
          <li><a href="">Something</a></li>
          <li><a href="">Contact</a></li>
      </ul>
  </nav>
  <main>
    Page content...
    <br><br><br><br><br><br><br><br>
    ... that may require scrolling
  </main>
</div>

Html相关问答推荐

restrict. form—text width to input s width'

CSS复选框并排

在元素之间添加空格

这<;td&>如何溢出<;表>;?

在单独的容器之间堆叠上下文

子元素的单一背景

为什么我得不到有错误的字段?迈克尔·哈特尔教程.7.3.3

一切停止工作后,添加不透明度(在tailwind )

旧文本淡出,但新文本不会淡入,而是突然出现

CSS 伪类 Select 器未按预期工作

如何将多个类名组合到CSS中的一个关键帧

Swift WkMessageHandler 消息不发送

为什么
标签在 Edge 和 Firefox 中的编号会有两种不同的结果?

如何在div中设计伪元素?

不同屏幕尺寸的显示问题

我应该如何使这个带有标签的隐藏复选框可访问

将 div 放在图片旁边而不是下方

如何将 img 元素定位到特定位置?

禁用的 Select 标签没有在 chrome 上的 css 中指定的 colored颜色

尽管设置了 width:100% left:0,但居中对齐的 CSS 动画并不对称