html - 在响应式正方形中垂直对齐文本 block

标签 html css responsive-design vertical-alignment

我想知道是否有人可以帮助我解决这个问题。基本上,我试图将位于正方形内的文本 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>&pound;29</del> &pound;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/

相关文章:

javascript - 如何使用 if 语句用 JavaScript 更改 CSS?

css - 有没有办法阻止盒子敲出盒子阴影?

html - 增强响应式图像的性能

html - Iframe 响应式高度和宽度适合内容

html - 用户选择照片时图像随机旋转

javascript - 带标题的响应表

jquery - .val() 无法按预期使用按钮。输入[类型=按钮]

javascript - 在 HTML 和 Javascript 中添加网格线到背景,类似于 VisualStudios 网格

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

html - CSS 选择多个标签