图像叠加层中的垂直对齐文本

Vertical aligning text in overlay of image

在使用响应式图像对图像叠加层获得预期效果时遇到一些问题。我想要的是将鼠标悬停在图像上时,色块和文本如图所示显示,但文本位于 div 的垂直中心。我试过 vertical-middle 但它似乎没有用。无法根据需要折叠和展开设置宽度和高度的值。如果有人可以提供帮助,我将不胜感激。谢谢

代码,CSS如下

.overlay-box {
   position: relative;
}
.overlay {
  display: none;
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   bottom: 0;
   background-color: rgba(38,150,198,0.5);
}
.overlay p {
   color: #ffffff;
   text-align: center;
}
.overlay-box:hover .overlay {
     display: block;
}
<div class="row">
  <div class="col-xs-12 col-sm-4 col-md-3" style="margin-bottom: 20px;">

      <div class="overlay-box">
            <a href="#" target="_blank">
              
                   <div class="overlay">
                   
                          <p>1st line<br>2nd line<br><br>
                          3rd line</p>
                   </div>
                <img src="http://placehold.it/2000x2000" class="img-responsive "/></a>


      </div>

  </div>

  </div>

你需要用另一个 div 包裹覆盖层(因为 table 似乎忽略了他们的 heightwidth 当他们 absolute ) 并向其添加 position:absolute。然后为 child div 添加 dislpay:tabledislpay:table-cell; vertical-align:middle

看看这个 fiddle:https://jsfiddle.net/65cvzcev/

img{
max-width: 100%;
height: auto;
}
.overlay-box {
   position: relative;
}
.overlay {
  display: none;
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   bottom: 0;
   background-color: rgba(38,150,198,0.5);
}
.overlay:before {
content: '';
display: inline-block;
width: 1px;
height: 100%;
vertical-align: middle;
border: 1px solid;
}
.overlay p {
   color: #ffffff;
   text-align: center;
display: inline-block;
vertical-align: middle;
width: 90%;
}
.overlay-box:hover .overlay {
 display: block;
}
<div class="row">
  <div class="col-xs-12 col-sm-4 col-md-3" style="margin-bottom: 20px;">

  <div class="overlay-box">
        <a href="#" target="_blank">
          
               <div class="overlay">
               
                      <p>1st line<br>2nd line<br><br>
                      3rd line</p>
               </div>
            <img src="http://placehold.it/2000x2000" class="img-responsive "/></a>


  </div>

  </div>

  </div>