My CMS has a rather rigid setup with 2 columns with headers and content, as below:
.wrapper {
overflow: auto;
border: 1px solid #ccc;
text-align: center;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-align: center;
-webkit-align-items: center;
-webkit-box-align: center;
align-items: center;
}
.left,
.right {
float: left;
width: 45%;
padding: 5px;
}
<div class="wrapper">
<div class="left">
<h3>Title (should be aligned to top)</h3>
<div class="content">
left<br>
left<br>
left<br>
left<br>
</div>
</div>
<div class="right">
<h3>Title (should be aligned to top)</h3>
<div class="content">
right
</div>
</div>
</div>
I want to make the .content
of each column align vertically to the middle but keep the header h3
s vertically aligned to the top.
Normally I would achieve vertical align using flexbox as such:
.wrapper {
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-align: center;
-webkit-align-items: center;
-webkit-box-align: center;
align-items: center;
}
but of course this affects all elements within .wrapper
.
Would anyone know a way I could 'target' the .content
classes and get the same effect (keeping in mind I cannot really alter the HTML)?
check this fiddle
This is a sort of a hack, but it works:
Remove
align-items: center
from thewrapper
andflex:1
to the flex childrenleft
andright
Make the inner
left
andright
container acolumn flexbox
and center theh3
andcontent
usingjustify-content:center
Use
margin-bottom:auto
to push bothh3
to the top and allowcontent
to stay at the middle.See demo below: