简体   繁体   English

父div内的子div没有垂直对齐

[英]Child divs inside parent div are not vertically aligning

I'm trying to get the white child divs to align vertically in the centre of the red parent div (while ensuring the red div stays aligned in the centre of the grandparent pink div). 我正在尝试让白孩子div在红色父div的中心垂直对齐(同时确保红色div在祖父母粉红色div的中心保持对齐)。

I've tried displaying the red parent div to be a table cell but this shifted the red div to the left of the grandparent pink div and didn't align the vertically divs anyway. 我尝试将红色父div显示为表格单元格,但这将红色div移到了祖父母粉红色div的左侧,并且始终没有对齐垂直div。 Also tried different types of positioning. 还尝试了不同类型的定位。

Is there an easier way of achieving this without the use of flex boxes? 没有使用弹性盒,是否有更简单的方法来实现这一目标? Thanks for any assistance. 感谢您的协助。

 .sections-stretched { width: 100%; height: auto; background: #f0f; margin: 0 auto 50px auto; overflow: auto; padding: 50px 0; } .stretched-container { max-width: 960px; height: auto; background: #f00; margin: 0 auto; text-align: center; } .home-summary { width: 26%; height: auto; background: #fff; margin-right: 11%; display: inline-block; float: left; } .no-padding-or-margin { margin: 0; padding: 0; } .clear{ clear: both; } 
  <section class="sections-stretched"> <div class="stretched-container"> <div class="home-summary"> <h4>eirh erergerge ergergiuerhgier</h4> <p>ergergerg erg ergerg ergergergegeg erg ergerg ergergergegeg, etc</p> </div> <div class="home-summary"> text here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beurohertext here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beuroher </div> <div class="home-summary no-padding-or-margin"> text here lorem imsup cla bla </div> <div class="clear"></div> </div> </section> 

You may remove float and use vertical-align . 您可以删除float并使用vertical-align ( float override inline-block display) float覆盖inline-block显示)

eventually text-align-last to justify the boxes 最终将text-align-last以证明框是否正确

 .sections-stretched { width: 100%; height: auto; background: #f0f; margin: 0 auto 50px auto; overflow: auto; padding: 50px 0; } .stretched-container { max-width: 960px; height: auto; padding: 0 5%; background: #f00; margin: 0 auto; text-align: center; text-align-last: justify; } .home-summary { display: inline-block; vertical-align: middle; width: 26%; background: #fff; } .no-padding-or-margin { margin: 0; padding: 0; } .clear { clear: both; } 
 <section class="sections-stretched"> <div class="stretched-container"> <div class="home-summary"> <h4>eirh erergerge ergergiuerhgier</h4> <p>ergergerg erg ergerg ergergergegeg erg ergerg ergergergegeg, etc</p> </div> <div class="home-summary"> text here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beurohertext here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beuroher </div> <div class="home-summary no-padding-or-margin"> text here lorem imsup cla bla </div> <div class="clear"></div> </div> </section> 

flex can also make this easier to manage : https://css-tricks.com/snippets/css/a-guide-to-flexbox/ flex还可以使它更易于管理: https : //css-tricks.com/snippets/css/a-guide-to-flexbox/

 .sections-stretched { width: 100%; height: auto; background: #f0f; margin: 0 auto 50px auto; overflow: auto; padding: 50px 0; } .stretched-container { max-width: 960px; height: auto; background: #f00; margin: 0 auto; text-align: center; /* added flex */ display:flex; align-items:center; justify-content:space-around } .home-summary { /* reduced to minimal */ width: 26%; background: #fff; } .no-padding-or-margin { margin: 0; padding: 0; } .clear { display:none; /* or remove from html when using flex */; } 
 <section class="sections-stretched"> <div class="stretched-container"> <div class="home-summary"> <h4>eirh erergerge ergergiuerhgier</h4> <p>ergergerg erg ergerg ergergergegeg erg ergerg ergergergegeg, etc</p> </div> <div class="home-summary"> text here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beurohertext here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beuroher </div> <div class="home-summary no-padding-or-margin"> text here lorem imsup cla bla </div> <div class="clear"></div> </div> </section> 

If it is to center content inside the white boxes, flex can be inbricated : 如果要将内容放在白框内,则可以选择flex:

 .sections-stretched { width: 100%; height: auto; background: #f0f; margin: 0 auto 50px auto; overflow: auto; padding: 50px 0; } .stretched-container { max-width: 960px; height: auto; background: #f00; margin: 0 auto; text-align: center; /* added flex */ display: flex; justify-content: space-around } .home-summary { /* reduced to minimal */ width: 26%; background: #fff; display: flex; justify-content: center; flex-flow: column } .no-padding-or-margin { margin: 0; padding: 0; } .clear { display: none; } 
 <section class="sections-stretched"> <div class="stretched-container"> <div class="home-summary"> <h4>eirh erergerge ergergiuerhgier</h4> <p>ergergerg erg ergerg ergergergegeg erg ergerg ergergergegeg, etc</p> </div> <div class="home-summary"> text here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beurohertext here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beuroher </div> <div class="home-summary no-padding-or-margin"> text here lorem imsup cla bla </div> <div class="clear"></div> </div> </section> 

Remove the float and white-space between the elements so that width: 26%; margin-right: 11% 删除元素之间的float和空白,使width: 26%; margin-right: 11% width: 26%; margin-right: 11% will consume 100% of the parent, and use vertical-align: middle; width: 26%; margin-right: 11%将消耗100%的父对象,并使用vertical-align: middle;

 .sections-stretched { width: 100%; height: auto; background: #f0f; margin: 0 auto 50px auto; overflow: auto; padding: 50px 0; } .stretched-container { max-width: 960px; height: auto; background: #f00; margin: 0 auto; text-align: center; } .home-summary { width: 26%; height: auto; background: #fff; margin-right: 11%; display: inline-block; vertical-align: middle; } .no-padding-or-margin { margin: 0; padding: 0; } .clear{ clear: both; } 
 <section class="sections-stretched"> <div class="stretched-container"> <div class="home-summary"> <h4>eirh erergerge ergergiuerhgier</h4> <p>ergergerg erg ergerg ergergergegeg erg ergerg ergergergegeg, etc</p> </div><div class="home-summary"> text here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beurohertext here lorem imsup cla bla bla bla bla bla bla blal bla blw bowrnbuehrbuehr beuroher </div><div class="home-summary no-padding-or-margin"> text here lorem imsup cla bla </div> <div class="clear"></div> </div> </section> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM