css圣杯布局实现两种方式
css圣杯布局实现,分别是以下两种方式,分别是:
position+margin-left:
flex布局
1.position+margin-left
圣杯布局左中右三列布局,渲染顺序中间列书写在前保证提前渲染,左右两列定宽,中间列自适应剩余宽度
圣杯布局与双飞翼布局的不同之处,圣杯布局的的左中右三列容器没有多余子容器存在,通过控制父元素的 padding 空出左右两列的宽度
圣杯布局的关键点是通过 margin-left 与 left 属性将左右两列放置到准确的位置
圣杯布局的关键点父元素需要设置 padding
圣杯布局的关键点 margin-left 取值为百分比时,是以其父元素的宽度为基准的
<div class="g-container"> <div class="g-middle">middle</div> <div class="g-left">left</div> <div class="g-right">right</div> </div>
*{ margin: 0;padding: 0; } .g-container { position: relative; height: 100vh; padding: 0 200px; min-width: 400px; } .g-container > div { height: 100vh; float: left; text-align: center; color: #fff; line-height: 100vh; font-size: 3vw; } .g-middle { position: relative; width: 100%; background: #cc6630; } .g-left { position: relative; width: 200px; background: #ffcc00; margin-left: -100%; left: -200px; } .g-right { position: relative; width: 200px; background: pink; margin-left: -200px; right: -200px; }
2.flex实现
<div class="g-container"> <div class="g-middle">middle</div> <div class="g-left">left</div> <div class="g-right">right</div> </div>
*{ margin: 0;padding: 0; } .g-container { position: relative; height: 100vh; min-width: 400px; display: flex; flex-direction: row; flex-wrap: nowrap; } .g-container > div { height: 100vh; text-align: center; color: #fff; line-height: 100vh; font-size: 3vw; } .g-middle { order: 2; flex: 1 0 auto; background: #cc6630; } .g-left { order: 1; flex: 0 0 200px; background: #ffcc00; } .g-right { order: 3; flex: 0 0 200px; background: pink; }
效果:
本文作者: Jasmine
本文链接: https://www.jianbaizhan.com/article/708
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!