提问者:小点点

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


我的钢笔

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个答案

匿名用户

如果改为使用无序列表,则会容易得多。此外,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以考虑

    的左填充