html - 带有 Flexbox 列表项的标签的垂直对齐

标签 html css flexbox vertical-alignment

我在某些列表框中有一些可变长度的文本,这会导致不匹配,因为标签中的文本不是垂直对齐的。

我尝试了各种 flexbox 选项以及标准的垂直对齐方式,但都无济于事。

有什么想法可以让 Flexbox 中的 a 标签内的文本居中吗?我已将 Inspect Element 中的 CSS 元素添加到 Plunker,因此并非所有部分都相关,但您会明白的。 https://plnkr.co/edit/EAwV0OtXg7Z8mSsHQoho?p=preview

.mobile-buttons > ul.side-list {
  display:flex;
  justify-content: space-around;
  align-self:center;
  flex-wrap:wrap;
  text-align: center;
  list-style: none;
  margin-left: 0;
  margin-bottom: 1.938em;
  margin: 0.937em 0 0.937em 0;
}

.mobile-buttons > ul.side-list li {
  display: inline-flex;
  background: none;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.913em;
  line-height: 1.538;
}

.mobile-buttons .blue-bg {
  margin-bottom: 10px;
  max-width: 150px;
  min-height: 17px;
  min-width: 150px;
  font-size: 1em;
  min-height: 17px;
  height: 40px;
  text-decoration: none;
  font-weight: bold;
  display: inline-block;
  min-height: 17px;
  padding: 27px 2px 27px;
  text-align: center;
  color: #fff;
  line-height: 1.15em;
  top: 1px;
  position: relative;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  border-radius: 4px;
}

.btn, a.btn {
  text-decoration: none;
  font-weight: bold;
  display: inline-block;
  min-height: 17px;
  max-width: 180px;
  min-width: 180px;
  padding: 27px 2px 27px;
  text-align: center;
  color: #fff;
  line-height: 1.15em;
  top: 1px;
  position: relative;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  border-radius: 4px;
}

.blue-bg {
  border: #1D5FD5 1px solid;
  text-shadow: #0a39c2 0 1px 0;
  box-shadow: inset 0px 1px 1px 0px #8aa2e2, 0px 1px 2px 0 #696b6b;
  background: linear-gradient(to bottom, #4089e9 0%,#1d5fd5 100%);
}
<section class="mobile-buttons lines-bg clearfix row">
  <ul class="side-list">
    <li><a href="/link1" class="btn blue-bg">The First Menu</a></li>
    <li><a href="/link2" class="btn blue-bg">Long Description on Second Menu</a></li>
    <li><a href="/link3" class="btn blue-bg">Short 3rd Menu</a></li>
    <li><a href="/link4" class="btn blue-bg">Extra description on fourth menu option</a></li>
  </ul>
</section>

最佳答案

您可以在 .mobile-buttons .blue-bg 中使用 display:flex:

.mobile-buttons > ul.side-list {
  display:flex;
  justify-content: space-around;
  align-self:center;
  flex-wrap:wrap;
  text-align: center;
  list-style: none;
  margin-left: 0;
  margin-bottom: 1.938em;
  margin: 0.937em 0 0.937em 0;
}

.mobile-buttons > ul.side-list li {
  display: inline-flex;
  background: none;
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.913em;
  line-height: 1.538;
}

.mobile-buttons .blue-bg {
  margin-bottom: 10px;
  max-width: 150px;
  min-height: 17px;
  min-width: 150px;
  font-size: 1em;
  min-height: 17px;
  height: 40px;
  text-decoration: none;
  font-weight: bold;
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  min-height: 17px;
  padding: 27px 2px 27px;
  text-align: center;
  color: #fff;
  line-height: 1.15em;
  top: 1px;
  position: relative;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  border-radius: 4px;
  justify-content: center;
  align-items: center;
}

.btn, a.btn {
  text-decoration: none;
  font-weight: bold;
  display: inline-block;
  min-height: 17px;
  max-width: 180px;
  min-width: 180px;
  padding: 27px 2px 27px;
  text-align: center;
  color: #fff;
  line-height: 1.15em;
  top: 1px;
  position: relative;
  -moz-border-radius: 4px;
  -webkit-border-radius: 4px;
  border-radius: 4px;
}
.blue-bg {
  border: #1D5FD5 1px solid;
  text-shadow: #0a39c2 0 1px 0;
  box-shadow: inset 0px 1px 1px 0px #8aa2e2, 0px 1px 2px 0 #696b6b;
  background: linear-gradient(to bottom, #4089e9 0%,#1d5fd5 100%);
}
<section class="mobile-buttons lines-bg clearfix row">
    <ul class="side-list">
  	<li><a href="/link1" class="btn blue-bg">The First Menu</a></li>
  	<li><a href="/link2" class="btn blue-bg">Long Description on Second Menu</a></li>
  	<li><a href="/link3" class="btn blue-bg">Short 3rd Menu</a></li>
  	<li><a href="/link4" class="btn blue-bg">Extra description on fourth menu option</a></li>
  </ul>
</section>

关于html - 带有 Flexbox 列表项的标签的垂直对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43203041/

相关文章:

javascript - 如何将歌曲添加到 jPlayer 播放列表的开头?

javascript - 从外部 JS 文件加载时幻灯片显示不正确

jquery - 悬停在背景上时用图像替换光标 1

html - Flexbox 子元素在未到达父元素边缘时展开父元素

css - 如何将 "justify"和 center flex 容器元素?

html - 将鼠标悬停在 Google Chrome 选项卡上不显示标题?

javascript - html 到 pdf 转换客户端 javascript 与 CSS 支持

html - CSS - 颜色不变

ios - Phonegap iOS 版本不显示背景图片

css - 使 flex 元素 90% 宽