You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整CSS导航栏高度 使第二行链接同行排列不受logo高度影响

问题原因
  • 第一行导航设置float: right后未清除浮动,第二行布局受浮动元素干扰,定位起始位置错乱。
  • Logo属于第二行flex容器的普通文档流子项,设置的固定高度会直接撑高flex容器,导致整个第二行的高度完全被Logo尺寸主导,内部链接的对齐基准被拉高,无法实现导航栏高度不受Logo尺寸影响、链接舒展排列的效果。
修复步骤
  1. 给第二行容器添加clear: both,清除第一行浮动的影响,让第二行正常排列在第一行下方。
  2. 给父级nav设置相对定位作为定位参照,将Logo设置为绝对定位脱离普通文档流,这样Logo的高度不会再撑高导航容器。
  3. 给第二行容器添加对应数值的左侧内边距,避开绝对定位的Logo位置,保证搜索框、导航链接和Logo的间距符合设计预期。
  4. 调整第二行flex容器的对齐属性,让搜索框和导航链接垂直居中对齐即可。
修复后完整代码

CSS部分

@font-face {
  font-family: franklin;
  src: url(FranklinGothic.ttf);
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: franklin;
}

nav {
  margin-top: 50px;
  width: 90vw;
  margin-left: auto;
  margin-right: auto;
  background: #1f1f1f;
  padding: 20px 30px;
  position: relative; /* 新增:作为绝对定位Logo的参照容器 */
}

nav a {
  display: inline-block;
  text-decoration: none;
  color: white;
}

nav .row1 {
  float: right;
}

nav .row1 a {
  margin-left: 20px;
  font-size: 14px;
}

nav .row2 {
  display: flex;
  align-items: center; /* 修改:Logo脱流后搜索框和链接垂直居中对齐即可 */
  margin-top: 5px;
  clear: both; /* 新增:清除第一行浮动影响 */
  padding-left: 195px; /* 新增:留出Logo宽度+间距的位置,数值为Logo宽度165px + 原间距30px */
}

nav .row2 img {
  border: 1px solid red;
  height: 51px;
  width: 165px;
  /* 新增:Logo绝对定位脱流,不占用文档流空间 */
  position: absolute;
  left: 30px;
  bottom: 20px;
}

nav .row2 input {
  width: 400px;
  font-size: 16px;
  background: transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' class='bi bi-search' viewBox='0 0 16 16'%3E%3Cpath d='M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z'%3E%3C/path%3E%3C/svg%3E") no-repeat 13px center;
  padding: 9px 4px 9px 40px;
  border-radius: 25px;
  border: 1px solid white;
  margin-left: 30px;
}

nav .row2 input::placeholder {
  color: white;
}

nav .row2 .links {
  margin-left: 30px;
  display: flex;
  align-items: center;
}

nav .row2 .links a {
  text-transform: uppercase;
  font-size: 16px;
  margin-left: 10px;
  border: 1px solid red;
}

HTML部分

<nav>
  <div class="row1">
    <a href="">What's the Tomatometer&reg;?</a>
    <a href="">Critics</a>
    <a href="">SIGN UP</a>
    <a href="">LOG IN</a>
  </div>
  <div class="row2">
    <img src="/logo.png" alt="" />
    <input type="search" id="" name="" placeholder="Search movies, TV, actors, more.." />
    <div class="links">
      <a href="">movies</a>
      <a href="">tv shows</a>
      <a href="">rt podcast</a>
      <a href="">news</a>
      <a href="">showtimes</a>
    </div>
  </div>
</nav>

如果需要调整Logo超出导航栏的高度,只需要修改nav .row2 img的bottom值即可,数值越小Logo越向下偏移、超出导航栏的部分越多,不会影响导航本身的高度。

内容的提问来源于stack exchange,提问作者linhcheee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:24:34