html - 容器高度为 100% 的可变大小 LI 元素中的垂直对齐文本

标签 html css twitter-bootstrap layout

我很难在 <li> 中正确定位文本.

我正在使用 sass 版本的 bootstrap 3,并尝试设计外观类似于 iOS 邮件中“更多”和“垃圾箱”按钮的东西。

这是指向当前结果的链接。请注意带有红色背景的列表项,并且只有一行文本的高度较短,因此按钮文本的位置太低了。

http://jsfiddle.net/kvseelbach/MRa4C/8/

我想要可变高度的行,而不是强制所有列表项适合两行文本。如何改进此设计并解决高度问题?

li 操作项的核心 CSS:

.item-actions li {
    height: auto;
    display: inline-block;
    text-align: center;
    line-height: 91px;
    /* 107px height - 16px font size  */
}
li.mailbox-item {
    max-height: 107px;
}

最佳答案

如果您愿意调整 HTML,这里有一种方法:

HTML:

<div  class="item-actions-wrap">
    <ul class="item-actions">
      <li class="archive">Archive</li>
      <li class="view"><a href="#">View</a></li>
    </ul>
</div>

CSS:

.item-actions-wrap {
    position: absolute;
    top: 0;
    right: 0;
    margin:0;
    padding:0;
    height: 100%;
}
ul.item-actions {
    list-style: none outside none;
    margin:0;
    padding:0;
    height: 100%;
    background: #f5f5f5;
    display: table;
}
.item-actions li {
    height: 100%;
    display: table-cell;
    text-align: center;
    vertical-align: middle;
}

查看演示:http://jsfiddle.net/audetwebdesign/c56zF/

将您的列表项包装在绝对定位的 block 级 div 中。

div 中,将 display: table 应用于 ul,然后将 display: table-cell 应用于这 列出元素。对于 li,应用 vertical-align: middle 并且你会得到很好的垂直居中。

注意:你确实有另一个问题,因为绝对定位的 block 隐藏了一些 相邻元素的内容。您需要为绝对值留出一些空间 block 。

关于html - 容器高度为 100% 的可变大小 LI 元素中的垂直对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20971457/

相关文章:

css - 背景图像的设置

css - 如何创建适用于 IE11 的 flexbox 模态框?

twitter-bootstrap - 使用 Bootstrap 将列更改为行布局

javascript - 将canvas转换为html5中带有背景图像的图像

html - 是否可以在背景中制作一个带有箭头和渐变的圆圈?

javascript - 禁用 jquery 数据表中的按钮

javascript - 创建登录名并验证电子邮件地址

java - 使用 GWT 的网络 worker

Canvas 背景颜色的 HTML 换行不正确

html - 自举 |使 col 跨越行的全高