html - 无论字体大小如何,绝对居中绝对定位的元素

标签 html css

我想将我的导航项 (li) 垂直居中,恰好一半文本位于白色部分,另一半文本位于灰白色部分。

我试过使用“top: -0.83rem;”但我不确定它是否完全居中,因为我目测了它。

*,
*:before,
*:after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  border: none;
}

.section-border {
  border: 30px solid #ffffff;
  background-color: #f8f7f3;
}

.section-wrap {
  min-height: 600px;
}

.header {
  position: relative;
  margin-left: 1rem;
  margin-right: 1rem;
}

.menu {
  position: absolute;
  top: -0.83rem;
  left: 0;
  right: 0;
  margin-left: auto;
  margin-right: auto;
  width: 100%;
  max-width: 920px;
  line-height: 1.5em;
}

li {
  display: inline-block;
  font-size: 11px;
}

@media only screen and (min-width: 601px) {
  .home-link {
    flex-grow: 0;
  }
  li {
    text-align: right;
    flex-grow: 1;
    font-size: 16px;
  }
  .menu {
    display: flex;
    flex: 1;
  }
}
<div class="section-border">
  <div class="section-wrap">
    <header class="header">
      <nav role="navigation">
        <ul class="menu">
          <li class="home-link">
            <a href="#"><img src="https://www.nicolefenton.com/_/images/dec/circle-menu.svg" height="12" width="12" alt=""></a>
          </li>
          <li><a href="#">About</a></li>
          <li><a href="#">Writing</a></li>
          <li><a href="#">Speaking</a></li>
          <li><a href="#">Projects</a></li>
        </ul>
      </nav>
    </header>
  </div>
</div>

无论字体大小如何,我都希望所有五个导航项都完全垂直居中。元素的 1/2 应该在白色部分,1/2 应该在灰白色部分。

最佳答案

尝试一下,我已经更改了 .menu 和 li 样式:

*, *:before, *:after { 
        box-sizing: border-box; margin: 0; padding: 0;
        border: none; 
      }

      .section-border {
        border: 30px solid #ffffff;
        background-color: #f8f7f3;
      }

      .section-wrap {
        min-height: 600px;
      }

      .header {
        position: relative;
        margin-left: 1rem;
        margin-right: 1rem; 
      }

      .menu {
        transform: translateY(-50%);
        margin: auto;
        width: 100%;
        max-width: 920px;
        line-height: 1.5em;
      }

      li {
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 11px;
      }


      @media only screen and (min-width: 601px) {
        .home-link {
          flex-grow: 0;
        }

        li {
          text-align: right;
          flex-grow: 1;
          font-size: 16px;
        }

        .menu {
          display: flex;
          flex: 1;
        }
      }
<div class="section-border">
    <div class="section-wrap">
      <header class="header">
        <nav role="navigation">
          <ul class="menu">
            <li class="home-link"><a href="#"><img src="https://www.nicolefenton.com/_/images/dec/circle-menu.svg" height="12" width="12" alt=""></a></li>
            <li><a href="#">test<br>test</a></li>
            <li><a href="#">Writing</a></li>
            <li><a href="#">Speaking</a></li>
            <li><a href="#">Projects</a></li>
          </ul>
        </nav>
      </header>
    </div>
  </div>

关于html - 无论字体大小如何,绝对居中绝对定位的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56745137/

相关文章:

html - 仅在 Firefox 中过渡期间轮廓变为白色

html - 如何为 CSS 选择 div 内的多个元素

javascript - 在窗口可调表上寻找固定标题

javascript - 如何在 swiper.js 中更改 swiper 幻灯片轮播?

html - Docusign 远程电子邮件按钮边框

HTML 输入字段边距

javascript - 是否可以获取多个 <span> 元素的宽度?

html - 图片悬停的奇怪问题

javascript - 在 AngularJS 上读取 JSON

css - 鼠标在导航滚动页面上滚动