<h3>flex</h3> <divclass="simulated_body"> <section class="example" style="display: flex;justify-content: center;align-items: center;" > <divclass="cell"> I am a bucolic migrant worker but I never walk backwards. </div> </section> </div>
position+transform
position+transform 实现在 flex 之前比较常见,该方案无需宽高固定。
<h3>position+transform</h3> <divclass="simulated_body"> <sectionclass="example"style="position: relative;"> <div class="cell" style="position: absolute;top: 50%;left: 50%;transform:translate(-50%, -50%)" > I am a bucolic migrant worker but I never walk backwards. </div> </section> </div>
position+margin
position+margin 细分由两种方式,两种细分方案都需宽高固定, 主要不同点在于 magin 设定 auto 还是负值。
<h3>position+margin:auto</h3> <divclass="simulated_body"> <sectionclass="example"style="position: relative;"> <div class="cell" style="margin: auto;position: absolute;top: 0;left: 0;right: 0;bottom: 0;" > I am a bucolic migrant worker but I never walk backwards. </div> </section> </div> <h3>position+margin:负值</h3> <divclass="simulated_body"> <sectionclass="example"style="position: relative;"> <div class="cell" style="margin: -50px 0 0 -50px;position: absolute;top: 50%;left:50%" > I am a bucolic migrant worker but I never walk backwards. </div> </section> </div>
<h3>table-cell</h3> <divclass="simulated_body"> <section class="example" style="display: table-cell;vertical-align: middle;width: 500px;" > <divclass="cell"style="margin: auto"> I am a bucolic migrant worker but I never walk backwards. </div> </section> </div>
<h3>基础三栏布局</h3> <divclass="simulated_body"> <sectionclass="example"> <divclass="cell"style="float: left; "></div> <divclass="cell"style="float: right; "></div> <divclass="text"style="overflow: hidden;"> I am a bucolic migrant worker but I never walk backwards. </div> </section> </div>
<h3>圣杯布局</h3> <divclass="simulated_body"> <sectionclass="example"style="padding: 0 50px; "> <divclass="text"style="float: left;width: 100%;"> I am a bucolic migrant worker but I never walk backwards. </div> <div class="cell" style="float: left;margin-left: -100%;position: relative;left: -50px;" ></div> <divclass="cell"style="float: left;margin-right: -50px;"></div> </section> </div>
双飞翼布局
双飞翼布局主要运用了 float、margin、等属性来实现,同时为内容 DOM 添加了包裹层, 使用 margin 负值来拖拽元素,正值来预留左右占位空间。
<h3>双飞翼布局</h3> <divclass="simulated_body"> <sectionclass="example"> <divclass="content"style="float: left; width: 100%"> <divclass="text"style="margin: 0 50px;"> I am a bucolic migrant worker but I never walk backwards. </div> </div> <divclass="cell"style="float: left; margin-left: -100%;"></div> <divclass="cell"style="float: left; margin-left: -50px;"></div> </section> </div>