如何让Bootstrap导航栏的两个按钮在所有屏幕尺寸下保持间距?
解决导航栏按钮在所有屏幕尺寸下的间距问题
要让登录和注册按钮在所有屏幕尺寸下都保持合适间距,你需要针对不同屏幕的布局特点调整间距类:
- 移除按钮上无效的
mr-1(Bootstrap 5 已将mr-*替换为me-*,且我们将通过列表项控制间距) - 为每个
nav-item添加mb-2,确保小屏折叠状态下按钮有垂直间距 - 为第一个
nav-item添加me-lg-2,在宽屏(lg 及以上)时为按钮添加水平间距
修改后的完整代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> </head> <body> <header> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container"> <a href="home" class="navbar-brand"> <img class="img-responsive" src="/image/logo.png" alt="Logo" /> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item mb-2 me-lg-2"> <button type="button" class="btn btn-outline-primary btn-sm"> Register </button> </li> <li class="nav-item mb-2"> <button type="button" class="btn btn-primary btn-sm"> Log in </button> </li> </ul> <form class="d-flex"> <input class="form-control me-2" type="search" placeholder="Search" aria-label="Search" /> </form> </div> </div> </nav> </header> </body> </html>
原理说明
- 宽屏状态:
navbar-expand-lg使得导航栏在 lg 及以上屏幕水平排列,me-lg-2会在第一个按钮的右侧添加间距,实现水平分隔。 - 小屏状态:导航栏折叠后列表项垂直堆叠,
mb-2为每个按钮添加底部外边距,保证垂直方向的间距。
另外注意:按钮元素本身不支持 href 属性,如果需要跳转功能,建议将按钮包裹在 <a> 标签内,或者使用 JavaScript 处理点击事件。
内容的提问来源于stack exchange,提问作者kevin
相关产品推荐
相关产品推荐

