我的钢笔
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;
}
如果改为使用无序列表,则会容易得多。此外,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以考虑
的左填充