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

