2016-05-18 50 views
1

我在一行中有3个组件,我希望它们的按钮在容器底部对齐。但是每个容器都有不同的文字,所以它的高度不固定,我们不想严格高度。仅使用CSS对齐文本容器高度

我怎样才能实现容器只有通过CSS和兼容IE9以及?

.container-of-3 > div{ 
 
     float: left; 
 
     width: 33.33333333333%; 
 

 
     > img{ 
 
     margin-left: calc((100% - 90px)/2); 
 
     } 
 

 
    } 
 

 
    .button-link{ 
 
     background-color: #69be28; 
 
     color: #fff; 
 
     padding-top: 0.25rem; 
 
     padding-bottom: 0.25rem; 
 
     padding-left: 1rem; 
 
     padding-right: 1rem; 
 
     text-decoration: none; 
 
     border-radius: 5px; 
 
    }
<div class="container-of-3"> 
 
     <div> 
 
     <img src="http://placehold.it/90x90" class="" alt=""> 
 

 
     <h5 class="">Hybrid Cloud</h5> 
 

 
     <p class="">Lorem ipsum dolor sit amet, ius fastidii similique argumentum in, porro putent consetetur vix ut. 
 
     Tibique percipitur ex vim, vim id idque soleat tibique, has te erant doctus complectitur. Nusquam oportere 
 
     vituperata id cum, adipisci persecuti an pro. Eu vim facer graecis, id nec dicta integre interpretaris</p> 
 

 
     <div class="text-align__center"> 
 
      <a href="http://www.hotmail.com" class="button-link" target="_blank"> 
 
      <i class="fa fa-chevron-right"></i> 
 
     Read More</a> 
 
     </div> 
 

 
     </div> 
 

 
     <div> 
 

 

 
    <img src="http://placehold.it/90x90" class="" alt=""> 
 

 
    <h5>Hybrid Cloud</h5> 
 

 
    <p>Lorem ipsum dolor sit amet, ius fastidii similique argumentum in, porro putent consetetur vix ut. Tibique 
 
     percipitur ex vim, vim id idque soleat tibique, has te erant doctus complectitur. </p> 
 

 
     <div class="text-align__center"> 
 
      <a href="http://www.hotmail.com" class="button-link" target="_blank"> 
 
      <i class="fa fa-chevron-right"></i> 
 
     Read More</a> 
 
      </div> 
 

 
     </div> 
 

 
     <div> 
 

 
    <img src="http://placehold.it/90x90" class="" alt=""> 
 

 
    <h5>Hybrid Cloud</h5> 
 

 
    <p>Lorem ipsum dolor sit amet</p> 
 

 
    <div class="text-align__center"> 
 
     <a href="http://www.hotmail.com" class="button-link" target="_blank"> 
 
     <i class="fa fa-chevron-right"></i> 
 
     Read More</a> 
 
    </div> 
 

 
     </div> 
 

 
    </div>

http://codepen.io/neginbasiri/pen/mPYzKx

+0

按钮已经在bottom..what是你的问题? –

+0

如果用户使用较小的设备并且包装容器,则文本和按钮之间会有很多额外的间距。这是一个问题吗? – kizeloo

+0

使容器的位置相对,并使按钮绝对'底部:0' – aifrim

回答

3

相同的高度没有必要让这个做)在最外侧的parent 只需设置位置相对的,设置为position: absolute,仅针对您的按钮使用bottom: 0,而不指定leftright

