没有固定大小的容器中的垂直和水平居中文本在 Firefox 中表现得很奇怪

Posted

技术标签:

【中文标题】没有固定大小的容器中的垂直和水平居中文本在 Firefox 中表现得很奇怪【英文标题】:Vertical and horizontal centering text in container with no fixed size acting weird in Firefox 【发布时间】:2013-03-24 10:13:59 【问题描述】:

在实现垂直居中时遇到了一些问题。 在 Chrome 和 Safari 中似乎可以正常工作,但在 Firefox 中它的行为很奇怪(我正在 Mac 上调试)。

当浏览器调整大小时,悬停元素的大小不会调整到适合其父级的大小,而当浏览器调整到原始宽度时,悬停元素最终会变得太小。

this video 这里是 demo。 (Link 代码查看)

关于如何解决此问题的任何想法?

【问题讨论】:

【参考方案1】:

最后,我通过这些更改解决了这个问题。 希望它将来对某人有用(答案底部的完整解决方案链接)。

原始标记

<article class="work-preview">
    <img src="http://lorempixel.com/output/nightlife-q-c-600-414-6.jpg">
    <div class="covering background"></div>
    <div class="covering foreground">
            <h2>A Text</h2>
    </div>
</article> 

新标记

<article class="work-preview">
        <img src="http://lorempixel.com/output/nightlife-q-c-600-414-6.jpg">
        <div class="coveringcontainer">
            <div class="covering foreground">
                <h2>A Text</h2>
            </div>
        </div>
</article> 

原始 CSS

.covering 
    position: absolute;
    top: 0; left: 0;
    opacity: 0;
    filter:alpha(opacity=0);


body .work-preview:hover .covering 
    opacity: 1;
    filter:alpha(opacity=100);
    cursor: pointer;

新 CSS

.coveringcontainer 
  position: absolute;
  display: none;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: red;


.work-preview:hover .coveringcontainer 
  display: block;
  cursor: pointer;


.covering 
  position: absolute;
  display: table;
  width: 100%;
  height: 100%;

这是完整的solution

【讨论】:

【参考方案2】:

尝试使用inline-block; 代替inline-table

body .work-preview

【讨论】:

【参考方案3】:

Firefox 不考虑vertical-align:middle;,因为它只在表格单元格上考虑。如果您想了解更多信息,我建议您阅读Understanding Vertically Align。

【讨论】:

以上是关于没有固定大小的容器中的垂直和水平居中文本在 Firefox 中表现得很奇怪的主要内容,如果未能解决你的问题,请参考以下文章

CSS使容器相对父元素垂直水平居中定位(父容器及子元素大小不确定)

如果您不知道图像的大小,请在 Div 中垂直和水平居中图像?

如何在textarea中垂直居中文本?

HTML CSS中如何实现DIV中的图片水平垂直居中对齐

大小不固定的图片和多行文字的垂直水平居中

如何在引导程序 4 的容器中垂直和水平居中文本? [复制]