当前位置: 首页 > 面试题库 >

垂直对齐div(无表格)

秋飞鸾
2023-03-14
问题内容

我可以水平对齐div,所有内容看起来都不错。寻找垂直对齐不包含任何表格的div。我尝试在#container内将边距位置设置为某些负值,但是这种方法可行。我知道CSS还不支持吗?

这是我的标记:

body

{

    background: #777; /* gray */

    text-align: center;

}



#container

{

    margin: 0 auto;

    width: 968px;

    text-align: left;

}



#toptab

{

    background: #f77; /* red */

    height: 14px;

    width: 968px;

}



#middletab

{

    background: #7f7; /* green */

    width: 968px;

}



#data

{

    width: 948px; /* 948 for the box plus we need 20 more px to handle the padding */

    padding-left: 10px;

    padding-right 10px;

}



#bottomtab

{

    background: #77f; /* blue */

    height: 14px;

    width: 968px;

}


<div id="container">

    <div id="toptab"></div>

    <div id="middletab">

        <div id="data">

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

            The quick brown fox jumped over the big red bear.

        </div>

    </div>

    <div id="bottomtab"></div>

</div>

运行上面的代码段,然后单击“整页”以查看其当前外观。基本上,它在水平方向上看起来不错,但是现在我需要它在页面中也垂直居中。

我要垂直对齐的元素是#container div。该效果将迫使整个div和所有子div不仅水平对齐而且垂直对齐。我知道这是可能的,而且我知道Andy
Budd发布了这样的解决方案,但它似乎对我不起作用。


问题答案:

除非您能够显式设置容器的高度(看起来不是这样), 否则没有跨浏览器解决方案 可以将DIV容器垂直居中。

使用表是完全可行的,但是您已经注意到不能使用它。

如果可以选择使用javascript,我们可以轻松为您解决。jQuery插件已经存在,用于垂直对齐容器。

(function ($) {
    // VERTICALLY ALIGN FUNCTION
    $.fn.vAlign = function() {
        return this.each(function(i){
            var ah = $(this).height();
            var ph = $(this).parent().height();
            var mh = (ph - ah) / 2;
            $(this).css('margin-top', mh);
        });
    };
})(jQuery);

您将像这样垂直对齐DIV块:

$('#example').vAlign();


 类似资料:
  • 问题内容: 我有一个div(#wrapper),其中包含2个并排站立的div。 我希望将右div垂直对齐。我在主包装器上尝试了vertical-align:middle,但是它不起作用。它让我发疯! 希望有人能帮忙。 HTML: CSS: 问题答案: 您没有浮点元素的运气。他们不服从垂直对齐, 您需要的是: 请小心,因为它将元素之间的空白解释为真实的空白。它不会像对待它那样忽略它。 我建议这样做:

  • 问题内容: 所以我知道如果使用,我们可以将div水平居中。应该按照我认为的方式工作?垂直居中对齐吗? 为什么也不起作用? 问题答案: 您不能使用: 因为它是不是适用于块级元素 并且因为它们的使用值将计算为零 因为基于百分比的边距值是相对于包含块的宽度计算的 实际上,文档流和元素高度计算算法的性质使得不可能使用边距将元素垂直放置在其父元素内部居中。每当垂直边距的值更改时,都会触发父元素高度的重新计算

  • 问题内容: 下面的代码(也可以在JSFiddle上作为演示使用没有将文本放在中间,正如我理想中的那样。即使使用属性,我也找不到任何方法可以使文本垂直居中。我怎样才能做到这一点? 问题答案: 创建一个用于文本内容的容器,也许是。 JSFiddle

  • 问题内容: 我在div中垂直对齐图像时遇到问题 据我所知,我需要“显示:块;” 定位图像在中心,这是可行的。同样在教程中,我找到了很多答案,但它们并不是“有用的”,因为我的所有图像都不在同一高度! 问题答案: 如果容器中的高度固定,则可以将line-height设置为与高度相同,并且它将垂直居中。然后只需添加text-align使其水平居中即可。 编辑 您的代码应如下所示: 更新 现在是2016年

  • 垂直对齐 1. grid-template-areas 属性值保持换行,并使用空格保持每列垂直对齐。 例如: .foo { grid-template-areas: "header header" "nav main" "footer ...."; } 2. grid、grid-template

  • 问题内容: 我在浮动div中有一个img,但我不知道如何垂直居中。 垂直对齐:当然中间不起作用。 问题答案: 要在父元素中垂直对齐文本,并谨记的是一个内联元素等行为 类似 文本,你可以简单地设置到父元素: 。