2013-10-19 293 views
0

我正在创建一个webstore,我希望每个产品的名称都位于产品图像框中间。我正在尝试使用'vertical-align:middle'来完成此操作,但是我的努力并未奏效我已经看过一些教程,但是我似乎无法使其工作。垂直对齐CSS文本

HTML/ERB

<% @products.each_slice(4) do |row| %> 
<div class="row-fluid"> 
<% row.each do |product| %> 
    <div class="span3"> 
    <div class="storeitem"> 
     <div class="rollover-info"> 
     <p><%= link_to product.name, product %></p> 
     </div> 
     <%= link_to image_tag(product.images.order(:placement).first.image.url(:medium)), product if product.images.present? %> 
    </div> 
    </div> 
<% end %> 
</div> 
<% end %> 

CSS

.storeitem { 
width: 210px; 
height: 210px; 
border: 1px solid #e4e4e4; 
margin-top: 10px; 
margin-bottom: 10px; 
text-align: center; 
padding: 5px; 
z-index: 1 
} 

.storeitem img { 
width: 90%; 
height: 90%; 
z-index: 1; 
} 

.rollover-info { 
background-color:rgba(255,255,255,0.8); 
border-radius: 50%; 
width: 210px; 
height: 210px; 
text-align: center; 
z-index: 10; 
opacity: 1; 
-webkit-transition: all 0.5s ease; 
-moz-transition: all 0.5s ease; 
-o-transition: all 0.5s ease; 
transition: all 0.5s ease; 
display: table; 
} 

.rollover-info p { 
display: inline-block; 
vertical-align: middle; 
text-align: center; 
} 
+0

参见:http://stackoverflow.com/questions/19461521/how-to-center-text-horizo​​ntally-and-vertically/19461564#19461564 –

回答

2

CSS中的vertical-align属性可以是一个有点混乱在第一,很多人(包括我自己)往往有什么误解它实际上是。

您可以通过阅读这个增益属性的全面了解:用于获取垂直对齐的工作

http://www.impressivewebs.com/css-vertical-align/

虽然在短,我的建议,是具有内容的元素上使用display: table-cell;那需要垂直对齐(上面的文章解释了这一点)。这将要求将容器元素设置为display: table;

表格单元格是垂直对齐内容的最简单方法,但它可能并不总是适合您的布局,或者可能需要重新格式化,所以我建议您阅读以下内容,如果您不熟悉它。

+0

感谢您的帮助!这里有一个可接受的答案 –

1

有两种方法,1.使用line-height和2.使用表。两种方法的逻辑/应用/含义总结如下:http://phrogz.net/css/vertical-align/

如果产品描述不包含两行,您可以使用概述的line-height方法。否则,你将需要使用display: tabledisplay: table-cell