css如何实现圣杯布局或双飞翼布局(css,开发技术)

时间:2024-04-30 13:46:16 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

圣杯布局/双飞翼布局

经典的圣杯布局双飞翼布局都是由左中右三列组成,其特点为左右两列宽度固定中间一列宽度自适应三列高度固定且相等。其实也是上述两列布局和三列布局的变体,整体的实现原理与上述N列布局一致,可能就是一些细节需注意。

圣杯布局双飞翼布局在大体相同下也存在一点不同,区别在于双飞翼布局中间列需插入一个子节点。在常规实现方式里也是在这个中间列里做文章,如何使中间列内容不被左右列遮挡

  • 相同

    • 中间列放首位且声明其宽高占满父节点

    • 被挤出的左右列使用floatmargin负值将其拉回与中间列处在同一水平线上

  • 不同

    • 圣杯布局:父节点声明padding为左右列留出空位,将左右列固定在空位上

    • 双飞翼布局:中间列插入子节点并声明margin为左右列让出空位,将左右列固定在空位上

css如何实现圣杯布局或双飞翼布局

圣杯布局float + margin-left/right + padding-left/right

由于浮动节点在位置上不能高于前面或平级的非浮动节点,否则会导致浮动节点下沉。因此在编写HTML结构时,将中间列节点挪到右列节点后面。

<divclass="grail-layout-x"><divclass="left"></div><divclass="right"></div><divclass="center"></div></div>
.grail-layout-x{padding:0100px;width:400px;height:400px;.left{float:left;margin-left:-100px;width:100px;height:100%;background-color:#f66;}.right{float:right;margin-right:-100px;width:100px;height:100%;background-color:#66f;}.center{height:100%;background-color:#3c9;}}

双飞翼布局float + margin-left/right

HTML结构大体同上,只是在中间列里插入一个子节点<div>。根据两者区别,CSS声明会与上述圣杯布局有一点点出入,可观察对比找出不同地方。

<divclass="grail-layout-y"><divclass="left"></div><divclass="right"></div><divclass="center"><div></div></div></div>
.grail-layout-y{width:400px;height:400px;.left{float:left;width:100px;height:100%;background-color:#f66;}.right{float:right;width:100px;height:100%;background-color:#66f;}.center{margin:0100px;height:100%;background-color:#3c9;}}

圣杯布局/双飞翼布局flex

使用flex实现圣杯布局/双飞翼布局可忽略上述分析,左右两列宽度固定,中间列宽度自适应。

<divclass="grail-layout"><divclass="left"></div><divclass="center"></div><divclass="right"></div></div>
.grail-layout{display:flex;width:400px;height:400px;.left{width:100px;background-color:#f66;}.center{flex:1;background-color:#3c9;}.right{width:100px;background-color:#66f;}}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:css如何实现圣杯布局或双飞翼布局的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:php中怎么实现异常处理下一篇:

18 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18