我正在创建一个网上商店,我希望每个产品的名称都集中在产品图片框的中间。我正在尝试使用'vertical-align:middle'来实现这一点,但是我的努力没有奏效我已经看了几个教程,但是我似乎无法让它工作。
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 :(得分:2)
css中的vertical-align属性起初可能有点令人困惑,因为许多人(包括我自己)往往对它实际上有什么误解。
您可以通过阅读以下内容全面了解该物业:
http://www.impressivewebs.com/css-vertical-align/
虽然简而言之,我对使垂直对齐工作的建议是在具有需要垂直对齐的内容的元素上使用display: table-cell;
(上面的文章对此进行了解释)。这需要将容器元素设置为display: table;
。
表格单元格是垂直对齐内容的最简单方法,虽然它可能并不总是适合您的布局,或者可能需要重新格式化,所以如果您不熟悉它,我建议您也阅读它
答案 1 :(得分:1)
有两种方法,1。使用line-height
和2.使用表格。这两种方法的逻辑/应用/含义总结如下:http://phrogz.net/css/vertical-align/
如果产品说明不带两行,您可以使用概述的line-height
方法。否则,您需要使用display: table
和display: table-cell