Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to vertically align 2 classes inside div

Tags:

css

I have a wrapper including some info div's inside. All things are well, But i can't make it vertically justified.

How to justify vertically aligned and positioned in the middle both .title & .text classes?

body {
    margin-left: 0px;
    margin-top: 0px; 
    margin-right: 0px;
    margin-bottom: 0px;
}
#wrapper {
    position: absolute;
    width:96.4%;
    height:80%;
    border:1px solid #1f1e1e;
    padding:10px;
}
.info{
    position: relative;
    width:100%;
    height:32%;
    background-color:#1b1f1e;
    border-radius:6px;
    color:#fff;
    font-size:18px;
    margin-bottom:6px;
 }
.title{
    background-color:#dc6210;
    text-align:center;
    height:50%;
    line-height:50%;
    border-top-left-radius:6px;
    border-top-right-radius:6px;
 }
.text{
    text-align:center;
    height:50%;
    line-height: 50%;
 }
<div id="wrapper">
   <div class="info">
     <div class="title">Title</div>
     <div class="text"> "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..." </div>     
  </div>
  <div class="info">
     <div class="title">Title</div>
     <div class="text"> "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..." </div>  
  </div>
  <div class="info">
     <div class="title">Title</div>
     <div class="text"> "Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..." </div>
  </div>
</div>
like image 391
NickD Avatar asked Jan 05 '23 14:01

NickD


1 Answers

Use :before to help vertical alignment, and remove the line-height: 50%;.

.info > div:before{
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  width: 1px;
}

body {margin-left: 0px;margin-top: 0px; margin-right: 0px; margin-bottom: 0px;}
#wrapper {width:96.4%;height:80%; border:1px solid #1f1e1e; padding:10px;}
.info{width:100%;height:32%;background-color:#1b1f1e; border-radius:6px;color:#fff;font-size:18px;margin-bottom:6px;}
.title{background-color:#dc6210;text-align:center;height:50%;border-top-left-radius:6px;border-top-right-radius:6px;}
.text{text-align:center;height:50%;}

#wrapper{
  min-height: 400px;
}
html, body{
  height: 100%;
}
p{
  margin: 0;
  display: inline-block;
  vertical-align: middle;
  width: 98%;
}
.info > div:before{
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  width: 1px;
}
<div id="wrapper">
   <div class="info">
 <div class="title">Title</div>
 <div class="text">
 <p>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."</p>
 </div>     
  </div>
  <div class="info">
 <div class="title">Title</div>
 <div class="text">
 <p>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."</p>
 </div>  
  </div>
  <div class="info">
 <div class="title">Title</div>
 <div class="text">
 <p>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."</p>
 </div>
  </div>
</div>

https://jsfiddle.net/afelixj/3rj01sp2/1/

like image 50
Felix A J Avatar answered Jan 21 '23 15:01

Felix A J