bootstrap 5 个 flex box 容器中的内容无论如何都排到顶部
Content in bootstrap 5 flex box containers lines up to the top no matter what
我正在尝试将 div 中的弹性项目与 bootstrap 垂直对齐 5. 我尝试了多种方法,但都没有成功。我创建了一个完全复制我的问题的 Stack Snippet。我猜想这在 css 中是一件非常简单的事情,我可以修复它,但到目前为止我没有发现任何似乎有帮助的东西。它总是希望在 div.
的上半部分对齐内容
.like-and-comment{
display: flex;
justify-content: space-around;
border-bottom: 1px solid black;
border-top: 1px solid black;
}
.like-and-comment:hover {
cursor: pointer;
}
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
<link href="/static/css/style.css" rel="stylesheet">
<script src="https://js.stripe.com/v3/"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
</head>
<body>
<div>
The div below has a top and bottom black border. I want the content to center veritcally, but I can not figure out how.
</div>
<div class="like-and-comment">
<div class="d-flex align-items-center">
<p id="upvote" class="p-0">
<i id="upvote_icon" class="fas fa-arrow-up" style="color: gray;"><span id="upvote_badge" class="badge bg-secondary"></span></i>
</p>
<p id="downvote">
<i id="downvote_icon" class="fas fa-arrow-down" style="color: gray;"><span id="downvote_badge" class="badge bg-secondary"></span></i>
</p>
</div>
<p id="post_award_modal" data-bs-toggle="modal" data-bs-target="#siteModal">
<i class="fas fa-award"></i>
</p>
<div class="dropdown">
<p class="dropdown-toggle" data-bs-toggle="dropdown"><i class="fas fa-share"></i></p>
<ul class="dropdown-menu">
<p id="post_crosspost_modal" class="dropdown-item" data-bs-toggle="modal" data-bs-target="#siteModal">
<i class="bi bi-signpost-2"> Cross Post</i>
</p>
<p id="copytoclipboard" class="dropdown-item">
<i class="bi bi-clipboard"> Copy Link</i>
</p>
<p id="save_post" class="dropdown-item">
<i id="save_post_icon"></i>
</p>
</ul>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js" integrity="sha512-LGXaggshOkD/at6PFNcp2V2unf9LzFq6LE+sChH7ceMTDP0g2kn6Vxwgg7wkPP7AAtX+lmPqPdxB47A0Nz0cMQ==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj" crossorigin="anonymous"></script>
</body>
这不是 bootstrap 中 flex classes 的问题。这些 classes 对您的代码正常工作。
您已将图标放在 p 标签内,并且 p 获得其默认边距底部,因此图标看起来与顶部对齐。通过 css 或使用 mb-0 class 删除这些父 p 标签的底部边距,然后图标将看起来垂直对齐。
我正在尝试将 div 中的弹性项目与 bootstrap 垂直对齐 5. 我尝试了多种方法,但都没有成功。我创建了一个完全复制我的问题的 Stack Snippet。我猜想这在 css 中是一件非常简单的事情,我可以修复它,但到目前为止我没有发现任何似乎有帮助的东西。它总是希望在 div.
的上半部分对齐内容.like-and-comment{
display: flex;
justify-content: space-around;
border-bottom: 1px solid black;
border-top: 1px solid black;
}
.like-and-comment:hover {
cursor: pointer;
}
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- CSS only -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css">
<link href="/static/css/style.css" rel="stylesheet">
<script src="https://js.stripe.com/v3/"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
</head>
<body>
<div>
The div below has a top and bottom black border. I want the content to center veritcally, but I can not figure out how.
</div>
<div class="like-and-comment">
<div class="d-flex align-items-center">
<p id="upvote" class="p-0">
<i id="upvote_icon" class="fas fa-arrow-up" style="color: gray;"><span id="upvote_badge" class="badge bg-secondary"></span></i>
</p>
<p id="downvote">
<i id="downvote_icon" class="fas fa-arrow-down" style="color: gray;"><span id="downvote_badge" class="badge bg-secondary"></span></i>
</p>
</div>
<p id="post_award_modal" data-bs-toggle="modal" data-bs-target="#siteModal">
<i class="fas fa-award"></i>
</p>
<div class="dropdown">
<p class="dropdown-toggle" data-bs-toggle="dropdown"><i class="fas fa-share"></i></p>
<ul class="dropdown-menu">
<p id="post_crosspost_modal" class="dropdown-item" data-bs-toggle="modal" data-bs-target="#siteModal">
<i class="bi bi-signpost-2"> Cross Post</i>
</p>
<p id="copytoclipboard" class="dropdown-item">
<i class="bi bi-clipboard"> Copy Link</i>
</p>
<p id="save_post" class="dropdown-item">
<i id="save_post_icon"></i>
</p>
</ul>
</div>
</div>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js" integrity="sha512-LGXaggshOkD/at6PFNcp2V2unf9LzFq6LE+sChH7ceMTDP0g2kn6Vxwgg7wkPP7AAtX+lmPqPdxB47A0Nz0cMQ==" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-U1DAWAznBHeqEIlVSCgzq+c9gqGAJn5c/t99JyeKa9xxaYpSvHU5awsuZVVFIhvj" crossorigin="anonymous"></script>
</body>
这不是 bootstrap 中 flex classes 的问题。这些 classes 对您的代码正常工作。 您已将图标放在 p 标签内,并且 p 获得其默认边距底部,因此图标看起来与顶部对齐。通过 css 或使用 mb-0 class 删除这些父 p 标签的底部边距,然后图标将看起来垂直对齐。