.container-of-3 { 
 
    position: relative; 
 
    padding-bottom: 40px; 
 
    overflow: hidden; 
 
} 
 

 
.container-of-3 > div{ 
 
    float: left; 
 
    width: 33.33333333333%; 
 

 
    > img{ 
 
    margin-left: calc((100% - 90px)/2); 
 
    } 
 

 
} 
 

 
.div-content { 
 
    text-align: center; 
 
} 
 

 
.button-holder { 
 
    width: 33.33333333333%; 
 
    position: absolute; 
 
    text-align: center; 
 
    bottom: 0; 
 
} 
 

 
.button-link{ 
 
    background-color: #69be28; 
 
    display: inline-block; 
 
    vertical-align: top; 
 
    color: #fff; 
 
    padding-top: 0.25rem; 
 
    padding-bottom: 0.25rem; 
 
    padding-left: 1rem; 
 
    padding-right: 1rem; 
 
    text-decoration: none; 
 
    border-radius: 5px; 
 
}
<div class="container-of-3"> 
 
    <div> 
 
    <div class="div-content"> 
 
     <img src="http://placehold.it/90x90" class="" alt=""> 
 

 
     <h5 class="">Hybrid Cloud</h5> 
 

 
     <p class="">Lorem ipsum dolor sit amet, ius fastidii similique argumentum in, porro putent consetetur vix ut. 
 
    Tibique percipitur ex vim, vim id idque soleat tibique, has te erant doctus complectitur. Nusquam oportere 
 
    vituperata id cum, adipisci persecuti an pro. Eu vim facer graecis, id nec dicta integre interpretaris</p> 
 
    </div> 
 

 
    <div class="text-align__center button-holder"> 
 
      <a href="http://www.hotmail.com" class="button-link" target="_blank"> 
 
      <i class="fa fa-chevron-right"></i> 
 
    Read More</a> 
 
    </div> 
 

 
    </div> 
 

 
    <div> 
 
     <div class="div-content"> 
 
      <img src="http://placehold.it/90x90" class="" alt=""> 
 
      <h5>Hybrid Cloud</h5> 
 
      <p>Lorem ipsum dolor sit amet, ius fastidii similique argumentum in, porro putent consetetur vix ut. Tibique 
 
    percipitur ex vim, vim id idque soleat tibique, has te erant doctus complectitur. </p> 
 
     </div> 
 

 
    <div class="text-align__center button-holder"> 
 
     <a href="http://www.hotmail.com" class="button-link" target="_blank"> 
 
     <i class="fa fa-chevron-right"></i> 
 
    Read More</a> 
 
    </div> 
 
    </div> 
 

 
    <div> 
 
     <div class="div-content"> 
 
      <img src="http://placehold.it/90x90" class="" alt=""> 
 
      <h5>Hybrid Cloud</h5> 
 
      <p>Lorem ipsum dolor sit amet</p> 
 
     </div> 
 

 
<div class="text-align__center button-holder"> 
 
    <a href="http://www.hotmail.com" class="button-link" target="_blank"> 
 
    <i class="fa fa-chevron-right"></i> 
 
    Read More</a> 
 
</div> 
 

 
    </div> 
 

 
</div>

+0

感谢穆罕默德,您的解决方案完美运作。我现在唯一的问题是所有的文本和内容应该对齐居中。由于按钮位置是绝对的,我无法左右设置。你知道我怎样才能让按钮水平对齐在每个块的中间? –

+0

@NeginBasiri我已经更新了我的答案。 –

+0

真棒。完美的作品。非常感谢你 –

2

花车不会真正帮助你在这里,因为它们不匹配的高度。您需要将div更改为表格单元格方法。然后定位绝对的按钮,使它们始终对齐相同。由于Firefox 30左右所有浏览器都处理相对于表单元格元素的位置。下面的定位并不准确,所以你会想尝试不同数量的填充和定位,为你工作。

.container-of-3 { 
    display:table; 
    table-layout: fixed; 
    width:100% 

    > div { 
    display: table-cell; 
    position: relative; 
    vertical-align:top; 
    padding-bottom:50px; 

    > img{ 
     margin-left: calc((100% - 90px)/2); 
    } 
    } 
} 

.button-link{ 
    position: absolute; 
    bottom: 10px; 
    left: 0; 
    background-color: #69be28; 
    color: #fff; 
    padding-top: 0.25rem; 
    padding-bottom: 0.25rem; 
    padding-left: 1rem; 
    padding-right: 1rem; 
    text-decoration: none; 
    border-radius: 5px; 
} 
3

您可以使用display:table作为容器,display:table-cell为三列,这样它们的高度都是相同的。然后修复按钮底部,你就大功告成了:)

.container-of-3 { 
    display: table; 
} 
.container-of-3 > div{ 
    width: 33.33333333333%; 
    display:table-cell; 
    height: 100%; 
    padding-bottom: 20px; 
    position: relative; 
} 

检查出这个小提琴:https://jsfiddle.net/br6c5way/

+0

表仍然用于布局?哇。 –

+0

@SteveHartley直到CSS网格被实现,是的。 – TylerH

+0

是的,这个问题要求IE9的支持,它排除了flex等.CSS显示表在新规范之前有很多实用工具,不应该与HTML表混淆。 –