当前位置: 首页 > 知识库问答 >
问题:

垂直对齐多个div,每个div具有相同的百分比高度

汤才捷
2023-03-14

我的钢笔

http://codepen.io/helloworld/pen/dqgdk

我想垂直对齐包装器div内部的3个div。3个div中的每一个都应该有33%的高度。我可以使布局工作时,div有一个33px的高度,但我需要它的百分比,因为包装div的高度动态变化。有时是100px的高度,有时是70px等等。

我只想所有3总是正确的使用百分比高度对齐。

将divs与百分比对齐的方法是什么?

HTML

<div id="wrapperDiv" style="height:100px;">
<div id="navigationWheelerContainer">
  <div id="navigationWheeler" >
    <div id="previewTemplate" >1</div>
    <div id="previewTemplate" style="background-color: #0094ff;">2</div>
    <div id="previewTemplate" >3</div>
  </div>
   <div id="toggleButtonRight" >◄</div>
</div>
</div>

CSS

#navigationWheeler {
    height: 100%;
    text-align: center;
    width: 100%;
    vertical-align: middle;
    border: black solid 1px;
    background-color: lightgray;   
    display: inline-block;
}

#navigationWheelerContainer {
    float: right;
    height: 100%;
}

#previewTemplate {
    vertical-align: middle;
    line-height: 33%; /* 33px; works but is not dynamic to the wrapper div */
}
#toggleButtonRight {
    width: 40px;
    border: black solid 1px;
    cursor: pointer;
    text-align: center;
}

共有1个答案

计寒
2023-03-14

如果改为使用无序列表,则会容易得多。此外,IDpreviewtemplate应该是一个类,因为ID必须是唯一的。

HTML

<div id="wrapperDiv" style="height:100px;">
<div id="navigationWheelerContainer">
  <ul id="navigationWheeler" >
    <li class="previewTemplate" >Testing</li>
    <li class="previewTemplate" style="background-color: #0094ff;">2</li>
    <li class="previewTemplate" >3</li>
  </ul>
   <div id="toggleButtonRight" >◄</div>
</div>
</div>

然后在CSS中,可以将CSS中的.PreviewTemplate设置为33%的高度。还要添加列表样式:none;以消除项目符号。然后在#navigationwheeler中设置padding-left:0;以消除间距。

CSS

#navigationWheeler {
    height: 100%;
    text-align: center;
    width: 100%;
    vertical-align: middle;
    border: black solid 1px;
    background-color: lightgray;   
    display: inline-block;
    padding-left: 0;
}

#navigationWheelerContainer {
    float: right;
    height: 100%;
}

.previewTemplate {
    height: 33%;
    list-style: none;
}

#toggleButtonRight {
    width: 40px;
    border: black solid 1px;
    cursor: pointer;
    text-align: center;
}

现在,当#WrapperDiv的高度改变时,类.PreviewTemplate会改变li的高度。

这是一个工作的jsfiddle。此外,您应该避免使用内联CSS。在CSS文件中包含所有样式。使其更易于长期管理。

编辑向#NavigationWheeler的CSS添加填充-左:0

编辑更新JSFiddle以考虑

    的左填充

 类似资料:
  • 我目前的问题是,我正在用一些小文章制作新闻提要。所有的文章都有相同的类,这就是逻辑。每篇文章的右上角都有一个向下的箭头。 我希望如果人们单击箭头(这是一个. svg文件),内容会展开。容器的高度为78px,如果单击按钮,它应该会展开,因此高度应该是自动的。 我的问题是我不知道用什么语言做什么。jQuery或者我读到的是JS。因为如果我正常点击按钮,这个类的所有内容都会扩展,或者得到自动高度的css

  • 我有个问题快把我逼疯了。 我有一个包装器,其中包含一个带有一些文本的div和一个图像。图像和div的大小各不相同。包装器div将调整为较大包装器的大小。 它们都应该垂直对齐,如下所示: 我偶然发现了这个帖子: http://www.jakpsatweb.cz/css/css-vertical-center-solution.html 正如你在小提琴上看到的: http://jsfiddle.net

  • 问题内容: 我可以水平对齐div,所有内容看起来都不错。寻找垂直对齐不包含任何表格的div。我尝试在#container内将边距位置设置为某些负值,但是这种方法可行。我知道CSS还不支持吗? 这是我的标记: 运行上面的代码段,然后单击“整页”以查看其当前外观。基本上,它在水平方向上看起来不错,但是现在我需要它在页面中也垂直居中。 我要垂直对齐的元素是#container div。该效果将迫使整个d

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

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

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