将图像与<li> </li>中的文本垂直对齐

时间:2013-09-17 20:22:06

标签: html css

我正在尝试将文本与图像垂直对齐(反之亦然?)。这是一些代码:

<div class="row">
  <div class="col-md-3">col-md-3
    <ul>
      <li><img src="http://placehold.it/60x60"><p>Text Text Text</p></li>
      <li><img src="http://placehold.it/60x60"><p>Text</p></li>
      <li><img src="http://placehold.it/60x60"><p>Text Text Text Text</p></li>
      <li><img src="http://placehold.it/60x60"><p>Text Text</p></li>
      <li><img src="http://placehold.it/60x60"><p>Text Text Text Text Text</p></li>
      <li><img src="http://placehold.it/60x60"><p>Text</p></li>
      <li><img src="http://placehold.it/60x60"><p>Text Text</p></li>
    </ul>
  {# 3 more columns like this #}
</div>

CSS

ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

div ul li {
    display: table-row;
}    

img {
    float: left;
    margin: 0 0 10px 0;
    padding: 2px;
    vertical-align: middle;
}

另外,可能重要的是所有图像都是相同的固定大小,比如示例中的60x60,我可以将其用作背景。 我该如何对齐?感谢。

更新:正如所指出的那样,我正在寻找文字位于图片右边缘的中间,谢谢。

6 个答案:

答案 0 :(得分:14)

我的解决方案适用于一行文本以及多行。

Working Fiddle 经过测试: IE10,IE9,IE8,Chrome,FF,Safari

HTML:与您发布的内容相同

我假设你的意思是中间对齐。如果不是:使用top | bottom代替middle

<强> CSS

*
{
    padding: 0;
    margin: 0;
}
ul
{
    list-style-type: none;
}

div ul li
{
    margin: 5px;
}    

img
{
    vertical-align: middle; /* | top | bottom */
}
div ul li p
{
    display: inline-block;
    vertical-align: middle; /* | top | bottom */
}

答案 1 :(得分:1)

我不是使用这些表格显示选项的忠实粉丝,对它们有一些糟糕的跨浏览器体验。

对我来说,你可以在这里使用line-height。像这样:

ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}

div ul li {
    line-height: 60px;
}    

img {
    float: left;
    margin: 0 0 10px 0;
    padding: 2px;
}

和小提琴:http://jsfiddle.net/qjSpj/1/

答案 2 :(得分:0)

您可以将<p>样式从默认显示修改为内联:

p {display: inline}

答案 3 :(得分:0)

只需从<p>移除float:left代码和img即可。

http://jsfiddle.net/BA2Lc/

演示

答案 4 :(得分:0)

您可以在vertical-align: top;元素上使用li声明。但是,您需要使用clearfix,因为您正在浮动图像。

答案 5 :(得分:0)

我刚刚添加了vertical-align:middle / top / bottom;对图像和工作。