无法创建与网格布局中的文本对齐的顶部和底部水平边框线

Trouble creating top and bottom horizontal border lines aligning to the text in grid layout

我正在尝试在不中断网格布局的情况下绘制一条水平线。这就是我希望达到的目标:

我已经用网格系统包裹了所有导航元素。当我尝试从父元素创建一条水平线时,这些线被绘制成与图像对齐。

您可以将线条作为伪元素放在导航栏上 - 以百分比形式给出顶部和底部偏移量。但是请注意,当菜单与标题不一致时,这不会给出合理的结果 - 但这是可以理解的(以及它在 SO 片段中不起作用的原因)。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Lab04_New</title>
  <link rel="stylesheet" href="Lab04_new.css">
  <style>
 @media only screen and (max-width: 1280px) {
  .main {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    grid-template-rows: 3fr 4fr 2fr 2fr;
    grid-template-areas:
      "nav nav nav nav";
  }
  
  #navbar {
    grid-area: nav;
  }

  #navbar img, header, ul, li {
    display: inline-block;
    vertical-align: middle;
  }

  #navbar img {
    border-radius: 50%;
    margin-left: 20px;
  }

  h3 {
    font-size: 28px;
  }

  ul {
    float: right;
  }

  li {
    padding: 15px;
  }

}

section#navbar {
  position: relative;
  --offset: 30%;
  }
  
#navbar::before, #navbar::after {
  content: '';
  position: absolute;
  left: 0;
  width: 100vw;
  height: 1px;
  background-color: black;
  z-index: -1;
}

#navbar::before {
  top: var(--offset);
}

#navbar::after {
  top: calc(100% - var(--offset));
}

  </style>
  
</head>

<body>
  <div class = "main">
    <section id = "navbar">
      <img src="gear.jpg" alt="lens" width="90" height="90">
      <header>
        <h3>Art of Photography</h3>
      </header>
      <ul>
        <li><div class="navbar_left">Photography</div></li>
        <li><div class="navbar_left">History</div></li>
        <li><div class="navbar_right">Samples</div></li>
        <li><div class="navbar_right">About</div></li>
      </ul>
    </section>
  </div>
</body>
</html>