我想知道是否有人可以帮助我解决这个问题。基本上,我试图将位于正方形内的文本 block 垂直居中。该正方形是响应式的,因此没有固定的宽度和高度。
我的 HTML 看起来像这样:
<div class="related-products">
<div class="row">
<div class="large-15 medium-15 columns">
<h5>Related Products</h5>
<div class="row">
<div class="small-15 medium-4 large-4 columns">
<div class="product">
<a href="/"><img src="http://store.kitchenscookshop.co.uk/media/catalog/product/cache/1/image/500x500/9df78eab33525d08d6e5fb8d27136e95/t/3/t317_mug_red_1pt.jpg"></a>
<dl>
<dt><a href="/">Product Name is Product Name</a></dt>
<dd><del>£29</del> £24</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
我的 CSS 是这样的:
.product {
position: relative;
text-align: center;
display: block;
}
.product dl {
background-color: rgba(161,161,161,0.6);
width: 100%;
height: 100%;
padding: 0 20%;
overflow: auto;
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}
我还设置了一个演示 over here .
任何帮助我指明正确方向的帮助都是值得赞赏的。
提前致谢!
最佳答案
不幸的是,vertical-align
仅适用于内联元素。这让许多 Web 开发人员感到困惑,因为这似乎应该很容易做到。
我基本上使用这个解决方案:http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
将 .product dl
的 CSS 更改为:
.product dl {
background-color: rgba(161,161,161,0.6);
width: 100%;
height: auto; /* Won't work without this */
padding: 0 20%;
overflow: auto;
margin: auto;
position: absolute;
top: 50%;
-webkit-transform:translateY(-50%);
/* You may need to add more vendor prefixes; you can use http://prefixmycss.com */
transform:translateY(-50%);
z-index:2;
}
要修复灰色叠加,我们可以从 .product dl
中删除背景颜色并添加以下代码:
.product:after {
position:absolute;
display:block;
content:'';
background-color: rgba(161,161,161,0.6);
top:0;
left:0;
right:0;
bottom:0;
z-index:1;
}
关于html - 在响应式正方形中垂直对齐文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340248/